From nobody Sun Feb 8 23:26:44 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.25 as permitted sender) client-ip=209.132.183.25; envelope-from=libvir-list-bounces@redhat.com; helo=mx4-phx2.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.25 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by mx.zohomail.com with SMTPS id 148907581274582.04568340820936; Thu, 9 Mar 2017 08:10:12 -0800 (PST) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v29G6qtf017852; Thu, 9 Mar 2017 11:06:52 -0500 Received: from smtp.corp.redhat.com (int-mx16.intmail.prod.int.phx2.redhat.com [10.5.11.28]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v29G6Y5L032391 for ; Thu, 9 Mar 2017 11:06:34 -0500 Received: by smtp.corp.redhat.com (Postfix) id 5E46E2D655; Thu, 9 Mar 2017 16:06:34 +0000 (UTC) Received: from moe.brq.redhat.com (dhcp129-131.brq.redhat.com [10.34.129.131]) by smtp.corp.redhat.com (Postfix) with ESMTP id D955D2D653 for ; Thu, 9 Mar 2017 16:06:33 +0000 (UTC) From: Michal Privoznik To: libvir-list@redhat.com Date: Thu, 9 Mar 2017 17:06:13 +0100 Message-Id: <4640900046d99c303e31dc573838fde949a0215c.1489075458.git.mprivozn@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.74 on 10.5.11.28 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v3 04/17] qemuBuildMemoryBackendStr: Reorder args and update comment 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-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Frankly, this function is one big mess. A lot of arguments, complicated behaviour. It's really surprising that arguments were in random order (input and output arguments were mixed together), the documentation was outdated, the description of return values was bogus. Signed-off-by: Michal Privoznik --- src/qemu/qemu_command.c | 54 +++++++++++++++++++++++++++------------------= ---- src/qemu/qemu_command.h | 12 +++++------ src/qemu/qemu_hotplug.c | 4 ++-- 3 files changed, 38 insertions(+), 32 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index cbe3e3492..0cca99567 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -3078,31 +3078,38 @@ qemuBuildControllerDevCommandLine(virCommandPtr cmd, =20 /** * qemuBuildMemoryBackendStr: - * @mem: memory definition object - * @autoNodeset: fallback nodeset in case of automatic numa placement - * @def: domain definition object - * @qemuCaps: qemu capabilities object + * @backendProps: [out] constructed object + * @backendType: [out] type of the backennd used * @cfg: qemu driver config object - * @aliasPrefix: prefix string of the alias (to allow for multiple fronten= ts) - * @id: index of the device (to construct the alias) - * @backendStr: returns the object string + * @qemuCaps: qemu capabilities object + * @def: domain definition object + * @mem: memory definition object + * @autoNodeset: fallback nodeset in case of automatic NUMA placement + * @force: forcibly use one of the backends * - * Formats the configuration string for the memory device backend according - * to the configuration. @pagesize and @hostNodes can be used to override = the - * default source configuration, both are optional. + * Creates a configuration object that represents memory backend of given = guest + * NUMA node (domain @def and @mem). Use @autoNodeset to fine tune the + * placement of the memory on the host NUMA nodes. * - * Returns 0 on success, 1 if only the implicit memory-device-ram with no - * other configuration was used (to detect legacy configurations). Returns - * -1 in case of an error. + * By default, if no memory-backend-* object is necessary to fulfil the gu= est + * configuration value of 1 is returned. This behaviour can be suppressed = by + * setting @force to true in which case 0 would be returned. + * + * Then, if one of the two memory-backend-* should be used, the @qemuCaps = is + * consulted to check if qemu does support it. + * + * Returns: 0 on success, + * 1 on success and if there's no need to use memory-backend-* + * -1 on error. */ int -qemuBuildMemoryBackendStr(virDomainMemoryDefPtr mem, - virBitmapPtr autoNodeset, - virDomainDefPtr def, - virQEMUCapsPtr qemuCaps, - virQEMUDriverConfigPtr cfg, +qemuBuildMemoryBackendStr(virJSONValuePtr *backendProps, const char **backendType, - virJSONValuePtr *backendProps, + virQEMUDriverConfigPtr cfg, + virQEMUCapsPtr qemuCaps, + virDomainDefPtr def, + virDomainMemoryDefPtr mem, + virBitmapPtr autoNodeset, bool force) { virDomainHugePagePtr master_hugepage =3D NULL; @@ -3326,8 +3333,8 @@ qemuBuildMemoryCellBackendStr(virDomainDefPtr def, if (virAsprintf(&alias, "ram-node%zu", cell) < 0) goto cleanup; =20 - if ((rc =3D qemuBuildMemoryBackendStr(&mem, auto_nodeset, def, qemuCap= s, - cfg, &backendType, &props, false))= < 0) + if ((rc =3D qemuBuildMemoryBackendStr(&props, &backendType, cfg, qemuC= aps, + def, &mem, auto_nodeset, false)) <= 0) goto cleanup; =20 if (!(*backendStr =3D virQEMUBuildObjectCommandlineFromJSON(backendTyp= e, @@ -3366,9 +3373,8 @@ qemuBuildMemoryDimmBackendStr(virDomainMemoryDefPtr m= em, if (virAsprintf(&alias, "mem%s", mem->info.alias) < 0) goto cleanup; =20 - if (qemuBuildMemoryBackendStr(mem, auto_nodeset, - def, qemuCaps, cfg, - &backendType, &props, true) < 0) + if (qemuBuildMemoryBackendStr(&props, &backendType, cfg, qemuCaps, + def, mem, auto_nodeset, true) < 0) goto cleanup; =20 ret =3D virQEMUBuildObjectCommandlineFromJSON(backendType, alias, prop= s); diff --git a/src/qemu/qemu_command.h b/src/qemu/qemu_command.h index 9b2b81f55..f3ed9e7e4 100644 --- a/src/qemu/qemu_command.h +++ b/src/qemu/qemu_command.h @@ -124,13 +124,13 @@ char *qemuBuildControllerDevStr(const virDomainDef *d= omainDef, virQEMUCapsPtr qemuCaps, int *nusbcontroller); =20 -int qemuBuildMemoryBackendStr(virDomainMemoryDefPtr mem, - virBitmapPtr autoNodeset, - virDomainDefPtr def, - virQEMUCapsPtr qemuCaps, - virQEMUDriverConfigPtr cfg, +int qemuBuildMemoryBackendStr(virJSONValuePtr *backendProps, const char **backendType, - virJSONValuePtr *backendProps, + virQEMUDriverConfigPtr cfg, + virQEMUCapsPtr qemuCaps, + virDomainDefPtr def, + virDomainMemoryDefPtr mem, + virBitmapPtr autoNodeset, bool force); =20 char *qemuBuildMemoryDeviceStr(virDomainMemoryDefPtr mem); diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 39710db19..4e416b12e 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -2240,8 +2240,8 @@ qemuDomainAttachMemory(virQEMUDriverPtr driver, if (!(devstr =3D qemuBuildMemoryDeviceStr(mem))) goto cleanup; =20 - if (qemuBuildMemoryBackendStr(mem, NULL, vm->def, priv->qemuCaps, - cfg, &backendType, &props, true) < 0) + if (qemuBuildMemoryBackendStr(&props, &backendType, cfg, + priv->qemuCaps, vm->def, mem, NULL, true= ) < 0) goto cleanup; =20 if (virDomainMemoryInsert(vm->def, mem) < 0) { --=20 2.11.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list