A new attribute to alter the virtio revision:
<disk>
<driver compatibility='transitional'/>
</disk>
https://bugzilla.redhat.com/show_bug.cgi?id=1227354
---
docs/formatdomain.html.in | 8 +++++++-
docs/schemas/domaincommon.rng | 3 +++
src/conf/domain_conf.c | 7 +++++++
src/conf/domain_conf.h | 1 +
tests/qemuxml2argvdata/qemuxml2argv-virtio-revision.xml | 12 ++++++++++++
tests/qemuxml2xmloutdata/qemuxml2xmlout-virtio-revision.xml | 12 ++++++++++++
6 files changed, 42 insertions(+), 1 deletion(-)
diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
index 56dddbd..3f06613 100644
--- a/docs/formatdomain.html.in
+++ b/docs/formatdomain.html.in
@@ -2084,7 +2084,7 @@
<target dev='vdc' bus='virtio'/>
</disk>
<disk type='file' device='disk'>
- <driver name='qemu' type='qcow2'/>
+ <driver name='qemu' type='qcow2'
compatibility='modern'/>
<source file='/var/lib/libvirt/images/domain.qcow'/>
<backingStore type='file'>
<format type='qcow2'/>
@@ -2667,6 +2667,12 @@
<code>bus</code> and "pci" or "ccw"
<code>address</code> types.
<span class='since'>Since 1.2.8 (QEMU 2.1)</span>
</li>
+ <li>
+ The <code>compatibility</code> attribute can be used to specify
+ the compatibility of virtio devices. Allowed values are
+ <code>legacy</code>, <code>transitional</code> and
<code>modern</code>.
+ <span class="since">Since 2.2.0</span>.
+ </li>
</ul>
</dd>
<dt><code>backenddomain</code></dt>
diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
index 8ed4b9d..2cf3c1b 100644
--- a/docs/schemas/domaincommon.rng
+++ b/docs/schemas/domaincommon.rng
@@ -1641,6 +1641,9 @@
<optional>
<ref name="detect_zeroes"/>
</optional>
+ <optional>
+ <ref name="compatibility"/>
+ </optional>
<empty/>
</element>
</define>
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 53c3453..b7a5e26 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -7671,6 +7671,9 @@ virDomainDiskDefParseXML(virDomainXMLOptionPtr xmlopt,
}
}
+ if (virDomainDriverCompatibilityParseXML(ctxt, &def->compatibility) < 0)
+ goto error;
+
/* Disk volume types will have authentication information handled in
* virStorageTranslateDiskSourcePool
*/
@@ -19921,6 +19924,10 @@ virDomainDiskDefFormat(virBufferPtr buf,
virBufferAsprintf(&driverBuf, " iothread='%u'",
def->iothread);
if (def->detect_zeroes)
virBufferAsprintf(&driverBuf, " detect_zeroes='%s'",
detect_zeroes);
+ if (def->compatibility) {
+ virBufferAsprintf(&driverBuf, " compatibility='%s'",
+
virDomainDriverCompatibilityTypeToString(def->compatibility));
+ }
if (virBufferUse(&driverBuf)) {
virBufferAddLit(buf, "<driver");
virBufferAddBuffer(buf, &driverBuf);
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index ac9f552..5ceb22a 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -621,6 +621,7 @@ struct _virDomainDiskDef {
unsigned int iothread; /* unused = 0, > 0 specific thread # */
int detect_zeroes; /* enum virDomainDiskDetectZeroes */
char *domain_name; /* backend domain name */
+ virDomainDriverCompatibility compatibility;
};
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-virtio-revision.xml
b/tests/qemuxml2argvdata/qemuxml2argv-virtio-revision.xml
index 2e71db1..c37a6c8 100644
--- a/tests/qemuxml2argvdata/qemuxml2argv-virtio-revision.xml
+++ b/tests/qemuxml2argvdata/qemuxml2argv-virtio-revision.xml
@@ -14,6 +14,18 @@
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/bin/qemu</emulator>
+ <disk type='file' device='disk'>
+ <driver name='qemu' type='raw'
compatibility='legacy'/>
+ <source file='/var/lib/libvirt/images/img1'/>
+ <target dev='vda' bus='virtio'/>
+ <address type='pci' domain='0x0000' bus='0x00'
slot='0x0a' function='0x0'/>
+ </disk>
+ <disk type='file' device='disk'>
+ <driver name='qemu' type='raw'
compatibility='modern'/>
+ <source file='/var/lib/libvirt/images/img2'/>
+ <target dev='vdb' bus='virtio'/>
+ <address type='pci' domain='0x0000' bus='0x00'
slot='0x0b' function='0x0'/>
+ </disk>
<controller type='usb' index='0'>
<address type='pci' domain='0x0000' bus='0x00'
slot='0x01' function='0x2'/>
</controller>
diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-virtio-revision.xml
b/tests/qemuxml2xmloutdata/qemuxml2xmlout-virtio-revision.xml
index 2e71db1..c37a6c8 100644
--- a/tests/qemuxml2xmloutdata/qemuxml2xmlout-virtio-revision.xml
+++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-virtio-revision.xml
@@ -14,6 +14,18 @@
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/bin/qemu</emulator>
+ <disk type='file' device='disk'>
+ <driver name='qemu' type='raw'
compatibility='legacy'/>
+ <source file='/var/lib/libvirt/images/img1'/>
+ <target dev='vda' bus='virtio'/>
+ <address type='pci' domain='0x0000' bus='0x00'
slot='0x0a' function='0x0'/>
+ </disk>
+ <disk type='file' device='disk'>
+ <driver name='qemu' type='raw'
compatibility='modern'/>
+ <source file='/var/lib/libvirt/images/img2'/>
+ <target dev='vdb' bus='virtio'/>
+ <address type='pci' domain='0x0000' bus='0x00'
slot='0x0b' function='0x0'/>
+ </disk>
<controller type='usb' index='0'>
<address type='pci' domain='0x0000' bus='0x00'
slot='0x01' function='0x2'/>
</controller>
--
2.7.3