From 4a74ccdb92fd2103392b177c38846b685e141840 Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Mon, 26 Sep 2016 10:32:44 +0200 Subject: [PATCH] qemuBuildInterfaceCommandLine: Move vhostuser handling a bit further 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 --- src/qemu/qemu_command.c | 9 ++--- .../qemuxml2argv-net-vhostuser-fail.xml | 36 +++++++++++++++++++ tests/qemuxml2argvtest.c | 3 ++ 3 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-net-vhostuser-fail.xml diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index de6a631e50..4197c0507b 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -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 index 0000000000..e9fe14f752 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-net-vhostuser-fail.xml @@ -0,0 +1,36 @@ + + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219136 + 219136 + 1 + + hvm + + + + destroy + restart + destroy + + /usr/bin/qemu + + + + +
+ + + + + + + + + + + + + + + diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 3a8835d796..e8438b41e3 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -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",