Pablo Greco 40546a
From c59ebd3e7bd1307ef6907a830dc9617eb6fe39b2 Mon Sep 17 00:00:00 2001
Pablo Greco 40546a
Message-Id: <c59ebd3e7bd1307ef6907a830dc9617eb6fe39b2@dist-git>
Pablo Greco 40546a
From: Michal Privoznik <mprivozn@redhat.com>
Pablo Greco 40546a
Date: Tue, 18 Dec 2018 11:47:35 +0100
Pablo Greco 40546a
Subject: [PATCH] qemuBuildMemoryBackendProps: Pass @priv instead of its
Pablo Greco 40546a
 individual members
Pablo Greco 40546a
MIME-Version: 1.0
Pablo Greco 40546a
Content-Type: text/plain; charset=UTF-8
Pablo Greco 40546a
Content-Transfer-Encoding: 8bit
Pablo Greco 40546a
Pablo Greco 40546a
https://bugzilla.redhat.com/show_bug.cgi?id=1624223
Pablo Greco 40546a
Pablo Greco 40546a
So far we have two arguments that we are passing to
Pablo Greco 40546a
qemuBuildMemoryBackendProps() and that are taken from domain
Pablo Greco 40546a
private data: @qemuCaps and @autoNodeset. In the next commit I
Pablo Greco 40546a
will use one more item from there. Therefore, instead of having
Pablo Greco 40546a
it as yet another argument to the function, pass pointer to the
Pablo Greco 40546a
private data object.
Pablo Greco 40546a
Pablo Greco 40546a
There is one change in qemuDomainAttachMemory() where previously
Pablo Greco 40546a
@autoNodeset was NULL but now is priv->autoNodeset (which may be
Pablo Greco 40546a
set). This is safe to do as @autoNodeset is advisory only.
Pablo Greco 40546a
Pablo Greco 40546a
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Pablo Greco 40546a
Reviewed-by: John Ferlan <jferlan@redhat.com>
Pablo Greco 40546a
(cherry picked from commit 9923584c628e160705124ad81d782a7214aac8d3)
Pablo Greco 40546a
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Pablo Greco 40546a
Pablo Greco 40546a
Conflicts:
Pablo Greco 40546a
src/qemu/qemu_command.c: Context mostly, as memfd backend is not
Pablo Greco 40546a
                         backported (24b74d187ca).
Pablo Greco 40546a
Pablo Greco 40546a
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Pablo Greco 40546a
Message-Id: <71d56cdc7e5cdd0c9b664ded2a4cf93e3e9d38b0.1545129996.git.mprivozn@redhat.com>
Pablo Greco 40546a
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Pablo Greco 40546a
---
Pablo Greco 40546a
 src/qemu/qemu_command.c | 28 +++++++++++++---------------
Pablo Greco 40546a
 src/qemu/qemu_command.h |  3 +--
Pablo Greco 40546a
 src/qemu/qemu_hotplug.c |  2 +-
Pablo Greco 40546a
 3 files changed, 15 insertions(+), 18 deletions(-)
Pablo Greco 40546a
Pablo Greco 40546a
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
Pablo Greco 40546a
index c06f396b44..fa2b904239 100644
Pablo Greco 40546a
--- a/src/qemu/qemu_command.c
Pablo Greco 40546a
+++ b/src/qemu/qemu_command.c
Pablo Greco 40546a
@@ -3041,22 +3041,21 @@ qemuBuildControllerDevCommandLine(virCommandPtr cmd,
Pablo Greco 40546a
  * @backendProps: [out] constructed object
Pablo Greco 40546a
  * @alias: alias of the device
Pablo Greco 40546a
  * @cfg: qemu driver config object
Pablo Greco 40546a
- * @qemuCaps: qemu capabilities object
Pablo Greco 40546a
+ * @priv: pointer to domain private object
Pablo Greco 40546a
  * @def: domain definition object
Pablo Greco 40546a
  * @mem: memory definition object
Pablo Greco 40546a
- * @autoNodeset: fallback nodeset in case of automatic NUMA placement
Pablo Greco 40546a
  * @force: forcibly use one of the backends
Pablo Greco 40546a
  *
Pablo Greco 40546a
  * Creates a configuration object that represents memory backend of given guest
Pablo Greco 40546a
- * NUMA node (domain @def and @mem). Use @autoNodeset to fine tune the
Pablo Greco 40546a
+ * NUMA node (domain @def and @mem). Use @priv->autoNodeset to fine tune the
Pablo Greco 40546a
  * placement of the memory on the host NUMA nodes.
Pablo Greco 40546a
  *
Pablo Greco 40546a
  * By default, if no memory-backend-* object is necessary to fulfil the guest
Pablo Greco 40546a
  * configuration value of 1 is returned. This behaviour can be suppressed by
Pablo Greco 40546a
  * setting @force to true in which case 0 would be returned.
Pablo Greco 40546a
  *
Pablo Greco 40546a
- * Then, if one of the two memory-backend-* should be used, the @qemuCaps is
Pablo Greco 40546a
- * consulted to check if qemu does support it.
Pablo Greco 40546a
+ * Then, if one of the two memory-backend-* should be used, the @priv->qemuCaps
Pablo Greco 40546a
+ * is consulted to check if qemu does support it.
Pablo Greco 40546a
  *
Pablo Greco 40546a
  * Returns: 0 on success,
Pablo Greco 40546a
  *          1 on success and if there's no need to use memory-backend-*
Pablo Greco 40546a
@@ -3066,10 +3065,9 @@ int
Pablo Greco 40546a
 qemuBuildMemoryBackendProps(virJSONValuePtr *backendProps,
Pablo Greco 40546a
                             const char *alias,
Pablo Greco 40546a
                             virQEMUDriverConfigPtr cfg,
Pablo Greco 40546a
-                            virQEMUCapsPtr qemuCaps,
Pablo Greco 40546a
+                            qemuDomainObjPrivatePtr priv,
Pablo Greco 40546a
                             virDomainDefPtr def,
Pablo Greco 40546a
                             virDomainMemoryDefPtr mem,
Pablo Greco 40546a
-                            virBitmapPtr autoNodeset,
Pablo Greco 40546a
                             bool force)
Pablo Greco 40546a
 {
Pablo Greco 40546a
     const char *backendType = "memory-backend-file";
Pablo Greco 40546a
@@ -3207,7 +3205,7 @@ qemuBuildMemoryBackendProps(virJSONValuePtr *backendProps,
Pablo Greco 40546a
 
Pablo Greco 40546a
         if (!mem->nvdimmPath &&
Pablo Greco 40546a
             discard == VIR_TRISTATE_BOOL_YES) {
Pablo Greco 40546a
-            if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_FILE_DISCARD)) {
Pablo Greco 40546a
+            if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_OBJECT_MEMORY_FILE_DISCARD)) {
Pablo Greco 40546a
                 virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
Pablo Greco 40546a
                                _("this QEMU doesn't support memory discard"));
Pablo Greco 40546a
                 goto cleanup;
Pablo Greco 40546a
@@ -3244,7 +3242,7 @@ qemuBuildMemoryBackendProps(virJSONValuePtr *backendProps,
Pablo Greco 40546a
     if (mem->sourceNodes) {
Pablo Greco 40546a
         nodemask = mem->sourceNodes;
Pablo Greco 40546a
     } else {
Pablo Greco 40546a
-        if (virDomainNumatuneMaybeGetNodeset(def->numa, autoNodeset,
Pablo Greco 40546a
+        if (virDomainNumatuneMaybeGetNodeset(def->numa, priv->autoNodeset,
Pablo Greco 40546a
                                              &nodemask, mem->targetNode) < 0)
Pablo Greco 40546a
             goto cleanup;
Pablo Greco 40546a
     }
Pablo Greco 40546a
@@ -3270,13 +3268,13 @@ qemuBuildMemoryBackendProps(virJSONValuePtr *backendProps,
Pablo Greco 40546a
     } else {
Pablo Greco 40546a
         /* otherwise check the required capability */
Pablo Greco 40546a
         if (STREQ(backendType, "memory-backend-file") &&
Pablo Greco 40546a
-            !virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_FILE)) {
Pablo Greco 40546a
+            !virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_OBJECT_MEMORY_FILE)) {
Pablo Greco 40546a
             virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
Pablo Greco 40546a
                            _("this qemu doesn't support the "
Pablo Greco 40546a
                              "memory-backend-file object"));
Pablo Greco 40546a
             goto cleanup;
Pablo Greco 40546a
         } else if (STREQ(backendType, "memory-backend-ram") &&
Pablo Greco 40546a
-                   !virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_RAM)) {
Pablo Greco 40546a
+                   !virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_OBJECT_MEMORY_RAM)) {
Pablo Greco 40546a
             virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
Pablo Greco 40546a
                            _("this qemu doesn't support the "
Pablo Greco 40546a
                              "memory-backend-ram object"));
Pablo Greco 40546a
@@ -3319,8 +3317,8 @@ qemuBuildMemoryCellBackendStr(virDomainDefPtr def,
Pablo Greco 40546a
     mem.targetNode = cell;
Pablo Greco 40546a
     mem.info.alias = alias;
Pablo Greco 40546a
 
Pablo Greco 40546a
-    if ((rc = qemuBuildMemoryBackendProps(&props, alias, cfg, priv->qemuCaps,
Pablo Greco 40546a
-                                          def, &mem, priv->autoNodeset, false)) < 0)
Pablo Greco 40546a
+    if ((rc = qemuBuildMemoryBackendProps(&props, alias, cfg,
Pablo Greco 40546a
+                                          priv, def, &mem, false)) < 0)
Pablo Greco 40546a
         goto cleanup;
Pablo Greco 40546a
 
Pablo Greco 40546a
     if (virQEMUBuildObjectCommandlineFromJSON(buf, props) < 0)
Pablo Greco 40546a
@@ -3356,8 +3354,8 @@ qemuBuildMemoryDimmBackendStr(virBufferPtr buf,
Pablo Greco 40546a
     if (virAsprintf(&alias, "mem%s", mem->info.alias) < 0)
Pablo Greco 40546a
         goto cleanup;
Pablo Greco 40546a
 
Pablo Greco 40546a
-    if (qemuBuildMemoryBackendProps(&props, alias, cfg, priv->qemuCaps,
Pablo Greco 40546a
-                                    def, mem, priv->autoNodeset, true) < 0)
Pablo Greco 40546a
+    if (qemuBuildMemoryBackendProps(&props, alias, cfg,
Pablo Greco 40546a
+                                    priv, def, mem, true) < 0)
Pablo Greco 40546a
         goto cleanup;
Pablo Greco 40546a
 
Pablo Greco 40546a
     if (virQEMUBuildObjectCommandlineFromJSON(buf, props) < 0)
Pablo Greco 40546a
diff --git a/src/qemu/qemu_command.h b/src/qemu/qemu_command.h
Pablo Greco 40546a
index e8cd8ed04e..bf46bde48f 100644
Pablo Greco 40546a
--- a/src/qemu/qemu_command.h
Pablo Greco 40546a
+++ b/src/qemu/qemu_command.h
Pablo Greco 40546a
@@ -125,10 +125,9 @@ int qemuBuildControllerDevStr(const virDomainDef *domainDef,
Pablo Greco 40546a
 int qemuBuildMemoryBackendProps(virJSONValuePtr *backendProps,
Pablo Greco 40546a
                                 const char *alias,
Pablo Greco 40546a
                                 virQEMUDriverConfigPtr cfg,
Pablo Greco 40546a
-                                virQEMUCapsPtr qemuCaps,
Pablo Greco 40546a
+                                qemuDomainObjPrivatePtr priv,
Pablo Greco 40546a
                                 virDomainDefPtr def,
Pablo Greco 40546a
                                 virDomainMemoryDefPtr mem,
Pablo Greco 40546a
-                                virBitmapPtr autoNodeset,
Pablo Greco 40546a
                                 bool force);
Pablo Greco 40546a
 
Pablo Greco 40546a
 char *qemuBuildMemoryDeviceStr(virDomainMemoryDefPtr mem);
Pablo Greco 40546a
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
Pablo Greco 40546a
index 410cdca3c5..5b9a5683bb 100644
Pablo Greco 40546a
--- a/src/qemu/qemu_hotplug.c
Pablo Greco 40546a
+++ b/src/qemu/qemu_hotplug.c
Pablo Greco 40546a
@@ -2121,7 +2121,7 @@ qemuDomainAttachMemory(virQEMUDriverPtr driver,
Pablo Greco 40546a
         goto cleanup;
Pablo Greco 40546a
 
Pablo Greco 40546a
     if (qemuBuildMemoryBackendProps(&props, objalias, cfg,
Pablo Greco 40546a
-                                    priv->qemuCaps, vm->def, mem, NULL, true) < 0)
Pablo Greco 40546a
+                                    priv, vm->def, mem, true) < 0)
Pablo Greco 40546a
         goto cleanup;
Pablo Greco 40546a
 
Pablo Greco 40546a
     if (qemuProcessBuildDestroyMemoryPaths(driver, vm, mem, true) < 0)
Pablo Greco 40546a
-- 
Pablo Greco 40546a
2.22.0
Pablo Greco 40546a