]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
numa_conf: Move memnode mode validation into virDomainNumaDefValidate()
authorMichal Privoznik <mprivozn@redhat.com>
Thu, 18 May 2023 08:27:52 +0000 (10:27 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Mon, 22 May 2023 11:57:44 +0000 (13:57 +0200)
When parsing a <memnode/> we also check whether the @mode
argument fulfills some requirements wrt 'restrictive' mode. This
is not the right place though. There's virDomainNumaDefValidate()
which contains other checks.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
src/conf/numa_conf.c

index dd4997c759bde7fac23471fd4311726fe002f723..6095139385bd93130ea29401e0408ab369eb5771 100644 (file)
@@ -191,14 +191,6 @@ virDomainNumatuneNodeParseXML(virDomainNuma *numa,
                                   VIR_DOMAIN_NUMATUNE_MEM_STRICT) < 0)
             return -1;
 
-        if (numa->memory.mode == VIR_DOMAIN_NUMATUNE_MEM_RESTRICTIVE &&
-            mem_node->mode != VIR_DOMAIN_NUMATUNE_MEM_RESTRICTIVE) {
-            virReportError(VIR_ERR_XML_ERROR, "%s",
-                           _("'restrictive' mode is required in memnode element "
-                             "when mode is 'restrictive' in memory element"));
-            return -1;
-        }
-
         tmp = virXMLPropString(cur_node, "nodeset");
         if (!tmp) {
             virReportError(VIR_ERR_XML_ERROR, "%s",
@@ -1083,6 +1075,14 @@ virDomainNumaDefValidate(const virDomainNuma *def)
         const virDomainNumaNode *node = &def->mem_nodes[i];
         g_autoptr(virBitmap) levelsSeen = virBitmapNew(0);
 
+        if (virDomainNumatuneNodeSpecified(def, i) &&
+            def->memory.mode == VIR_DOMAIN_NUMATUNE_MEM_RESTRICTIVE &&
+            node->mode != VIR_DOMAIN_NUMATUNE_MEM_RESTRICTIVE) {
+            virReportError(VIR_ERR_XML_ERROR, "%s",
+                           _("'restrictive' mode is required in memnode element when mode is 'restrictive' in memory element"));
+            return -1;
+        }
+
         for (j = 0; j < node->ncaches; j++) {
             const virNumaCache *cache = &node->caches[j];