[libvirt] [PATCH] libxl: fix disk detach when <driver> not specified

Jim Fehlig jfehlig at suse.com
Tue Feb 7 15:30:20 UTC 2017


On 02/07/2017 03:26 AM, Michal Privoznik wrote:
> On 02/06/2017 11:08 PM, Jim Fehlig wrote:
>> When a user does not explicitly set a <driver> in the disk config,
>> libvirt defers selection of a default to libxl. This approach works
>> fine when starting a domain with such configuration or attaching a
>> disk to a running domain. But when detaching such a disk, libxl
>> will fail with "unrecognized disk backend type: 0". libxl makes no
>> attempt to recalculate a default backend (driver) on detach and
>> simply fails when uninitialized.
>>
>> This patch updates the libvirt disk config with the backend selected
>> by libxl when starting a domain or attaching a disk to a running
>> domain. Another benefit of this approach is that the live XML is
>> also updated with the backend driver selected by libxl.
>>
>> Signed-off-by: Jim Fehlig <jfehlig at suse.com>
>> ---
>>  src/libxl/libxl_conf.c   | 33 +++++++++++++++++++++++++++++++++
>>  src/libxl/libxl_conf.h   |  4 ++++
>>  src/libxl/libxl_domain.c | 25 +++++++++++++++++++++++++
>>  src/libxl/libxl_driver.c |  2 +-
>>  4 files changed, 63 insertions(+), 1 deletion(-)
>>
>> diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c
>> index b5186f2..6ef7570 100644
>> --- a/src/libxl/libxl_conf.c
>> +++ b/src/libxl/libxl_conf.c
>> @@ -851,6 +851,7 @@ libxlMakeDisk(virDomainDiskDefPtr l_disk, libxl_device_disk *x_disk)
>>           * xl-disk-configuration.txt in the xen documentation and let
>>           * libxl pick a suitable backend.
>>           */
>> +        virDomainDiskSetFormat(l_disk, VIR_STORAGE_FILE_RAW);
>>          x_disk->format = LIBXL_DISK_FORMAT_RAW;
>>          x_disk->backend = LIBXL_DISK_BACKEND_UNKNOWN;
>
> This doesn't feel right. I know what do you want it here for, but this
> function is meant to take 'const' disk definition and translate it to
> libxl definition. Although, I don't have a better suggestion where to
> put it.

How about in the UpdateDisk function introduced in this patch? E.g. update it to 
raw if current format is VIR_STORAGE_FILE_NONE?

Regards,
Jim

>
>>      }
>> @@ -913,6 +914,38 @@ libxlMakeDiskList(virDomainDefPtr def, libxl_domain_config *d_config)
>>      return -1;
>>  }
>>
>
> The rest looks okay. ACK.
>
> Michal
>




More information about the libvir-list mailing list