When converting domXML to xen xl.cfg, backendtype should not be emitted if <driver> is not specified. Moreover, <driver name='file'/> should be converted to backendtype qdisk, similar to handling of <driver> in libxlMakeDisk() in libxl_conf.c. Prior to this change, connectDomainXMLToNative would produce incorrect xl.cfg when the input domXML contained <driver name='file'/> domXML: <disk type="file" device="disk"> <driver name="file"/> <source file="/image/file/path"/> <target dev="xvda" bus="xen"/> </disk> virsh domxml-to-native xen-xl domXML disk = [ "format=raw,vdev=xvda,access=rw,backendtype=target=/image/file/path" ] xl create xl.cfg config parsing error in disk specification: unknown value for backendtype: near `target=/image/file/path' in `format=raw,vdev=xvda,access=rw,backendtype=target=/image/file/path' Signed-off-by: Jim Fehlig <jfehlig@xxxxxxxx> --- src/xenconfig/xen_xl.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/xenconfig/xen_xl.c b/src/xenconfig/xen_xl.c index 5879c66..d524a82 100644 --- a/src/xenconfig/xen_xl.c +++ b/src/xenconfig/xen_xl.c @@ -857,13 +857,15 @@ xenFormatXLDisk(virConfValuePtr list, virDomainDiskDefPtr disk) } /* backendtype */ - virBufferAddLit(&buf, "backendtype="); - if (STREQ_NULLABLE(driver, "qemu")) - virBufferAddLit(&buf, "qdisk,"); - else if (STREQ_NULLABLE(driver, "tap")) - virBufferAddLit(&buf, "tap,"); - else if (STREQ_NULLABLE(driver, "phy")) - virBufferAddLit(&buf, "phy,"); + if (driver) { + virBufferAddLit(&buf, "backendtype="); + if (STREQ(driver, "qemu") || STREQ(driver, "file")) + virBufferAddLit(&buf, "qdisk,"); + else if (STREQ(driver, "tap")) + virBufferAddLit(&buf, "tap,"); + else if (STREQ(driver, "phy")) + virBufferAddLit(&buf, "phy,"); + } /* devtype */ if (disk->device == VIR_DOMAIN_DISK_DEVICE_CDROM) -- 2.1.4 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list