static int
-qemuBuildObjectCommandlineFromJSON(virBuffer *buf,
+qemuBuildObjectCommandlineFromJSON(virCommand *cmd,
virJSONValue *props,
virQEMUCaps *qemuCaps)
{
+ g_autofree char *arg = NULL;
const char *type = virJSONValueObjectGetString(props, "qom-type");
const char *alias = virJSONValueObjectGetString(props, "id");
}
if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_QAPIFIED)) {
- return virJSONValueToBuffer(props, buf, false);
+ if (!(arg = virJSONValueToString(props, false)))
+ return -1;
} else {
- virBufferAsprintf(buf, "%s,", type);
+ g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
- return virQEMUBuildCommandLineJSON(props, buf, "qom-type",
- virQEMUBuildCommandLineJSONArrayBitmap);
+ virBufferAsprintf(&buf, "%s,", type);
+
+ if (virQEMUBuildCommandLineJSON(props, &buf, "qom-type",
+ virQEMUBuildCommandLineJSONArrayBitmap) < 0)
+ return -1;
+
+ arg = virBufferContentAndReset(&buf);
}
+
+ virCommandAddArgList(cmd, "-object", arg, NULL);
+ return 0;
}
{
g_autofree char *alias = NULL;
g_autofree char *path = NULL;
- g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
g_autoptr(virJSONValue) props = NULL;
if (!(alias = qemuDomainGetMasterKeyAlias()))
NULL) < 0)
return -1;
- if (qemuBuildObjectCommandlineFromJSON(&buf, props, priv->qemuCaps) < 0)
+ if (qemuBuildObjectCommandlineFromJSON(cmd, props, priv->qemuCaps) < 0)
return -1;
- virCommandAddArg(cmd, "-object");
- virCommandAddArgBuffer(cmd, &buf);
-
return 0;
}
qemuDomainSecretInfo *secinfo,
virQEMUCaps *qemuCaps)
{
- g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
g_autoptr(virJSONValue) props = NULL;
if (qemuBuildSecretInfoProps(secinfo, &props) < 0)
return -1;
- if (qemuBuildObjectCommandlineFromJSON(&buf, props, qemuCaps) < 0)
+ if (qemuBuildObjectCommandlineFromJSON(cmd, props, qemuCaps) < 0)
return -1;
- virCommandAddArg(cmd, "-object");
- virCommandAddArgBuffer(cmd, &buf);
-
return 0;
}
const char *alias,
virQEMUCaps *qemuCaps)
{
- g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
g_autoptr(virJSONValue) props = NULL;
if (qemuBuildTLSx509BackendProps(tlspath, isListen, verifypeer, alias,
certEncSecretAlias, &props) < 0)
return -1;
- if (qemuBuildObjectCommandlineFromJSON(&buf, props, qemuCaps) < 0)
+ if (qemuBuildObjectCommandlineFromJSON(cmd, props, qemuCaps) < 0)
return -1;
- virCommandAddArg(cmd, "-object");
- virCommandAddArgBuffer(cmd, &buf);
-
return 0;
}
virJSONValue *objProps,
virQEMUCaps *qemuCaps)
{
- g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
-
if (!objProps)
return 0;
- if (qemuBuildObjectCommandlineFromJSON(&buf, objProps, qemuCaps) < 0)
+ if (qemuBuildObjectCommandlineFromJSON(cmd, objProps, qemuCaps) < 0)
return -1;
- virCommandAddArg(cmd, "-object");
- virCommandAddArgBuffer(cmd, &buf);
-
return 0;
}
static int
-qemuBuildMemoryDimmBackendStr(virBuffer *buf,
+qemuBuildMemoryDimmBackendStr(virCommand *cmd,
virDomainMemoryDef *mem,
virDomainDef *def,
virQEMUDriverConfig *cfg,
priv, def, mem, true, false) < 0)
return -1;
- if (qemuBuildObjectCommandlineFromJSON(buf, props, priv->qemuCaps) < 0)
+ if (qemuBuildObjectCommandlineFromJSON(cmd, props, priv->qemuCaps) < 0)
return -1;
return 0;
if (input->type == VIR_DOMAIN_INPUT_TYPE_EVDEV) {
g_autoptr(virJSONValue) props = NULL;
- g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
if (!(props = qemuBuildInputEvdevProps(input)))
return -1;
- if (qemuBuildObjectCommandlineFromJSON(&buf, props, qemuCaps) < 0)
+ if (qemuBuildObjectCommandlineFromJSON(cmd, props, qemuCaps) < 0)
return -1;
-
- virCommandAddArg(cmd, "-object");
- virCommandAddArgBuffer(cmd, &buf);
} else {
g_autofree char *devstr = NULL;
for (i = 0; i < def->nrngs; i++) {
g_autoptr(virJSONValue) props = NULL;
- g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
virDomainRNGDef *rng = def->rngs[i];
g_autofree char *chardev = NULL;
g_autofree char *devstr = NULL;
- int rc;
if (!rng->info.alias) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
if (qemuBuildRNGBackendProps(rng, &props) < 0)
return -1;
- rc = qemuBuildObjectCommandlineFromJSON(&buf, props, qemuCaps);
-
- if (rc < 0)
+ if (qemuBuildObjectCommandlineFromJSON(cmd, props, qemuCaps) < 0)
return -1;
- virCommandAddArg(cmd, "-object");
- virCommandAddArgBuffer(cmd, &buf);
-
/* add the device */
if (qemuCommandAddExtDevice(cmd, &rng->info) < 0)
return -1;
{
g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(priv->driver);
g_autoptr(virJSONValue) props = NULL;
- g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
virDomainMemoryDef mem = { 0 };
mem.size = virDomainDefGetMemoryInitial(def);
priv, def, &mem, false, true) < 0)
return -1;
- if (qemuBuildObjectCommandlineFromJSON(&buf, props, priv->qemuCaps) < 0)
+ if (qemuBuildObjectCommandlineFromJSON(cmd, props, priv->qemuCaps) < 0)
return -1;
- virCommandAddArg(cmd, "-object");
- virCommandAddArgBuffer(cmd, &buf);
return 0;
}
for (i = 0; i < def->niothreadids; i++) {
g_autoptr(virJSONValue) props = NULL;
- g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
g_autofree char *alias = g_strdup_printf("iothread%u", def->iothreadids[i]->iothread_id);
if (qemuMonitorCreateObjectProps(&props, "iothread", alias, NULL) < 0)
return -1;
- if (qemuBuildObjectCommandlineFromJSON(&buf, props, qemuCaps) < 0)
+ if (qemuBuildObjectCommandlineFromJSON(cmd, props, qemuCaps) < 0)
return -1;
-
- virCommandAddArg(cmd, "-object");
- virCommandAddArgBuffer(cmd, &buf);
}
return 0;
ssize_t initiator = virDomainNumaGetNodeInitiator(def->numa, i);
if (needBackend) {
- g_auto(virBuffer) objbuf = VIR_BUFFER_INITIALIZER;
-
- if (qemuBuildObjectCommandlineFromJSON(&objbuf, nodeBackends[i],
+ if (qemuBuildObjectCommandlineFromJSON(cmd, nodeBackends[i],
priv->qemuCaps) < 0)
goto cleanup;
-
- virCommandAddArg(cmd, "-object");
- virCommandAddArgBuffer(cmd, &objbuf);
}
virCommandAddArg(cmd, "-numa");
/* memory hotplug requires NUMA to be enabled - we already checked
* that memory devices are present only when NUMA is */
for (i = 0; i < def->nmems; i++) {
- g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
char *dimmStr;
- if (qemuBuildMemoryDimmBackendStr(&buf, def->mems[i], def, cfg, priv) < 0)
+ if (qemuBuildMemoryDimmBackendStr(cmd, def->mems[i], def, cfg, priv) < 0)
return -1;
- virCommandAddArg(cmd, "-object");
- virCommandAddArgBuffer(cmd, &buf);
-
if (!(dimmStr = qemuBuildMemoryDeviceStr(def, def->mems[i], priv->qemuCaps)))
return -1;
bool chardevStdioLogd)
{
g_autoptr(virJSONValue) memProps = NULL;
- g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
g_autofree char *devstr = NULL;
g_autofree char *chardev = NULL;
- int rc;
unsigned int cdevflags = QEMU_BUILD_CHARDEV_TCP_NOWAIT |
QEMU_BUILD_CHARDEV_UNIX_FD_PASS;
if (chardevStdioLogd)
if (!(memProps = qemuBuildShmemBackendMemProps(shmem)))
return -1;
- rc = qemuBuildObjectCommandlineFromJSON(&buf, memProps, qemuCaps);
-
- if (rc < 0)
+ if (qemuBuildObjectCommandlineFromJSON(cmd, memProps, qemuCaps) < 0)
return -1;
- virCommandAddArg(cmd, "-object");
- virCommandAddArgBuffer(cmd, &buf);
-
G_GNUC_FALLTHROUGH;
case VIR_DOMAIN_SHMEM_MODEL_IVSHMEM_DOORBELL:
devstr = qemuBuildShmemDevStr(def, shmem, qemuCaps);
virDomainSEVDef *sev)
{
g_autoptr(virJSONValue) props = NULL;
- g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
qemuDomainObjPrivate *priv = vm->privateData;
g_autofree char *dhpath = NULL;
g_autofree char *sessionpath = NULL;
NULL) < 0)
return -1;
- if (qemuBuildObjectCommandlineFromJSON(&buf, props, priv->qemuCaps) < 0)
+ if (qemuBuildObjectCommandlineFromJSON(cmd, props, priv->qemuCaps) < 0)
return -1;
- virCommandAddArg(cmd, "-object");
- virCommandAddArgBuffer(cmd, &buf);
return 0;
}
qemuBuildPVCommandLine(virDomainObj *vm, virCommand *cmd)
{
g_autoptr(virJSONValue) props = NULL;
- g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
qemuDomainObjPrivate *priv = vm->privateData;
if (qemuMonitorCreateObjectProps(&props, "s390-pv-guest", "lsec0",
NULL) < 0)
return -1;
- if (qemuBuildObjectCommandlineFromJSON(&buf, props, priv->qemuCaps) < 0)
+ if (qemuBuildObjectCommandlineFromJSON(cmd, props, priv->qemuCaps) < 0)
return -1;
- virCommandAddArg(cmd, "-object");
- virCommandAddArgBuffer(cmd, &buf);
return 0;
}
const virDomainDef *def,
qemuDomainObjPrivate *priv)
{
- g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
g_autoptr(virJSONValue) props = NULL;
if (!virDomainDefHasManagedPR(def))
if (!(props = qemuBuildPRManagedManagerInfoProps(priv)))
return -1;
- if (qemuBuildObjectCommandlineFromJSON(&buf, props, priv->qemuCaps) < 0)
+ if (qemuBuildObjectCommandlineFromJSON(cmd, props, priv->qemuCaps) < 0)
return -1;
- virCommandAddArg(cmd, "-object");
- virCommandAddArgBuffer(cmd, &buf);
-
return 0;
}
virQEMUDriver *driver,
virDomainObj *vm)
{
- g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
g_autoptr(virJSONValue) props = NULL;
qemuDomainObjPrivate *priv = QEMU_DOMAIN_PRIVATE(vm);
if (!(props = qemuBuildDBusVMStateInfoProps(driver, vm)))
return -1;
- if (qemuBuildObjectCommandlineFromJSON(&buf, props, priv->qemuCaps) < 0)
+ if (qemuBuildObjectCommandlineFromJSON(cmd, props, priv->qemuCaps) < 0)
return -1;
- virCommandAddArg(cmd, "-object");
- virCommandAddArgBuffer(cmd, &buf);
-
priv->dbusVMState = true;
return 0;