mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
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.
This commit is contained in:
parent
67bd807c4d
commit
638e3d270f
@ -229,42 +229,31 @@ virDomainNumatuneParseXML(virDomainNumaPtr *numatunePtr,
|
||||
*numatunePtr = NULL;
|
||||
}
|
||||
|
||||
if (!node && placement_static) {
|
||||
if (virDomainNumatuneNodeParseXML(numatunePtr, ncells, ctxt) < 0)
|
||||
if (!placement_static && !node)
|
||||
placement = VIR_DOMAIN_NUMATUNE_PLACEMENT_AUTO;
|
||||
|
||||
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;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
VIR_FREE(tmp);
|
||||
|
||||
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 ((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, "mode")) &&
|
||||
(mode = virDomainNumatuneMemModeTypeFromString(tmp)) < 0) {
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
_("Unsupported NUMA memory tuning 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, "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, "nodeset")) &&
|
||||
virBitmapParse(tmp, 0, &nodeset, VIR_DOMAIN_CPUMASK_LEN) < 0)
|
||||
goto cleanup;
|
||||
VIR_FREE(tmp);
|
||||
|
||||
if (virDomainNumatuneSet(numatunePtr,
|
||||
placement_static,
|
||||
|
Loading…
x
Reference in New Issue
Block a user