]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemuBuildNumaCommandLine: Separate out building of CPU list
authorMichal Privoznik <mprivozn@redhat.com>
Wed, 20 May 2020 10:00:23 +0000 (12:00 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Fri, 1 Oct 2021 08:52:35 +0000 (10:52 +0200)
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
src/qemu/qemu_command.c

index 247ac86e33f56d7509b8f5d7c646a56772c5fb22..402ff4421396aa29f7f12b0c4f852ec4b407d07d 100644 (file)
@@ -7281,6 +7281,31 @@ qemuBuildNumaHMATCommandLine(virCommand *cmd,
 }
 
 
+static int
+qemuBuildNumaCPUs(virBuffer *buf,
+                  virBitmap *cpu)
+{
+    g_autofree char *cpumask = NULL;
+    char *tmpmask = NULL;
+    char *next = NULL;
+
+    if (!cpu)
+        return 0;
+
+    if (!(cpumask = virBitmapFormat(cpu)))
+        return -1;
+
+    for (tmpmask = cpumask; tmpmask; tmpmask = next) {
+        if ((next = strchr(tmpmask, ',')))
+            *(next++) = '\0';
+        virBufferAddLit(buf, ",cpus=");
+        virBufferAdd(buf, tmpmask, -1);
+    }
+
+    return 0;
+}
+
+
 static int
 qemuBuildNumaCommandLine(virQEMUDriverConfig *cfg,
                          virDomainDef *def,
@@ -7347,7 +7372,6 @@ qemuBuildNumaCommandLine(virQEMUDriverConfig *cfg,
     }
 
     for (i = 0; i < ncells; i++) {
-        virBitmap *cpumask = virDomainNumaGetNodeCpumask(def->numa, i);
         ssize_t initiator = virDomainNumaGetNodeInitiator(def->numa, i);
 
         if (needBackend) {
@@ -7358,21 +7382,8 @@ qemuBuildNumaCommandLine(virQEMUDriverConfig *cfg,
         virCommandAddArg(cmd, "-numa");
         virBufferAsprintf(&buf, "node,nodeid=%zu", i);
 
-        if (cpumask) {
-            g_autofree char *cpumaskStr = NULL;
-            char *next = NULL;
-            char *tmpmask;
-
-            if (!(cpumaskStr = virBitmapFormat(cpumask)))
-                goto cleanup;
-
-            for (tmpmask = cpumaskStr; tmpmask; tmpmask = next) {
-                if ((next = strchr(tmpmask, ',')))
-                    *(next++) = '\0';
-                virBufferAddLit(&buf, ",cpus=");
-                virBufferAdd(&buf, tmpmask, -1);
-            }
-        }
+        if (qemuBuildNumaCPUs(&buf, virDomainNumaGetNodeCpumask(def->numa, i)) < 0)
+            goto cleanup;
 
         if (hmat) {
             if (initiator < 0)