]> xenbits.xensource.com Git - libvirt.git/commitdiff
conf: numa: Refactor logic in virDomainNumatuneParseXML
authorPeter Krempa <pkrempa@redhat.com>
Thu, 12 Feb 2015 15:04:45 +0000 (16:04 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 20 Feb 2015 16:43:04 +0000 (17:43 +0100)
Shuffling around the logic will allow to simplify the code quite a bit.
As an additional bonus the change in the logic now reports an error if
automatic placement is selected and individual placement is configured.

src/conf/numa_conf.c

index c78e50c9db17b0025da3224f86bf28492c530053..d86ac99a677eb25a6bc21f0db7b00b8fe9ec28e7 100644 (file)
@@ -229,42 +229,31 @@ virDomainNumatuneParseXML(virDomainNumaPtr *numatunePtr,
         *numatunePtr = NULL;
     }
 
-    if (!node && placement_static) {
-        if (virDomainNumatuneNodeParseXML(numatunePtr, ncells, ctxt) < 0)
-            goto cleanup;
-        return 0;
-    }
+    if (!placement_static && !node)
+        placement = VIR_DOMAIN_NUMATUNE_PLACEMENT_AUTO;
 
-    if (!node) {
-        /* We know that placement_mode is "auto" if we're here */
-        ret = virDomainNumatuneSet(numatunePtr,
-                                   placement_static,
-                                   VIR_DOMAIN_NUMATUNE_PLACEMENT_AUTO,
-                                   -1,
-                                   NULL);
-        goto cleanup;
-    }
+    if (node) {
+        if ((tmp = virXMLPropString(node, "mode")) &&
+            (mode = virDomainNumatuneMemModeTypeFromString(tmp)) < 0) {
+            virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                           _("Unsupported NUMA memory tuning mode '%s'"), tmp);
+            goto cleanup;
+        }
+        VIR_FREE(tmp);
 
-    if ((tmp = virXMLPropString(node, "mode")) &&
-        (mode = virDomainNumatuneMemModeTypeFromString(tmp)) < 0) {
-        virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-                       _("Unsupported NUMA memory tuning mode '%s'"), tmp);
-        goto cleanup;
-    }
-    VIR_FREE(tmp);
+        if ((tmp = virXMLPropString(node, "placement")) &&
+            (placement = virDomainNumatunePlacementTypeFromString(tmp)) < 0) {
+            virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                           _("Unsupported NUMA memory placement mode '%s'"), tmp);
+            goto cleanup;
+        }
+        VIR_FREE(tmp);
 
-    if ((tmp = virXMLPropString(node, "placement")) &&
-        (placement = virDomainNumatunePlacementTypeFromString(tmp)) < 0) {
-        virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-                       _("Unsupported NUMA memory placement mode '%s'"), tmp);
-        goto cleanup;
+        if ((tmp = virXMLPropString(node, "nodeset")) &&
+            virBitmapParse(tmp, 0, &nodeset, VIR_DOMAIN_CPUMASK_LEN) < 0)
+            goto cleanup;
+        VIR_FREE(tmp);
     }
-    VIR_FREE(tmp);
-
-    if ((tmp = virXMLPropString(node, "nodeset")) &&
-        virBitmapParse(tmp, 0, &nodeset, VIR_DOMAIN_CPUMASK_LEN) < 0)
-        goto cleanup;
-    VIR_FREE(tmp);
 
     if (virDomainNumatuneSet(numatunePtr,
                              placement_static,