From nobody Wed May 14 20:22:12 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1527700053805122.19294905234449; Wed, 30 May 2018 10:07:33 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 013AAA68C2; Wed, 30 May 2018 17:07:32 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C609417015; Wed, 30 May 2018 17:07:31 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 4BE63180BA80; Wed, 30 May 2018 17:07:31 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w4UH6srF007321 for ; Wed, 30 May 2018 13:06:54 -0400 Received: by smtp.corp.redhat.com (Postfix) id B20C22026DEF; Wed, 30 May 2018 17:06:54 +0000 (UTC) Received: from angien.brq.redhat.com (unknown [10.43.2.136]) by smtp.corp.redhat.com (Postfix) with ESMTP id 56F6A2026DFD for ; Wed, 30 May 2018 17:06:54 +0000 (UTC) From: Peter Krempa To: libvir-list@redhat.com Date: Wed, 30 May 2018 19:06:31 +0200 Message-Id: In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 07/13] qemu: hotplug: Refactor RNG props formatting to use qemuMonitorCreateObjectProps X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Wed, 30 May 2018 17:07:32 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Peter Krempa Reviewed-by: J=EF=BF=BDn Tomko --- src/qemu/qemu_command.c | 61 +++++++++++++++++++--------------------------= ---- src/qemu/qemu_command.h | 1 - src/qemu/qemu_hotplug.c | 15 +++--------- 3 files changed, 27 insertions(+), 50 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 00fb1a3b32..c3573982d6 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -5495,12 +5495,15 @@ qemuBuildRNGBackendChrdevStr(virLogManagerPtr logMa= nager, int qemuBuildRNGBackendProps(virDomainRNGDefPtr rng, virQEMUCapsPtr qemuCaps, - const char **type, virJSONValuePtr *props) { + char *objAlias =3D NULL; char *charBackendAlias =3D NULL; int ret =3D -1; + if (virAsprintf(&objAlias, "obj%s", rng->info.alias) < 0) + goto cleanup; + switch ((virDomainRNGBackend) rng->backend) { case VIR_DOMAIN_RNG_BACKEND_RANDOM: if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_RNG_RANDOM)) { @@ -5510,11 +5513,11 @@ qemuBuildRNGBackendProps(virDomainRNGDefPtr rng, goto cleanup; } - *type =3D "rng-random"; - - if (virJSONValueObjectCreate(props, "s:filename", rng->source.file, - NULL) < 0) + if (qemuMonitorCreateObjectProps(props, "rng-random", objAlias, + "s:filename", rng->source.file, + NULL) < 0) goto cleanup; + break; case VIR_DOMAIN_RNG_BACKEND_EGD: @@ -5525,13 +5528,12 @@ qemuBuildRNGBackendProps(virDomainRNGDefPtr rng, goto cleanup; } - *type =3D "rng-egd"; - if (!(charBackendAlias =3D qemuAliasChardevFromDevAlias(rng->info.= alias))) goto cleanup; - if (virJSONValueObjectCreate(props, "s:chardev", charBackendAlias, - NULL) < 0) + if (qemuMonitorCreateObjectProps(props, "rng-egd", objAlias, + "s:chardev", charBackendAlias, + NULL) < 0) goto cleanup; break; @@ -5545,35 +5547,12 @@ qemuBuildRNGBackendProps(virDomainRNGDefPtr rng, ret =3D 0; cleanup: + VIR_FREE(objAlias); VIR_FREE(charBackendAlias); return ret; } -static char * -qemuBuildRNGBackendStr(virDomainRNGDefPtr rng, - virQEMUCapsPtr qemuCaps) -{ - const char *type =3D NULL; - char *alias =3D NULL; - virJSONValuePtr props =3D NULL; - char *ret =3D NULL; - - if (virAsprintf(&alias, "obj%s", rng->info.alias) < 0) - goto cleanup; - - if (qemuBuildRNGBackendProps(rng, qemuCaps, &type, &props) < 0) - goto cleanup; - - ret =3D virQEMUBuildObjectCommandlineFromJSONType(type, alias, props); - - cleanup: - VIR_FREE(alias); - virJSONValueFree(props); - return ret; -} - - char * qemuBuildRNGDevStr(const virDomainDef *def, virDomainRNGDefPtr dev, @@ -5641,8 +5620,11 @@ qemuBuildRNGCommandLine(virLogManagerPtr logManager, size_t i; for (i =3D 0; i < def->nrngs; i++) { + virJSONValuePtr props; + virBuffer buf =3D VIR_BUFFER_INITIALIZER; virDomainRNGDefPtr rng =3D def->rngs[i]; char *tmp; + int rc; if (!rng->info.alias) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", @@ -5661,12 +5643,17 @@ qemuBuildRNGCommandLine(virLogManagerPtr logManager, VIR_FREE(tmp); } - /* add the RNG source backend */ - if (!(tmp =3D qemuBuildRNGBackendStr(rng, qemuCaps))) + if (qemuBuildRNGBackendProps(rng, qemuCaps, &props) < 0) return -1; - virCommandAddArgList(cmd, "-object", tmp, NULL); - VIR_FREE(tmp); + rc =3D virQEMUBuildObjectCommandlineFromJSON(&buf, props); + virJSONValueFree(props); + + if (rc < 0) + return -1; + + virCommandAddArg(cmd, "-object"); + virCommandAddArgBuffer(cmd, &buf); /* add the device */ if (!(tmp =3D qemuBuildRNGDevStr(def, rng, qemuCaps))) diff --git a/src/qemu/qemu_command.h b/src/qemu/qemu_command.h index 2b2168d1ee..d2ee01e810 100644 --- a/src/qemu/qemu_command.h +++ b/src/qemu/qemu_command.h @@ -142,7 +142,6 @@ char *qemuBuildRNGDevStr(const virDomainDef *def, virQEMUCapsPtr qemuCaps); int qemuBuildRNGBackendProps(virDomainRNGDefPtr rng, virQEMUCapsPtr qemuCaps, - const char **type, virJSONValuePtr *props); int qemuOpenPCIConfig(virDomainHostdevDefPtr dev); diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 5892c18e5e..238d4b9cc5 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -1979,11 +1979,8 @@ qemuDomainAttachRNGDevice(virQEMUDriverPtr driver, bool teardowncgroup =3D false; bool teardowndevice =3D false; bool chardevAdded =3D false; - bool objAdded =3D false; virJSONValuePtr props =3D NULL; - const char *type; int ret =3D -1; - int rv; if (qemuAssignDeviceRNGAlias(vm->def, rng) < 0) goto cleanup; @@ -2007,10 +2004,7 @@ qemuDomainAttachRNGDevice(virQEMUDriverPtr driver, if (!(devstr =3D qemuBuildRNGDevStr(vm->def, rng, priv->qemuCaps))) goto cleanup; - if (qemuBuildRNGBackendProps(rng, priv->qemuCaps, &type, &props) < 0) - goto cleanup; - - if (virAsprintf(&objAlias, "obj%s", rng->info.alias) < 0) + if (qemuBuildRNGBackendProps(rng, priv->qemuCaps, &props) < 0) goto cleanup; if (!(charAlias =3D qemuAliasChardevFromDevAlias(rng->info.alias))) @@ -2032,11 +2026,8 @@ qemuDomainAttachRNGDevice(virQEMUDriverPtr driver, goto exit_monitor; chardevAdded =3D true; - rv =3D qemuMonitorAddObjectType(priv->mon, type, objAlias, props); - props =3D NULL; /* qemuMonitorAddObjectType consumes */ - if (rv < 0) + if (qemuMonitorAddObject(priv->mon, &props, &objAlias) < 0) goto exit_monitor; - objAdded =3D true; if (qemuMonitorAddDevice(priv->mon, devstr) < 0) goto exit_monitor; @@ -2071,7 +2062,7 @@ qemuDomainAttachRNGDevice(virQEMUDriverPtr driver, exit_monitor: virErrorPreserveLast(&orig_err); - if (objAdded) + if (objAlias) ignore_value(qemuMonitorDelObject(priv->mon, objAlias)); if (rng->backend =3D=3D VIR_DOMAIN_RNG_BACKEND_EGD && chardevAdded) ignore_value(qemuMonitorDetachCharDev(priv->mon, charAlias)); --=20 2.16.2 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list