61 lines
2.1 KiB
Diff
61 lines
2.1 KiB
Diff
|
commit e33cd67a9b51e8fcb4e084f40f500057b30b2786
|
||
|
Author: Jim Fehlig <jfehlig@suse.com>
|
||
|
Date: Wed Jun 15 23:09:36 2016 -0600
|
||
|
|
||
|
xenconfig: fix conversion of <driver> to backendtype
|
||
|
|
||
|
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'
|
||
|
|
||
|
Index: libvirt-1.3.5/src/xenconfig/xen_xl.c
|
||
|
===================================================================
|
||
|
--- libvirt-1.3.5.orig/src/xenconfig/xen_xl.c
|
||
|
+++ libvirt-1.3.5/src/xenconfig/xen_xl.c
|
||
|
@@ -752,13 +752,15 @@ xenFormatXLDisk(virConfValuePtr list, vi
|
||
|
}
|
||
|
|
||
|
/* 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)
|