From: Luyao Huang <lhuang(a)redhat.com>
Rename qemuBuildRNGDeviceArgs to qemuBuildRNGDevStr and change the
return type so that it can be reused in the device hotplug code later.
Signed-off-by: Luyao Huang <lhuang(a)redhat.com>
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
src/qemu/qemu_command.c | 30 +++++++++++++++---------------
src/qemu/qemu_command.h | 4 ++++
2 files changed, 19 insertions(+), 15 deletions(-)
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 4447b9b..8165fb0 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -6211,21 +6211,19 @@ qemuBuildRNGBackendArgs(virCommandPtr cmd,
}
-static int
-qemuBuildRNGDeviceArgs(virCommandPtr cmd,
- virDomainDefPtr def,
- virDomainRNGDefPtr dev,
- virQEMUCapsPtr qemuCaps)
+char *
+qemuBuildRNGDevStr(virDomainDefPtr def,
+ virDomainRNGDefPtr dev,
+ virQEMUCapsPtr qemuCaps)
{
virBuffer buf = VIR_BUFFER_INITIALIZER;
- int ret = -1;
if (dev->model != VIR_DOMAIN_RNG_MODEL_VIRTIO ||
!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VIRTIO_RNG)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("this qemu doesn't support RNG device type
'%s'"),
virDomainRNGModelTypeToString(dev->model));
- goto cleanup;
+ goto error;
}
if (dev->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW)
@@ -6246,16 +6244,15 @@ qemuBuildRNGDeviceArgs(virCommandPtr cmd,
}
if (qemuBuildDeviceAddressStr(&buf, def, &dev->info, qemuCaps) < 0)
- goto cleanup;
-
- virCommandAddArg(cmd, "-device");
- virCommandAddArgBuffer(cmd, &buf);
+ goto error;
+ if (virBufferCheckError(&buf) < 0)
+ goto error;
- ret = 0;
+ return virBufferContentAndReset(&buf);
- cleanup:
+ error:
virBufferFreeAndReset(&buf);
- return ret;
+ return NULL;
}
@@ -10145,13 +10142,16 @@ qemuBuildCommandLine(virConnectPtr conn,
}
for (i = 0; i < def->nrngs; i++) {
+ char *devstr;
/* add the RNG source backend */
if (qemuBuildRNGBackendArgs(cmd, def->rngs[i], qemuCaps) < 0)
goto error;
/* add the device */
- if (qemuBuildRNGDeviceArgs(cmd, def, def->rngs[i], qemuCaps) < 0)
+ if (!(devstr = qemuBuildRNGDevStr(def, def->rngs[i], qemuCaps)))
goto error;
+ virCommandAddArgList(cmd, "-device", devstr, NULL);
+ VIR_FREE(devstr);
}
if (def->nvram) {
diff --git a/src/qemu/qemu_command.h b/src/qemu/qemu_command.h
index d8fea65..e280497 100644
--- a/src/qemu/qemu_command.h
+++ b/src/qemu/qemu_command.h
@@ -171,6 +171,10 @@ char *qemuBuildPCIHostdevDevStr(virDomainDefPtr def,
const char *configfd,
virQEMUCapsPtr qemuCaps);
+char *qemuBuildRNGDevStr(virDomainDefPtr def,
+ virDomainRNGDefPtr dev,
+ virQEMUCapsPtr qemuCaps);
+
int qemuOpenPCIConfig(virDomainHostdevDefPtr dev);
/* Legacy, pre device support */
--
2.2.2