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