|
|
c8c376 |
From 6a085ddb32e48aad09d6a831c02bfd531ac048af Mon Sep 17 00:00:00 2001
|
|
|
c8c376 |
Message-Id: <6a085ddb32e48aad09d6a831c02bfd531ac048af@dist-git>
|
|
|
c8c376 |
From: Michal Privoznik <mprivozn@redhat.com>
|
|
|
c8c376 |
Date: Tue, 8 Nov 2016 13:42:10 +0100
|
|
|
c8c376 |
Subject: [PATCH] qemuBuildVhostuserCommandLine: Reuse qemuBuildChrChardevStr
|
|
|
c8c376 |
|
|
|
c8c376 |
RHEL-7.3: https://bugzilla.redhat.com/show_bug.cgi?id=1366108
|
|
|
c8c376 |
RHEL-7.3.z: https://bugzilla.redhat.com/show_bug.cgi?id=1392032
|
|
|
c8c376 |
|
|
|
c8c376 |
There's no need to reinvent the wheel here. We already have a
|
|
|
c8c376 |
function to format virDomainChrSourceDefPtr. It's called
|
|
|
c8c376 |
qemuBuildChrChardevStr(). Use that instead of some dummy
|
|
|
c8c376 |
virBufferAsprintf().
|
|
|
c8c376 |
|
|
|
c8c376 |
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
|
|
c8c376 |
(cherry picked from commit 0c61cf315859a74326da93bbb6f04a08509ef91e)
|
|
|
c8c376 |
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
|
|
c8c376 |
---
|
|
|
c8c376 |
src/qemu/qemu_command.c | 45 ++++++++++++++++++++++++++-------------------
|
|
|
c8c376 |
1 file changed, 26 insertions(+), 19 deletions(-)
|
|
|
c8c376 |
|
|
|
c8c376 |
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
|
|
|
c8c376 |
index d28a367cc..b99fb7a8f 100644
|
|
|
c8c376 |
--- a/src/qemu/qemu_command.c
|
|
|
c8c376 |
+++ b/src/qemu/qemu_command.c
|
|
|
c8c376 |
@@ -7908,13 +7908,16 @@ qemuBuildGraphicsCommandLine(virQEMUDriverConfigPtr cfg,
|
|
|
c8c376 |
}
|
|
|
c8c376 |
|
|
|
c8c376 |
static int
|
|
|
c8c376 |
-qemuBuildVhostuserCommandLine(virCommandPtr cmd,
|
|
|
c8c376 |
+qemuBuildVhostuserCommandLine(virQEMUDriverPtr driver,
|
|
|
c8c376 |
+ virLogManagerPtr logManager,
|
|
|
c8c376 |
+ virCommandPtr cmd,
|
|
|
c8c376 |
virDomainDefPtr def,
|
|
|
c8c376 |
virDomainNetDefPtr net,
|
|
|
c8c376 |
virQEMUCapsPtr qemuCaps,
|
|
|
c8c376 |
unsigned int bootindex)
|
|
|
c8c376 |
{
|
|
|
c8c376 |
- virBuffer chardev_buf = VIR_BUFFER_INITIALIZER;
|
|
|
c8c376 |
+ virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
|
|
|
c8c376 |
+ char *chardev = NULL;
|
|
|
c8c376 |
virBuffer netdev_buf = VIR_BUFFER_INITIALIZER;
|
|
|
c8c376 |
unsigned int queues = net->driver.virtio.queues;
|
|
|
c8c376 |
char *nic = NULL;
|
|
|
c8c376 |
@@ -7927,9 +7930,10 @@ qemuBuildVhostuserCommandLine(virCommandPtr cmd,
|
|
|
c8c376 |
|
|
|
c8c376 |
switch ((virDomainChrType) net->data.vhostuser->type) {
|
|
|
c8c376 |
case VIR_DOMAIN_CHR_TYPE_UNIX:
|
|
|
c8c376 |
- virBufferAsprintf(&chardev_buf, "socket,id=char%s,path=%s%s",
|
|
|
c8c376 |
- net->info.alias, net->data.vhostuser->data.nix.path,
|
|
|
c8c376 |
- net->data.vhostuser->data.nix.listen ? ",server" : "");
|
|
|
c8c376 |
+ if (!(chardev = qemuBuildChrChardevStr(logManager, cmd, cfg, def,
|
|
|
c8c376 |
+ net->data.vhostuser,
|
|
|
c8c376 |
+ net->info.alias, qemuCaps, false)))
|
|
|
c8c376 |
+ goto error;
|
|
|
c8c376 |
break;
|
|
|
c8c376 |
|
|
|
c8c376 |
case VIR_DOMAIN_CHR_TYPE_NULL:
|
|
|
c8c376 |
@@ -7947,7 +7951,7 @@ qemuBuildVhostuserCommandLine(virCommandPtr cmd,
|
|
|
c8c376 |
case VIR_DOMAIN_CHR_TYPE_LAST:
|
|
|
c8c376 |
virReportError(VIR_ERR_INTERNAL_ERROR,
|
|
|
c8c376 |
_("vhost-user type '%s' not supported"),
|
|
|
c8c376 |
- virDomainChrTypeToString(net->data.vhostuser->type));
|
|
|
c8c376 |
+ virDomainChrTypeToString(net->data.vhostuser->type));
|
|
|
c8c376 |
goto error;
|
|
|
c8c376 |
}
|
|
|
c8c376 |
|
|
|
c8c376 |
@@ -7965,7 +7969,8 @@ qemuBuildVhostuserCommandLine(virCommandPtr cmd,
|
|
|
c8c376 |
}
|
|
|
c8c376 |
|
|
|
c8c376 |
virCommandAddArg(cmd, "-chardev");
|
|
|
c8c376 |
- virCommandAddArgBuffer(cmd, &chardev_buf);
|
|
|
c8c376 |
+ virCommandAddArg(cmd, chardev);
|
|
|
c8c376 |
+ VIR_FREE(chardev);
|
|
|
c8c376 |
|
|
|
c8c376 |
virCommandAddArg(cmd, "-netdev");
|
|
|
c8c376 |
virCommandAddArgBuffer(cmd, &netdev_buf);
|
|
|
c8c376 |
@@ -7979,11 +7984,13 @@ qemuBuildVhostuserCommandLine(virCommandPtr cmd,
|
|
|
c8c376 |
|
|
|
c8c376 |
virCommandAddArgList(cmd, "-device", nic, NULL);
|
|
|
c8c376 |
VIR_FREE(nic);
|
|
|
c8c376 |
+ virObjectUnref(cfg);
|
|
|
c8c376 |
|
|
|
c8c376 |
return 0;
|
|
|
c8c376 |
|
|
|
c8c376 |
error:
|
|
|
c8c376 |
- virBufferFreeAndReset(&chardev_buf);
|
|
|
c8c376 |
+ virObjectUnref(cfg);
|
|
|
c8c376 |
+ VIR_FREE(chardev);
|
|
|
c8c376 |
virBufferFreeAndReset(&netdev_buf);
|
|
|
c8c376 |
VIR_FREE(nic);
|
|
|
c8c376 |
|
|
|
c8c376 |
@@ -7991,8 +7998,9 @@ qemuBuildVhostuserCommandLine(virCommandPtr cmd,
|
|
|
c8c376 |
}
|
|
|
c8c376 |
|
|
|
c8c376 |
static int
|
|
|
c8c376 |
-qemuBuildInterfaceCommandLine(virCommandPtr cmd,
|
|
|
c8c376 |
- virQEMUDriverPtr driver,
|
|
|
c8c376 |
+qemuBuildInterfaceCommandLine(virQEMUDriverPtr driver,
|
|
|
c8c376 |
+ virLogManagerPtr logManager,
|
|
|
c8c376 |
+ virCommandPtr cmd,
|
|
|
c8c376 |
virDomainDefPtr def,
|
|
|
c8c376 |
virDomainNetDefPtr net,
|
|
|
c8c376 |
virQEMUCapsPtr qemuCaps,
|
|
|
c8c376 |
@@ -8012,7 +8020,6 @@ qemuBuildInterfaceCommandLine(virCommandPtr cmd,
|
|
|
c8c376 |
char **tapfdName = NULL;
|
|
|
c8c376 |
char **vhostfdName = NULL;
|
|
|
c8c376 |
virDomainNetType actualType = virDomainNetGetActualType(net);
|
|
|
c8c376 |
- virQEMUDriverConfigPtr cfg = NULL;
|
|
|
c8c376 |
virNetDevBandwidthPtr actualBandwidth;
|
|
|
c8c376 |
size_t i;
|
|
|
c8c376 |
|
|
|
c8c376 |
@@ -8055,8 +8062,6 @@ qemuBuildInterfaceCommandLine(virCommandPtr cmd,
|
|
|
c8c376 |
return -1;
|
|
|
c8c376 |
}
|
|
|
c8c376 |
|
|
|
c8c376 |
- cfg = virQEMUDriverGetConfig(driver);
|
|
|
c8c376 |
-
|
|
|
c8c376 |
switch (actualType) {
|
|
|
c8c376 |
case VIR_DOMAIN_NET_TYPE_NETWORK:
|
|
|
c8c376 |
case VIR_DOMAIN_NET_TYPE_BRIDGE:
|
|
|
c8c376 |
@@ -8116,7 +8121,8 @@ qemuBuildInterfaceCommandLine(virCommandPtr cmd,
|
|
|
c8c376 |
break;
|
|
|
c8c376 |
|
|
|
c8c376 |
case VIR_DOMAIN_NET_TYPE_VHOSTUSER:
|
|
|
c8c376 |
- ret = qemuBuildVhostuserCommandLine(cmd, def, net, qemuCaps, bootindex);
|
|
|
c8c376 |
+ ret = qemuBuildVhostuserCommandLine(driver, logManager, cmd, def,
|
|
|
c8c376 |
+ net, qemuCaps, bootindex);
|
|
|
c8c376 |
goto cleanup;
|
|
|
c8c376 |
break;
|
|
|
c8c376 |
|
|
|
c8c376 |
@@ -8289,7 +8295,6 @@ qemuBuildInterfaceCommandLine(virCommandPtr cmd,
|
|
|
c8c376 |
VIR_FREE(host);
|
|
|
c8c376 |
VIR_FREE(tapfdName);
|
|
|
c8c376 |
VIR_FREE(vhostfdName);
|
|
|
c8c376 |
- virObjectUnref(cfg);
|
|
|
c8c376 |
return ret;
|
|
|
c8c376 |
}
|
|
|
c8c376 |
|
|
|
c8c376 |
@@ -8299,8 +8304,9 @@ qemuBuildInterfaceCommandLine(virCommandPtr cmd,
|
|
|
c8c376 |
* API domainSetSecurityTapFDLabel that doesn't use the const format.
|
|
|
c8c376 |
*/
|
|
|
c8c376 |
static int
|
|
|
c8c376 |
-qemuBuildNetCommandLine(virCommandPtr cmd,
|
|
|
c8c376 |
- virQEMUDriverPtr driver,
|
|
|
c8c376 |
+qemuBuildNetCommandLine(virQEMUDriverPtr driver,
|
|
|
c8c376 |
+ virLogManagerPtr logManager,
|
|
|
c8c376 |
+ virCommandPtr cmd,
|
|
|
c8c376 |
virDomainDefPtr def,
|
|
|
c8c376 |
virQEMUCapsPtr qemuCaps,
|
|
|
c8c376 |
virNetDevVPortProfileOp vmop,
|
|
|
c8c376 |
@@ -8339,7 +8345,7 @@ qemuBuildNetCommandLine(virCommandPtr cmd,
|
|
|
c8c376 |
else
|
|
|
c8c376 |
vlan = i;
|
|
|
c8c376 |
|
|
|
c8c376 |
- if (qemuBuildInterfaceCommandLine(cmd, driver, def, net,
|
|
|
c8c376 |
+ if (qemuBuildInterfaceCommandLine(driver, logManager, cmd, def, net,
|
|
|
c8c376 |
qemuCaps, vlan, bootNet, vmop,
|
|
|
c8c376 |
standalone, nnicindexes,
|
|
|
c8c376 |
nicindexes) < 0)
|
|
|
c8c376 |
@@ -9672,7 +9678,8 @@ qemuBuildCommandLine(virQEMUDriverPtr driver,
|
|
|
c8c376 |
if (qemuBuildFSDevCommandLine(cmd, def, qemuCaps) < 0)
|
|
|
c8c376 |
goto error;
|
|
|
c8c376 |
|
|
|
c8c376 |
- if (qemuBuildNetCommandLine(cmd, driver, def, qemuCaps, vmop, standalone,
|
|
|
c8c376 |
+ if (qemuBuildNetCommandLine(driver, logManager, cmd, def,
|
|
|
c8c376 |
+ qemuCaps, vmop, standalone,
|
|
|
c8c376 |
emitBootindex, nnicindexes, nicindexes,
|
|
|
c8c376 |
&bootHostdevNet) < 0)
|
|
|
c8c376 |
goto error;
|
|
|
c8c376 |
--
|
|
|
c8c376 |
2.11.0
|
|
|
c8c376 |
|