提交 638e3d27 编写于 作者: P Peter Krempa

conf: numa: Refactor logic in virDomainNumatuneParseXML

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.
上级 67bd807c
...@@ -229,42 +229,31 @@ virDomainNumatuneParseXML(virDomainNumaPtr *numatunePtr, ...@@ -229,42 +229,31 @@ virDomainNumatuneParseXML(virDomainNumaPtr *numatunePtr,
*numatunePtr = NULL; *numatunePtr = NULL;
} }
if (!node && placement_static) { if (!placement_static && !node)
if (virDomainNumatuneNodeParseXML(numatunePtr, ncells, ctxt) < 0) placement = VIR_DOMAIN_NUMATUNE_PLACEMENT_AUTO;
goto cleanup;
return 0;
}
if (!node) { if (node) {
/* We know that placement_mode is "auto" if we're here */ if ((tmp = virXMLPropString(node, "mode")) &&
ret = virDomainNumatuneSet(numatunePtr, (mode = virDomainNumatuneMemModeTypeFromString(tmp)) < 0) {
placement_static, virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
VIR_DOMAIN_NUMATUNE_PLACEMENT_AUTO, _("Unsupported NUMA memory tuning mode '%s'"), tmp);
-1, goto cleanup;
NULL); }
goto cleanup; VIR_FREE(tmp);
}
if ((tmp = virXMLPropString(node, "mode")) && if ((tmp = virXMLPropString(node, "placement")) &&
(mode = virDomainNumatuneMemModeTypeFromString(tmp)) < 0) { (placement = virDomainNumatunePlacementTypeFromString(tmp)) < 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("Unsupported NUMA memory tuning mode '%s'"), tmp); _("Unsupported NUMA memory placement mode '%s'"), tmp);
goto cleanup; goto cleanup;
} }
VIR_FREE(tmp); VIR_FREE(tmp);
if ((tmp = virXMLPropString(node, "placement")) && if ((tmp = virXMLPropString(node, "nodeset")) &&
(placement = virDomainNumatunePlacementTypeFromString(tmp)) < 0) { virBitmapParse(tmp, 0, &nodeset, VIR_DOMAIN_CPUMASK_LEN) < 0)
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, goto cleanup;
_("Unsupported NUMA memory placement mode '%s'"), tmp); VIR_FREE(tmp);
goto cleanup;
} }
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, if (virDomainNumatuneSet(numatunePtr,
placement_static, placement_static,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册