[libvirt] [PATCH v2 0/2] libxl QED support

Hi all, Just added on patch before the QED one to add default: cases in xenParseXLDisk to avoid build failures when building on more uptodate xen. Cédric Bosdonnat (2): xenconfig: add default in xenParseXLDisk()'s switches libxl: add QED disk format support src/libxl/libxl_conf.c | 11 +++++++++++ src/xenconfig/xen_xl.c | 15 +++++++++++++++ 2 files changed, 26 insertions(+) -- 2.11.0

Without a default: case in the switches in xenParseXLDisk(), build would fail with every new disk backend or image format added in libxl, as this is the case in this error: http://logs.test-lab.xenproject.org/osstest/logs/103325/build-amd64-libvirt/... --- src/xenconfig/xen_xl.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/xenconfig/xen_xl.c b/src/xenconfig/xen_xl.c index bcdd35527..f197267bb 100644 --- a/src/xenconfig/xen_xl.c +++ b/src/xenconfig/xen_xl.c @@ -393,6 +393,11 @@ xenParseXLDisk(virConfPtr conf, virDomainDefPtr def) case LIBXL_DISK_FORMAT_EMPTY: break; + + default: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("disk image format not supported: %s"), + libxl_disk_format_to_string(libxldisk->format)); } switch (libxldisk->backend) { @@ -415,6 +420,10 @@ xenParseXLDisk(virConfPtr conf, virDomainDefPtr def) goto fail; virDomainDiskSetType(disk, VIR_STORAGE_TYPE_BLOCK); break; + default: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("disk backend not supported: %s"), + libxl_disk_backend_to_string(libxldisk->backend)); } } -- 2.11.0

On 12/14/2016 09:15 AM, Cédric Bosdonnat wrote:
Without a default: case in the switches in xenParseXLDisk(), build would fail with every new disk backend or image format added in libxl, as this is the case in this error:
One upshot of the error is we learn about the new feature :-). But yeah, build errors are not the best way to learn of new features in external projects.
http://logs.test-lab.xenproject.org/osstest/logs/103325/build-amd64-libvirt/... --- src/xenconfig/xen_xl.c | 9 +++++++++ 1 file changed, 9 insertions(+)
diff --git a/src/xenconfig/xen_xl.c b/src/xenconfig/xen_xl.c index bcdd35527..f197267bb 100644 --- a/src/xenconfig/xen_xl.c +++ b/src/xenconfig/xen_xl.c @@ -393,6 +393,11 @@ xenParseXLDisk(virConfPtr conf, virDomainDefPtr def)
case LIBXL_DISK_FORMAT_EMPTY: break; + + default: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("disk image format not supported: %s"), + libxl_disk_format_to_string(libxldisk->format)); }
switch (libxldisk->backend) { @@ -415,6 +420,10 @@ xenParseXLDisk(virConfPtr conf, virDomainDefPtr def) goto fail; virDomainDiskSetType(disk, VIR_STORAGE_TYPE_BLOCK); break; + default: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("disk backend not supported: %s"), + libxl_disk_backend_to_string(libxldisk->backend)); } }
You need to goto 'fail' after reporting the error. ACK with the below diff squashed in. Regards, Jim diff --git a/src/xenconfig/xen_xl.c b/src/xenconfig/xen_xl.c index f197267..ffdf798 100644 --- a/src/xenconfig/xen_xl.c +++ b/src/xenconfig/xen_xl.c @@ -398,6 +398,7 @@ xenParseXLDisk(virConfPtr conf, virDomainDefPtr def) virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("disk image format not supported: %s"), libxl_disk_format_to_string(libxldisk->format)); + goto fail; } switch (libxldisk->backend) { @@ -424,6 +425,7 @@ xenParseXLDisk(virConfPtr conf, virDomainDefPtr def) virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("disk backend not supported: %s"), libxl_disk_backend_to_string(libxldisk->backend)); + goto fail; } }

If libxl has QED disk format support, then pass the feature over to the user. --- src/libxl/libxl_conf.c | 11 +++++++++++ src/xenconfig/xen_xl.c | 6 ++++++ 2 files changed, 17 insertions(+) diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c index 288712f65..02945ae1a 100644 --- a/src/libxl/libxl_conf.c +++ b/src/libxl/libxl_conf.c @@ -745,6 +745,12 @@ libxlMakeDisk(virDomainDiskDefPtr l_disk, libxl_device_disk *x_disk) x_disk->format = LIBXL_DISK_FORMAT_RAW; x_disk->backend = LIBXL_DISK_BACKEND_TAP; break; +#ifdef LIBXL_HAVE_QED + case VIR_STORAGE_FILE_QED: + x_disk->format = LIBXL_DISK_FORMAT_QED; + x_disk->backend = LIBXL_DISK_BACKEND_QDISK; + break; +#endif default: virReportError(VIR_ERR_INTERNAL_ERROR, _("libxenlight does not support disk format %s " @@ -762,6 +768,11 @@ libxlMakeDisk(virDomainDiskDefPtr l_disk, libxl_device_disk *x_disk) case VIR_STORAGE_FILE_QCOW2: x_disk->format = LIBXL_DISK_FORMAT_QCOW2; break; +#ifdef LIBXL_HAVE_QED + case VIR_STORAGE_FILE_QED: + x_disk->format = LIBXL_DISK_FORMAT_QED; + break; +#endif case VIR_STORAGE_FILE_VHD: x_disk->format = LIBXL_DISK_FORMAT_VHD; break; diff --git a/src/xenconfig/xen_xl.c b/src/xenconfig/xen_xl.c index f197267bb..edaa8764d 100644 --- a/src/xenconfig/xen_xl.c +++ b/src/xenconfig/xen_xl.c @@ -394,6 +394,12 @@ xenParseXLDisk(virConfPtr conf, virDomainDefPtr def) case LIBXL_DISK_FORMAT_EMPTY: break; +#ifdef LIBXL_HAVE_QED + case LIBXL_DISK_FORMAT_QED: + disk->src->format = VIR_STORAGE_FILE_QED; + break; +#endif + default: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("disk image format not supported: %s"), -- 2.11.0

On 12/14/2016 09:15 AM, Cédric Bosdonnat wrote:
If libxl has QED disk format support, then pass the feature over to the user. --- src/libxl/libxl_conf.c | 11 +++++++++++ src/xenconfig/xen_xl.c | 6 ++++++ 2 files changed, 17 insertions(+)
diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c index 288712f65..02945ae1a 100644 --- a/src/libxl/libxl_conf.c +++ b/src/libxl/libxl_conf.c @@ -745,6 +745,12 @@ libxlMakeDisk(virDomainDiskDefPtr l_disk, libxl_device_disk *x_disk) x_disk->format = LIBXL_DISK_FORMAT_RAW; x_disk->backend = LIBXL_DISK_BACKEND_TAP; break; +#ifdef LIBXL_HAVE_QED + case VIR_STORAGE_FILE_QED: + x_disk->format = LIBXL_DISK_FORMAT_QED; + x_disk->backend = LIBXL_DISK_BACKEND_QDISK; + break; +#endif default: virReportError(VIR_ERR_INTERNAL_ERROR, _("libxenlight does not support disk format %s " @@ -762,6 +768,11 @@ libxlMakeDisk(virDomainDiskDefPtr l_disk, libxl_device_disk *x_disk) case VIR_STORAGE_FILE_QCOW2: x_disk->format = LIBXL_DISK_FORMAT_QCOW2; break; +#ifdef LIBXL_HAVE_QED + case VIR_STORAGE_FILE_QED: + x_disk->format = LIBXL_DISK_FORMAT_QED; + break; +#endif case VIR_STORAGE_FILE_VHD: x_disk->format = LIBXL_DISK_FORMAT_VHD; break; diff --git a/src/xenconfig/xen_xl.c b/src/xenconfig/xen_xl.c index f197267bb..edaa8764d 100644 --- a/src/xenconfig/xen_xl.c +++ b/src/xenconfig/xen_xl.c @@ -394,6 +394,12 @@ xenParseXLDisk(virConfPtr conf, virDomainDefPtr def) case LIBXL_DISK_FORMAT_EMPTY: break;
+#ifdef LIBXL_HAVE_QED + case LIBXL_DISK_FORMAT_QED: + disk->src->format = VIR_STORAGE_FILE_QED; + break; +#endif + default: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("disk image format not supported: %s"),
You'll also need to add a hunk for QED in xenFormatXLDisk(). Would be nice to have a test added for the domXML <-> xl conversions too :-). Regards, Jim
participants (2)
-
Cédric Bosdonnat
-
Jim Fehlig