conf: Don't format cputune element when not needed

Commit 60b176c3d0 introduced a bug that
when editing an XML with cputune similar to this:

...
  <vcpu placement='static' current='1'>2</vcpu>
  <cputune>
    <vcpupin vcpu="1" cpuset="0"/>
  </cputune>
...

results in formatted XML that looks like this:

...
  <vcpu placement='static' current='1'>2</vcpu>
  <cputune>
  </cputune>
...

That is caused by a condition depending on def->cputune.vcpupin being
set rather than checking def->cputune.nvcpupin.  Notice that nvcpupin
can be 0 and vcpupin can still be allocated since it's a pointer to an
array, so no harm done there.

I also changed it on other places in the code where it depended on the
wrong variable.
This commit is contained in:
Martin Kletzander 2012-12-17 16:03:01 +01:00
parent 790d364ca2
commit 1f50730e44

View File

@ -13955,10 +13955,10 @@ virDomainIsAllVcpupinInherited(virDomainDefPtr def)
int i;
if (!def->cpumask) {
if (!def->cputune.vcpupin)
return true;
else
if (def->cputune.nvcpupin)
return false;
else
return true;
} else {
for (i = 0; i < def->cputune.nvcpupin; i++) {
if (!virBitmapEqual(def->cputune.vcpupin[i]->cpumask,
@ -14143,7 +14143,7 @@ virDomainDefFormatInternal(virDomainDefPtr def,
virBufferAsprintf(buf, ">%u</vcpu>\n", def->maxvcpus);
if (def->cputune.shares ||
(def->cputune.vcpupin && !virDomainIsAllVcpupinInherited(def)) ||
(def->cputune.nvcpupin && !virDomainIsAllVcpupinInherited(def)) ||
def->cputune.period || def->cputune.quota ||
def->cputune.emulatorpin ||
def->cputune.emulator_period || def->cputune.emulator_quota)
@ -14209,7 +14209,7 @@ virDomainDefFormatInternal(virDomainDefPtr def,
VIR_FREE(cpumask);
}
if (def->cputune.shares ||
(def->cputune.vcpupin && !virDomainIsAllVcpupinInherited(def)) ||
(def->cputune.nvcpupin && !virDomainIsAllVcpupinInherited(def)) ||
def->cputune.period || def->cputune.quota ||
def->cputune.emulatorpin ||
def->cputune.emulator_period || def->cputune.emulator_quota)