]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Add @nodemaskRet argument to qemuBuildMemoryBackendProps()
authorMichal Privoznik <mprivozn@redhat.com>
Tue, 7 Mar 2023 11:02:11 +0000 (12:02 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Wed, 15 Mar 2023 11:46:49 +0000 (12:46 +0100)
While it's true that anybody who's interested in getting
.host-nodes attribute value can just use
virJSONValueObjectGetArray() (and that's exactly what
qemuBuildThreadContextProps() is doing, btw), if somebody is
interested in getting the actual virBitmap, they would have to
parse the JSON array.

Instead, introduce an argument to qemuBuildMemoryBackendProps()
which is set to corresponding value used when formatting the
attribute.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Kristina Hanicova <khanicov@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
src/qemu/qemu_command.c
src/qemu/qemu_command.h
src/qemu/qemu_hotplug.c

index b0cb252d0b195ae90802fbf2224c7dadd58fb1e1..15ba3c02d1b8be82b5907e62261c52fbf71b9770 100644 (file)
@@ -3240,6 +3240,7 @@ qemuBuildMemoryGetPagesize(virQEMUDriverConfig *cfg,
  * @def: domain definition object
  * @mem: memory definition object
  * @force: forcibly use one of the backends
+ * @nodemaskRet: [out] bitmap used to format .host-nodes attribute
  *
  * Creates a configuration object that represents memory backend of given guest
  * NUMA node (domain @def and @mem). Use @priv->autoNodeset to fine tune the
@@ -3264,7 +3265,8 @@ qemuBuildMemoryBackendProps(virJSONValue **backendProps,
                             const virDomainDef *def,
                             const virDomainMemoryDef *mem,
                             bool force,
-                            bool systemMemory)
+                            bool systemMemory,
+                            virBitmap **nodemaskRet)
 {
     const char *backendType = "memory-backend-file";
     virDomainNumatuneMemMode mode;
@@ -3451,6 +3453,9 @@ qemuBuildMemoryBackendProps(virJSONValue **backendProps,
                                       "S:policy", qemuNumaPolicyTypeToString(mode),
                                       NULL) < 0)
                 return -1;
+
+            if (nodemaskRet)
+                *nodemaskRet = nodemask;
         }
     }
 
@@ -3504,7 +3509,8 @@ qemuBuildMemoryCellBackendProps(virDomainDef *def,
     mem.targetNode = cell;
     mem.info.alias = alias;
 
-    return qemuBuildMemoryBackendProps(props, alias, cfg, priv, def, &mem, false, false);
+    return qemuBuildMemoryBackendProps(props, alias, cfg, priv,
+                                       def, &mem, false, false, NULL);
 }
 
 
@@ -3528,7 +3534,7 @@ qemuBuildMemoryDimmBackendStr(virCommand *cmd,
     alias = g_strdup_printf("mem%s", mem->info.alias);
 
     if (qemuBuildMemoryBackendProps(&props, alias, cfg,
-                                    priv, def, mem, true, false) < 0)
+                                    priv, def, mem, true, false, NULL) < 0)
         return -1;
 
     if (qemuBuildThreadContextProps(&tcProps, &props, priv) < 0)
@@ -7179,7 +7185,7 @@ qemuBuildMemCommandLineMemoryDefaultBackend(virCommand *cmd,
     mem.info.alias = (char *) defaultRAMid;
 
     if (qemuBuildMemoryBackendProps(&props, defaultRAMid, cfg,
-                                    priv, def, &mem, false, true) < 0)
+                                    priv, def, &mem, false, true, NULL) < 0)
         return -1;
 
     if (qemuBuildThreadContextProps(&tcProps, &props, priv) < 0)
index c49096a057a462bea77aa292b6c2bd6096eeb129..9074822bc510aae1ed04e35beecad4bce857a777 100644 (file)
@@ -22,6 +22,7 @@
 #pragma once
 
 #include "domain_conf.h"
+#include "virbitmap.h"
 #include "vircommand.h"
 #include "virenum.h"
 #include "qemu_block.h"
@@ -140,7 +141,8 @@ int qemuBuildMemoryBackendProps(virJSONValue **backendProps,
                                 const virDomainDef *def,
                                 const virDomainMemoryDef *mem,
                                 bool force,
-                                bool systemMemory);
+                                bool systemMemory,
+                                virBitmap **nodemaskRet);
 
 virJSONValue *
 qemuBuildMemoryDeviceProps(virQEMUDriverConfig *cfg,
index da175258249bec2e50b079b8b430607397fa5041..b9f6a031def329116563dcd08e2a3818715ce862 100644 (file)
@@ -2280,7 +2280,7 @@ qemuDomainAttachMemory(virQEMUDriver *driver,
         goto cleanup;
 
     if (qemuBuildMemoryBackendProps(&props, objalias, cfg,
-                                    priv, vm->def, mem, true, false) < 0)
+                                    priv, vm->def, mem, true, false, NULL) < 0)
         goto cleanup;
 
     if (qemuProcessBuildDestroyMemoryPaths(driver, vm, mem, true) < 0)