separate virDomainDefParseVcpuInfo from virDomainDefParseXML --- src/conf/domain_conf.c | 92 +++++++++++++++++++++++++++++++------------------- 1 file changed, 58 insertions(+), 34 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 809c06a..4453621 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -18930,6 +18930,62 @@ virDomainDefParseMemoryInfo(virDomainParseTotalParamPtr param) } +static int +virDomainDefParseBikiotuneInfo(virDomainParseTotalParamPtr param) +{ + virDomainDefPtr def = param->def; + xmlXPathContextPtr ctxt = param->ctxt; + int ret = -1; + int n; + size_t i, j; + xmlNodePtr *nodes = NULL; + + /* Extract blkio cgroup tunables */ + if (virXPathUInt("string(./blkiotune/weight)", ctxt, + &def->blkio.weight) < 0) + def->blkio.weight = 0; + + if ((n = virXPathNodeSet("./blkiotune/device", ctxt, &nodes)) < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, + "%s", _("cannot extract blkiotune nodes")); + goto cleanup; + } + if (n && VIR_ALLOC_N(def->blkio.devices, n) < 0) + goto cleanup; + + for (i = 0; i < n; i++) { + if (virDomainBlkioDeviceParseXML(nodes[i], + &def->blkio.devices[i]) < 0) + goto cleanup; + def->blkio.ndevices++; + for (j = 0; j < i; j++) { + if (STREQ(def->blkio.devices[j].path, + def->blkio.devices[i].path)) { + virReportError(VIR_ERR_XML_ERROR, + _("duplicate blkio device path '%s'"), + def->blkio.devices[i].path); + goto cleanup; + } + } + } + ret = 0; + + cleanup: + VIR_FREE(nodes); + return ret; +} + + +static int +virDomainDefParseVcpuInfo(virDomainParseTotalParamPtr param) +{ + if (virDomainVcpuParse(param->def, param->ctxt, param->xmlopt) < 0) + return -1; + + return 0; +} + + static virDomainDefPtr virDomainDefParseXML(xmlDocPtr xml, xmlNodePtr root, @@ -18976,6 +19032,8 @@ virDomainDefParseXML(xmlDocPtr xml, virDomainDefParseDomainInfo, virDomainDefParseSecurityLabelInfo, virDomainDefParseMemoryInfo, + virDomainDefParseBikiotuneInfo, + virDomainDefParseVcpuInfo, NULL }; @@ -19003,40 +19061,6 @@ virDomainDefParseXML(xmlDocPtr xml, fun_index++; } - - /* Extract blkio cgroup tunables */ - if (virXPathUInt("string(./blkiotune/weight)", ctxt, - &def->blkio.weight) < 0) - def->blkio.weight = 0; - - if ((n = virXPathNodeSet("./blkiotune/device", ctxt, &nodes)) < 0) { - virReportError(VIR_ERR_INTERNAL_ERROR, - "%s", _("cannot extract blkiotune nodes")); - goto error; - } - if (n && VIR_ALLOC_N(def->blkio.devices, n) < 0) - goto error; - - for (i = 0; i < n; i++) { - if (virDomainBlkioDeviceParseXML(nodes[i], - &def->blkio.devices[i]) < 0) - goto error; - def->blkio.ndevices++; - for (j = 0; j < i; j++) { - if (STREQ(def->blkio.devices[j].path, - def->blkio.devices[i].path)) { - virReportError(VIR_ERR_XML_ERROR, - _("duplicate blkio device path '%s'"), - def->blkio.devices[i].path); - goto error; - } - } - } - VIR_FREE(nodes); - - if (virDomainVcpuParse(def, ctxt, xmlopt) < 0) - goto error; - if (virDomainDefParseIOThreads(def, ctxt) < 0) goto error; -- 2.8.3 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list