]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemuBuildInterfaceCommandLine: Move vhostuser handling a bit further
authorMichal Privoznik <mprivozn@redhat.com>
Mon, 26 Sep 2016 08:32:44 +0000 (10:32 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Fri, 14 Oct 2016 02:15:51 +0000 (10:15 +0800)
The idea is to have function that does some checking of the
arguments at its beginning and then have one big switch for all
the interface types it supports. Each one of them generating the
corresponding part of the command line.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
src/qemu/qemu_command.c
tests/qemuxml2argvdata/qemuxml2argv-net-vhostuser-fail.xml [new file with mode: 0644]
tests/qemuxml2argvtest.c

index de6a631e508a3a7955a539e0de6b11a7cdab42dc..4197c0507bf7b673019d9c77729a3aaf099c6f1b 100644 (file)
@@ -7878,15 +7878,13 @@ qemuBuildInterfaceCommandLine(virCommandPtr cmd,
     if (!bootindex)
         bootindex = net->info.bootIndex;
 
-    if (actualType == VIR_DOMAIN_NET_TYPE_VHOSTUSER)
-        return qemuBuildVhostuserCommandLine(cmd, def, net, qemuCaps, bootindex);
-
     /* Currently nothing besides TAP devices supports multiqueue. */
     if (net->driver.virtio.queues > 0 &&
         !(actualType == VIR_DOMAIN_NET_TYPE_NETWORK ||
           actualType == VIR_DOMAIN_NET_TYPE_BRIDGE ||
           actualType == VIR_DOMAIN_NET_TYPE_DIRECT ||
-          actualType == VIR_DOMAIN_NET_TYPE_ETHERNET)) {
+          actualType == VIR_DOMAIN_NET_TYPE_ETHERNET ||
+          actualType == VIR_DOMAIN_NET_TYPE_VHOSTUSER)) {
         virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
                        _("Multiqueue network is not supported for: %s"),
                        virDomainNetTypeToString(actualType));
@@ -7966,6 +7964,9 @@ qemuBuildInterfaceCommandLine(virCommandPtr cmd,
          */
         ret = 0;
         goto cleanup;
+    } else if (actualType == VIR_DOMAIN_NET_TYPE_VHOSTUSER) {
+        ret = qemuBuildVhostuserCommandLine(cmd, def, net, qemuCaps, bootindex);
+        goto cleanup;
     }
 
     /* For types whose implementations use a netdev on the host, add
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-net-vhostuser-fail.xml b/tests/qemuxml2argvdata/qemuxml2argv-net-vhostuser-fail.xml
new file mode 100644 (file)
index 0000000..e9fe14f
--- /dev/null
@@ -0,0 +1,36 @@
+<domain type='qemu'>
+  <name>QEMUGuest1</name>
+  <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+  <memory unit='KiB'>219136</memory>
+  <currentMemory unit='KiB'>219136</currentMemory>
+  <vcpu placement='static'>1</vcpu>
+  <os>
+    <type arch='i686' machine='pc'>hvm</type>
+    <boot dev='hd'/>
+  </os>
+  <clock offset='utc'/>
+  <on_poweroff>destroy</on_poweroff>
+  <on_reboot>restart</on_reboot>
+  <on_crash>destroy</on_crash>
+  <devices>
+    <emulator>/usr/bin/qemu</emulator>
+    <disk type='block' device='disk'>
+      <driver name='qemu' type='raw'/>
+      <source dev='/dev/HostVG/QEMUGuest1'/>
+      <target dev='hda' bus='ide'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
+    </disk>
+    <controller type='usb' index='0'/>
+    <controller type='ide' index='0'/>
+    <controller type='pci' index='0' model='pci-root'/>
+    <interface type='vhostuser'>
+      <mac address='52:54:00:ee:96:6b'/>
+      <source type='unix' path='/tmp/vhost0.sock' mode='server'/>
+      <model type='virtio'/>
+      <filterref filter='myfilter'/>
+      <backend tap='/dev/mytap'/>
+      <driver queues='4'/>
+    </interface>
+    <memballoon model='none'/>
+  </devices>
+</domain>
index 3a8835d79612e5fa78ea627e80385cbf78b810ec..e8438b41e38a09c7b4add6cf742d8352bd3d5c62 100644 (file)
@@ -1071,6 +1071,9 @@ mymain(void)
     DO_TEST("net-vhostuser-multiq",
             QEMU_CAPS_NETDEV, QEMU_CAPS_VHOSTUSER_MULTIQUEUE);
     DO_TEST_FAILURE("net-vhostuser-multiq", QEMU_CAPS_NETDEV);
+    DO_TEST_FAILURE("net-vhostuser-fail",
+                    QEMU_CAPS_NETDEV,
+                    QEMU_CAPS_VHOSTUSER_MULTIQUEUE);
     DO_TEST("net-user", NONE);
     DO_TEST("net-virtio", NONE);
     DO_TEST("net-virtio-device",