Tidy up control flow, change boolean argument to use 'bool', improve
error message in case the function is used to parse emulator pinning
info and avoid a few temp variables that made no sense.
Also when the function is called to parse emulator pinning info, there's
no need to check the processor ID in that case.
---
src/conf/domain_conf.c | 58 +++++++++++++++++++++++---------------------------
1 file changed, 27 insertions(+), 31 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 82f3ee6..25d33c7 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -11308,11 +11308,9 @@ virDomainPanicDefParseXML(xmlNodePtr node)
/* Parse the XML definition for a vcpupin or emulatorpin.
*
* vcpupin has the form of
- *
* <vcpupin vcpu='0' cpuset='0'/>
*
* and emulatorpin has the form of
- *
* <emulatorpin cpuset='0'/>
*
* A vcpuid of -1 is valid and only valid for emulatorpin. So callers
@@ -11322,7 +11320,7 @@ static virDomainVcpuPinDefPtr
virDomainVcpuPinDefParseXML(xmlNodePtr node,
xmlXPathContextPtr ctxt,
int maxvcpus,
- int emulator)
+ bool emulator)
{
virDomainVcpuPinDefPtr def;
xmlNodePtr oldnode = ctxt->node;
@@ -11335,46 +11333,43 @@ virDomainVcpuPinDefParseXML(xmlNodePtr node,
ctxt->node = node;
- if (emulator == 0) {
+ if (!emulator) {
ret = virXPathInt("string(./@vcpu)", ctxt, &vcpuid);
if ((ret == -2) || (vcpuid < -1)) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- "%s", _("vcpu id must be an unsigned integer or
-1"));
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("vcpu id must be an unsigned integer or -1"));
goto error;
} else if (vcpuid == -1) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- "%s", _("vcpu id value -1 is not allowed for
vcpupin"));
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("vcpu id value -1 is not allowed for vcpupin"));
goto error;
}
- }
- if (vcpuid >= maxvcpus) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- "%s", _("vcpu id must be less than
maxvcpus"));
- goto error;
- }
-
- def->vcpuid = vcpuid;
+ if (vcpuid >= maxvcpus) {
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("vcpu id must be less than maxvcpus"));
+ goto error;
+ }
- tmp = virXMLPropString(node, "cpuset");
+ def->vcpuid = vcpuid;
+ }
- if (tmp) {
- char *set = tmp;
- int cpumasklen = VIR_DOMAIN_CPUMASK_LEN;
+ if (!(tmp = virXMLPropString(node, "cpuset"))) {
+ if (emulator)
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("missing cpuset for emulatorpin"));
+ else
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("missing cpuset for vcpupin"));
- if (virBitmapParse(set, 0, &def->cpumask,
- cpumasklen) < 0) {
- VIR_FREE(tmp);
- goto error;
- }
- VIR_FREE(tmp);
- } else {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- "%s", _("missing cpuset for vcpupin"));
goto error;
}
+ if (virBitmapParse(tmp, 0, &def->cpumask, VIR_DOMAIN_CPUMASK_LEN) < 0)
+ goto error;
+
cleanup:
+ VIR_FREE(tmp);
ctxt->node = oldnode;
return def;
@@ -11995,7 +11990,8 @@ virDomainDefParseXML(xmlDocPtr xml,
for (i = 0; i < n; i++) {
virDomainVcpuPinDefPtr vcpupin = NULL;
- vcpupin = virDomainVcpuPinDefParseXML(nodes[i], ctxt, def->maxvcpus, 0);
+ vcpupin = virDomainVcpuPinDefParseXML(nodes[i], ctxt,
+ def->maxvcpus, false);
if (!vcpupin)
goto error;
@@ -12069,7 +12065,7 @@ virDomainDefParseXML(xmlDocPtr xml,
}
def->cputune.emulatorpin = virDomainVcpuPinDefParseXML(nodes[0], ctxt,
- def->maxvcpus, 1);
+ 0, true);
if (!def->cputune.emulatorpin)
goto error;
--
2.0.2