There's this <driver/> element under <interface/> which can have several attributes. However, the driver element is currently formated only if the driver's name or txmode has been specified. This makes only a little sense as we parse even partial <driver/>, for instance: <interface type='user'> <mac address='52:54:00:e5:48:58'/> <model type='virtio'/> <driver ioeventfd='on' event_idx='on' queues='5'/> </interface> But such XML would never get formatted back. Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx> --- src/conf/domain_conf.c | 4 +- .../qemuxml2argv-interface-driver.xml | 51 ++++++++++++++++++++++ tests/qemuxml2xmltest.c | 1 + 3 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-interface-driver.xml diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index c7016f3..934f6cb 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -16286,7 +16286,9 @@ virDomainNetDefFormat(virBufferPtr buf, virBufferEscapeString(buf, "<model type='%s'/>\n", def->model); if (STREQ(def->model, "virtio") && - (def->driver.virtio.name || def->driver.virtio.txmode)) { + (def->driver.virtio.name || def->driver.virtio.txmode || + def->driver.virtio.ioeventfd || def->driver.virtio.event_idx || + def->driver.virtio.queues)) { virBufferAddLit(buf, "<driver"); if (def->driver.virtio.name) { virBufferAsprintf(buf, " name='%s'", diff --git a/tests/qemuxml2argvdata/qemuxml2argv-interface-driver.xml b/tests/qemuxml2argvdata/qemuxml2argv-interface-driver.xml new file mode 100644 index 0000000..ec5ab61 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-interface-driver.xml @@ -0,0 +1,51 @@ +<domain type='qemu'> + <name>test</name> + <uuid>15d091de-0181-456b-9554-e4382dc1f1ab</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='x86_64' machine='pc-0.13'>hvm</type> + <boot dev='cdrom'/> + <boot dev='hd'/> + <bootmenu enable='yes'/> + </os> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>restart</on_crash> + <devices> + <emulator>/usr/bin/qemu</emulator> + <disk type='file' device='disk'> + <driver name='qemu' type='qcow2' event_idx='on'/> + <source file='/var/lib/libvirt/images/f14.img'/> + <target dev='vda' bus='virtio'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> + </disk> + <disk type='file' device='cdrom'> + <driver name='qemu' type='raw'/> + <source file='/var/lib/libvirt/Fedora-14-x86_64-Live-KDE.iso'/> + <target dev='hdc' bus='ide'/> + <readonly/> + <address type='drive' controller='0' bus='1' target='0' unit='0'/> + </disk> + <controller type='usb' index='0'/> + <controller type='virtio-serial' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> + </controller> + <controller type='ide' index='0'/> + <controller type='pci' index='0' model='pci-root'/> + <interface type='user'> + <mac address='52:54:00:e5:48:58'/> + <model type='virtio'/> + <driver ioeventfd='on' event_idx='on' queues='5'/> + </interface> + <serial type='pty'> + <target port='0'/> + </serial> + <console type='pty'> + <target type='serial' port='0'/> + </console> + <memballoon model='virtio'/> + </devices> +</domain> diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index 7d416d0..5941323 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -299,6 +299,7 @@ mymain(void) DO_TEST("lease"); DO_TEST("event_idx"); DO_TEST("vhost_queues"); + DO_TEST("interface-driver"); DO_TEST("virtio-lun"); DO_TEST("usb-redir"); -- 1.8.5.5 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list