--- src/conf/domain_conf.c | 45 +++++++++++++++++++++++++++++++-------------- 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index cf5eb1d..74075f0 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -22779,6 +22779,35 @@ virDomainCputuneDefFormat(virBufferPtr buf, } +static int +virDomainCpuDefFormat(virBufferPtr buf, + const virDomainDef *def) +{ + char *cpumask = NULL; + int ret = -1; + + virBufferAddLit(buf, "<vcpu"); + virBufferAsprintf(buf, " placement='%s'", + virDomainCpuPlacementModeTypeToString(def->placement_mode)); + + if (def->cpumask && !virBitmapIsAllSet(def->cpumask)) { + if ((cpumask = virBitmapFormat(def->cpumask)) == NULL) + goto cleanup; + virBufferAsprintf(buf, " cpuset='%s'", cpumask); + } + if (virDomainDefHasVcpusOffline(def)) + virBufferAsprintf(buf, " current='%u'", virDomainDefGetVcpus(def)); + virBufferAsprintf(buf, ">%u</vcpu>\n", virDomainDefGetVcpusMax(def)); + + ret = 0; + + cleanup: + VIR_FREE(cpumask); + + return ret; +} + + /* This internal version appends to an existing buffer * (possibly with auto-indent), rather than flattening * to string. @@ -22954,20 +22983,8 @@ virDomainDefFormatInternal(virDomainDefPtr def, virBufferAddLit(buf, "</memoryBacking>\n"); } - virBufferAddLit(buf, "<vcpu"); - virBufferAsprintf(buf, " placement='%s'", - virDomainCpuPlacementModeTypeToString(def->placement_mode)); - - if (def->cpumask && !virBitmapIsAllSet(def->cpumask)) { - char *cpumask = NULL; - if ((cpumask = virBitmapFormat(def->cpumask)) == NULL) - goto error; - virBufferAsprintf(buf, " cpuset='%s'", cpumask); - VIR_FREE(cpumask); - } - if (virDomainDefHasVcpusOffline(def)) - virBufferAsprintf(buf, " current='%u'", virDomainDefGetVcpus(def)); - virBufferAsprintf(buf, ">%u</vcpu>\n", virDomainDefGetVcpusMax(def)); + if (virDomainCpuDefFormat(buf, def) < 0) + goto error; if (def->niothreadids > 0) { virBufferAsprintf(buf, "<iothreads>%u</iothreads>\n", -- 2.9.0 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list