Instead of a silent warning, it's better to error out if the
numa nodeset is out of range. Just like for numa node larger
than NUMA_NUM_NODES.
---
src/util/virnuma.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/src/util/virnuma.c b/src/util/virnuma.c
index bace06f..902ed43 100644
--- a/src/util/virnuma.c
+++ b/src/util/virnuma.c
@@ -89,7 +89,6 @@ virNumaSetupMemoryPolicy(virNumaTuneDef numatune,
int ret = -1;
int i = 0;
int maxnode = 0;
- bool warned = false;
virBitmapPtr tmp_nodemask = NULL;
if (numatune.memory.placement_mode ==
@@ -113,20 +112,17 @@ virNumaSetupMemoryPolicy(virNumaTuneDef numatune,
}
maxnode = numa_max_node() + 1;
+
/* Convert nodemask to NUMA bitmask. */
nodemask_zero(&mask);
i = -1;
while ((i = virBitmapNextSetBit(tmp_nodemask, i)) >= 0) {
- if (i > NUMA_NUM_NODES) {
+ if (i > maxnode || i > NUMA_NUM_NODES) {
virReportError(VIR_ERR_INTERNAL_ERROR,
- _("Host cannot support NUMA node %d"), i);
+ _("Nodeset is out of range, host cannot support "
+ "NUMA node bigger than %d"), i);
return -1;
}
- if (i > maxnode && !warned) {
- VIR_WARN("nodeset is out of range, there is only %d NUMA "
- "nodes on host", maxnode);
- warned = true;
- }
nodemask_set(&mask, i);
}
--
1.8.1.4