[libvirt] [PATCH 19/24] qemu: command: Unify retrieval of NUMA cell count in qemuBuildNumaArgStr

Peter Krempa pkrempa at redhat.com
Mon Feb 16 18:52:07 UTC 2015


The function uses the cell count in 6 places. Add a temp variable to
hold the count as it will greatly simplify the refactor.
---
 src/qemu/qemu_command.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 8b660f0..65d8874 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -7118,6 +7118,7 @@ qemuBuildNumaArgStr(virQEMUDriverConfigPtr cfg,
     bool needBackend = false;
     int rc;
     int ret = -1;
+    size_t ncells = def->cpu->ncells;
     const long system_page_size = virGetSystemPageSizeKB();

     if (virDomainNumatuneHasPerNodeBinding(def->numa) &&
@@ -7150,10 +7151,10 @@ qemuBuildNumaArgStr(virQEMUDriverConfigPtr cfg,
             continue;
         }

-        if (def->cpu->ncells) {
+        if (ncells) {
             /* Fortunately, we allow only guest NUMA nodes to be continuous
              * starting from zero. */
-            pos = def->cpu->ncells - 1;
+            pos = ncells - 1;
         }

         next_bit = virBitmapNextSetBit(def->mem.hugepages[i].nodemask, pos);
@@ -7165,12 +7166,12 @@ qemuBuildNumaArgStr(virQEMUDriverConfigPtr cfg,
         }
     }

-    if (VIR_ALLOC_N(nodeBackends, def->cpu->ncells) < 0)
+    if (VIR_ALLOC_N(nodeBackends, ncells) < 0)
         goto cleanup;

     /* using of -numa memdev= cannot be combined with -numa mem=, thus we
      * need to check which approach to use */
-    for (i = 0; i < def->cpu->ncells; i++) {
+    for (i = 0; i < ncells; i++) {
         unsigned long long cellmem = VIR_DIV_UP(def->cpu->cells[i].mem, 1024);
         def->cpu->cells[i].mem = cellmem * 1024;

@@ -7193,7 +7194,7 @@ qemuBuildNumaArgStr(virQEMUDriverConfigPtr cfg,
         }
     }

-    for (i = 0; i < def->cpu->ncells; i++) {
+    for (i = 0; i < ncells; i++) {
         VIR_FREE(cpumask);
         if (!(cpumask = virBitmapFormat(def->cpu->cells[i].cpumask)))
             goto cleanup;
@@ -7232,7 +7233,7 @@ qemuBuildNumaArgStr(virQEMUDriverConfigPtr cfg,
     VIR_FREE(cpumask);

     if (nodeBackends) {
-        for (i = 0; i < def->cpu->ncells; i++)
+        for (i = 0; i < ncells; i++)
             VIR_FREE(nodeBackends[i]);

         VIR_FREE(nodeBackends);
-- 
2.2.2




More information about the libvir-list mailing list