conf: Replace writes to def->vcpus with accessor

This commit is contained in:
Peter Krempa 2015-10-22 10:52:05 +02:00
parent d1dda68777
commit 957d597330
19 changed files with 83 additions and 33 deletions

View File

@ -1289,7 +1289,7 @@ virDomainDefSetVcpusMax(virDomainDefPtr def,
unsigned int maxvcpus) unsigned int maxvcpus)
{ {
if (maxvcpus < def->vcpus) if (maxvcpus < def->vcpus)
def->vcpus = maxvcpus; virDomainDefSetVcpus(def, maxvcpus);
def->maxvcpus = maxvcpus; def->maxvcpus = maxvcpus;
@ -1311,6 +1311,16 @@ virDomainDefGetVcpusMax(const virDomainDef *def)
} }
int
virDomainDefSetVcpus(virDomainDefPtr def,
unsigned int vcpus)
{
def->vcpus = vcpus;
return 0;
}
virDomainDiskDefPtr virDomainDiskDefPtr
virDomainDiskDefNew(virDomainXMLOptionPtr xmlopt) virDomainDiskDefNew(virDomainXMLOptionPtr xmlopt)
{ {
@ -14402,6 +14412,7 @@ virDomainVcpuParse(virDomainDefPtr def,
int n; int n;
char *tmp = NULL; char *tmp = NULL;
unsigned int maxvcpus; unsigned int maxvcpus;
unsigned int vcpus;
int ret = -1; int ret = -1;
if ((n = virXPathUInt("string(./vcpu[1])", ctxt, &maxvcpus)) < 0) { if ((n = virXPathUInt("string(./vcpu[1])", ctxt, &maxvcpus)) < 0) {
@ -14417,16 +14428,19 @@ virDomainVcpuParse(virDomainDefPtr def,
if (virDomainDefSetVcpusMax(def, maxvcpus) < 0) if (virDomainDefSetVcpusMax(def, maxvcpus) < 0)
goto cleanup; goto cleanup;
if ((n = virXPathUInt("string(./vcpu[1]/@current)", ctxt, &def->vcpus)) < 0) { if ((n = virXPathUInt("string(./vcpu[1]/@current)", ctxt, &vcpus)) < 0) {
if (n == -2) { if (n == -2) {
virReportError(VIR_ERR_XML_ERROR, "%s", virReportError(VIR_ERR_XML_ERROR, "%s",
_("current vcpus count must be an integer")); _("current vcpus count must be an integer"));
goto cleanup; goto cleanup;
} }
def->vcpus = maxvcpus; vcpus = maxvcpus;
} }
if (virDomainDefSetVcpus(def, vcpus) < 0)
goto cleanup;
if (maxvcpus < def->vcpus) { if (maxvcpus < def->vcpus) {
virReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("maxvcpus must not be less than current vcpus " _("maxvcpus must not be less than current vcpus "

View File

@ -2346,6 +2346,7 @@ struct _virDomainDef {
int virDomainDefSetVcpusMax(virDomainDefPtr def, unsigned int vcpus); int virDomainDefSetVcpusMax(virDomainDefPtr def, unsigned int vcpus);
bool virDomainDefHasVcpusOffline(const virDomainDef *def); bool virDomainDefHasVcpusOffline(const virDomainDef *def);
unsigned int virDomainDefGetVcpusMax(const virDomainDef *def); unsigned int virDomainDefGetVcpusMax(const virDomainDef *def);
int virDomainDefSetVcpus(virDomainDefPtr def, unsigned int vcpus);
unsigned long long virDomainDefGetMemoryInitial(const virDomainDef *def); unsigned long long virDomainDefGetMemoryInitial(const virDomainDef *def);
void virDomainDefSetMemoryTotal(virDomainDefPtr def, unsigned long long size); void virDomainDefSetMemoryTotal(virDomainDefPtr def, unsigned long long size);

View File

@ -877,7 +877,10 @@ hypervDomainGetXMLDesc(virDomainPtr domain, unsigned int flags)
processorSettingData->data->VirtualQuantity) < 0) processorSettingData->data->VirtualQuantity) < 0)
goto cleanup; goto cleanup;
def->vcpus = processorSettingData->data->VirtualQuantity; if (virDomainDefSetVcpus(def,
processorSettingData->data->VirtualQuantity) < 0)
goto cleanup;
def->os.type = VIR_DOMAIN_OSTYPE_HVM; def->os.type = VIR_DOMAIN_OSTYPE_HVM;
/* FIXME: devices section is totally missing */ /* FIXME: devices section is totally missing */

View File

@ -232,6 +232,7 @@ virDomainDefParseString;
virDomainDefPostParse; virDomainDefPostParse;
virDomainDefSetMemoryInitial; virDomainDefSetMemoryInitial;
virDomainDefSetMemoryTotal; virDomainDefSetMemoryTotal;
virDomainDefSetVcpus;
virDomainDefSetVcpusMax; virDomainDefSetVcpusMax;
virDomainDeleteConfig; virDomainDeleteConfig;
virDomainDeviceAddressIsValid; virDomainDeviceAddressIsValid;

View File

@ -555,7 +555,8 @@ libxlAddDom0(libxlDriverPrivatePtr driver)
if (virDomainDefSetVcpusMax(vm->def, d_info.vcpu_max_id + 1)) if (virDomainDefSetVcpusMax(vm->def, d_info.vcpu_max_id + 1))
goto cleanup; goto cleanup;
vm->def->vcpus = d_info.vcpu_online; if (virDomainDefSetVcpus(vm->def, d_info.vcpu_online) < 0)
goto cleanup;
vm->def->mem.cur_balloon = d_info.current_memkb; vm->def->mem.cur_balloon = d_info.current_memkb;
virDomainDefSetMemoryTotal(vm->def, d_info.max_memkb); virDomainDefSetMemoryTotal(vm->def, d_info.max_memkb);
@ -2191,7 +2192,8 @@ libxlDomainSetVcpusFlags(virDomainPtr dom, unsigned int nvcpus,
break; break;
case VIR_DOMAIN_VCPU_CONFIG: case VIR_DOMAIN_VCPU_CONFIG:
def->vcpus = nvcpus; if (virDomainDefSetVcpus(def, nvcpus) < 0)
goto cleanup;
break; break;
case VIR_DOMAIN_VCPU_LIVE: case VIR_DOMAIN_VCPU_LIVE:
@ -2201,7 +2203,8 @@ libxlDomainSetVcpusFlags(virDomainPtr dom, unsigned int nvcpus,
" with libxenlight"), vm->def->id); " with libxenlight"), vm->def->id);
goto endjob; goto endjob;
} }
vm->def->vcpus = nvcpus; if (virDomainDefSetVcpus(vm->def, nvcpus) < 0)
goto endjob;
break; break;
case VIR_DOMAIN_VCPU_LIVE | VIR_DOMAIN_VCPU_CONFIG: case VIR_DOMAIN_VCPU_LIVE | VIR_DOMAIN_VCPU_CONFIG:
@ -2211,8 +2214,9 @@ libxlDomainSetVcpusFlags(virDomainPtr dom, unsigned int nvcpus,
" with libxenlight"), vm->def->id); " with libxenlight"), vm->def->id);
goto endjob; goto endjob;
} }
vm->def->vcpus = nvcpus; if (virDomainDefSetVcpus(vm->def, nvcpus) < 0 ||
def->vcpus = nvcpus; virDomainDefSetVcpus(def, nvcpus) < 0)
goto endjob;
break; break;
} }

View File

@ -1024,7 +1024,8 @@ lxcParseConfigString(const char *config,
if (virDomainDefSetVcpusMax(vmdef, 1) < 0) if (virDomainDefSetVcpusMax(vmdef, 1) < 0)
goto error; goto error;
vmdef->vcpus = 1; if (virDomainDefSetVcpus(vmdef, 1) < 0)
goto error;
vmdef->nfss = 0; vmdef->nfss = 0;
vmdef->os.type = VIR_DOMAIN_OSTYPE_EXE; vmdef->os.type = VIR_DOMAIN_OSTYPE_EXE;

View File

@ -585,7 +585,8 @@ int openvzLoadDomains(struct openvz_driver *driver)
if (virDomainDefSetVcpusMax(def, vcpus) < 0) if (virDomainDefSetVcpusMax(def, vcpus) < 0)
goto cleanup; goto cleanup;
def->vcpus = vcpus; if (virDomainDefSetVcpus(def, vcpus) < 0)
goto cleanup;
/* XXX load rest of VM config data .... */ /* XXX load rest of VM config data .... */

View File

@ -1371,7 +1371,9 @@ static int openvzDomainSetVcpusInternal(virDomainObjPtr vm,
if (virDomainDefSetVcpusMax(vm->def, nvcpus) < 0) if (virDomainDefSetVcpusMax(vm->def, nvcpus) < 0)
return -1; return -1;
vm->def->vcpus = nvcpus; if (virDomainDefSetVcpus(vm->def, nvcpus) < 0)
return -1;
return 0; return 0;
} }

View File

@ -3298,7 +3298,8 @@ phypDomainGetXMLDesc(virDomainPtr dom, unsigned int flags)
if (virDomainDefSetVcpusMax(&def, vcpus) < 0) if (virDomainDefSetVcpusMax(&def, vcpus) < 0)
goto err; goto err;
def.vcpus = vcpus; if (virDomainDefSetVcpus(&def, vcpus) < 0)
goto err;
return virDomainDefFormat(&def, return virDomainDefFormat(&def,
virDomainDefFormatConvertXMLFlags(flags)); virDomainDefFormatConvertXMLFlags(flags));

View File

@ -12712,6 +12712,7 @@ qemuParseCommandLineSmp(virDomainDefPtr dom,
unsigned int cores = 0; unsigned int cores = 0;
unsigned int threads = 0; unsigned int threads = 0;
unsigned int maxcpus = 0; unsigned int maxcpus = 0;
unsigned int vcpus = 0;
size_t i; size_t i;
int nkws; int nkws;
char **kws; char **kws;
@ -12726,9 +12727,8 @@ qemuParseCommandLineSmp(virDomainDefPtr dom,
for (i = 0; i < nkws; i++) { for (i = 0; i < nkws; i++) {
if (vals[i] == NULL) { if (vals[i] == NULL) {
if (i > 0 || if (i > 0 ||
virStrToLong_i(kws[i], &end, 10, &n) < 0 || *end != '\0') virStrToLong_ui(kws[i], &end, 10, &vcpus) < 0 || *end != '\0')
goto syntax; goto syntax;
dom->vcpus = n;
} else { } else {
if (virStrToLong_i(vals[i], &end, 10, &n) < 0 || *end != '\0') if (virStrToLong_i(vals[i], &end, 10, &n) < 0 || *end != '\0')
goto syntax; goto syntax;
@ -12746,11 +12746,14 @@ qemuParseCommandLineSmp(virDomainDefPtr dom,
} }
if (maxcpus == 0) if (maxcpus == 0)
maxcpus = dom->vcpus; maxcpus = vcpus;
if (virDomainDefSetVcpusMax(dom, maxcpus) < 0) if (virDomainDefSetVcpusMax(dom, maxcpus) < 0)
goto error; goto error;
if (virDomainDefSetVcpus(dom, vcpus) < 0)
goto error;
if (sockets && cores && threads) { if (sockets && cores && threads) {
virCPUDefPtr cpu; virCPUDefPtr cpu;
@ -12865,7 +12868,8 @@ qemuParseCommandLine(virCapsPtr qemuCaps,
virDomainDefSetMemoryTotal(def, def->mem.cur_balloon); virDomainDefSetMemoryTotal(def, def->mem.cur_balloon);
if (virDomainDefSetVcpusMax(def, 1) < 0) if (virDomainDefSetVcpusMax(def, 1) < 0)
goto error; goto error;
def->vcpus = 1; if (virDomainDefSetVcpus(def, 1) < 0)
goto error;
def->clock.offset = VIR_DOMAIN_CLOCK_OFFSET_UTC; def->clock.offset = VIR_DOMAIN_CLOCK_OFFSET_UTC;
def->onReboot = VIR_DOMAIN_LIFECYCLE_RESTART; def->onReboot = VIR_DOMAIN_LIFECYCLE_RESTART;

View File

@ -4835,8 +4835,9 @@ qemuDomainHotplugVcpus(virQEMUDriverPtr driver,
cleanup: cleanup:
VIR_FREE(cpupids); VIR_FREE(cpupids);
VIR_FREE(mem_mask); VIR_FREE(mem_mask);
if (virDomainObjIsActive(vm)) if (virDomainObjIsActive(vm) &&
vm->def->vcpus = vcpus; virDomainDefSetVcpus(vm->def, vcpus) < 0)
ret = -1;
virDomainAuditVcpu(vm, oldvcpus, nvcpus, "update", rc == 1); virDomainAuditVcpu(vm, oldvcpus, nvcpus, "update", rc == 1);
if (cgroup_vcpu) if (cgroup_vcpu)
virCgroupFree(&cgroup_vcpu); virCgroupFree(&cgroup_vcpu);
@ -4982,7 +4983,8 @@ qemuDomainSetVcpusFlags(virDomainPtr dom, unsigned int nvcpus,
if (virDomainDefSetVcpusMax(persistentDef, nvcpus) < 0) if (virDomainDefSetVcpusMax(persistentDef, nvcpus) < 0)
goto endjob; goto endjob;
} else { } else {
persistentDef->vcpus = nvcpus; if (virDomainDefSetVcpus(persistentDef, nvcpus) < 0)
goto endjob;
} }
if (virDomainSaveConfig(cfg->configDir, persistentDef) < 0) if (virDomainSaveConfig(cfg->configDir, persistentDef) < 0)

View File

@ -2375,15 +2375,17 @@ testDomainSetVcpusFlags(virDomainPtr domain, unsigned int nrCpus,
goto cleanup; goto cleanup;
} }
if (def) if (def &&
def->vcpus = nrCpus; virDomainDefSetVcpus(def, nrCpus) < 0)
goto cleanup;
if (persistentDef) { if (persistentDef) {
if (flags & VIR_DOMAIN_VCPU_MAXIMUM) { if (flags & VIR_DOMAIN_VCPU_MAXIMUM) {
if (virDomainDefSetVcpusMax(persistentDef, nrCpus) < 0) if (virDomainDefSetVcpusMax(persistentDef, nrCpus) < 0)
goto cleanup; goto cleanup;
} else { } else {
persistentDef->vcpus = nrCpus; if (virDomainDefSetVcpus(persistentDef, nrCpus) < 0)
goto cleanup;
} }
} }

View File

@ -3910,7 +3910,8 @@ static char *vboxDomainGetXMLDesc(virDomainPtr dom, unsigned int flags)
if (virDomainDefSetVcpusMax(def, CPUCount) < 0) if (virDomainDefSetVcpusMax(def, CPUCount) < 0)
goto cleanup; goto cleanup;
def->vcpus = CPUCount; if (virDomainDefSetVcpus(def, CPUCount) < 0)
goto cleanup;
/* Skip cpumasklen, cpumask, onReboot, onPoweroff, onCrash */ /* Skip cpumasklen, cpumask, onReboot, onPoweroff, onCrash */
@ -6067,7 +6068,8 @@ static char *vboxDomainSnapshotGetXMLDesc(virDomainSnapshotPtr snapshot,
if (virDomainDefSetVcpusMax(def->dom, CPUCount) < 0) if (virDomainDefSetVcpusMax(def->dom, CPUCount) < 0)
goto cleanup; goto cleanup;
def->dom->vcpus = CPUCount; if (virDomainDefSetVcpus(def->dom, CPUCount) < 0)
goto cleanup;
if (vboxSnapshotGetReadWriteDisks(def, snapshot) < 0) if (vboxSnapshotGetReadWriteDisks(def, snapshot) < 0)
VIR_DEBUG("Could not get read write disks for snapshot"); VIR_DEBUG("Could not get read write disks for snapshot");

View File

@ -1461,7 +1461,8 @@ virVMXParseConfig(virVMXContext *ctx,
if (virDomainDefSetVcpusMax(def, numvcpus) < 0) if (virDomainDefSetVcpusMax(def, numvcpus) < 0)
goto cleanup; goto cleanup;
def->vcpus = numvcpus; if (virDomainDefSetVcpus(def, numvcpus) < 0)
goto cleanup;
/* vmx:sched.cpu.affinity -> def:cpumask */ /* vmx:sched.cpu.affinity -> def:cpumask */
/* NOTE: maps to VirtualMachine:config.cpuAffinity.affinitySet */ /* NOTE: maps to VirtualMachine:config.cpuAffinity.affinitySet */

View File

@ -1153,7 +1153,8 @@ prlsdkConvertCpuInfo(PRL_HANDLE sdkdom,
if (virDomainDefSetVcpusMax(def, cpuCount) < 0) if (virDomainDefSetVcpusMax(def, cpuCount) < 0)
goto cleanup; goto cleanup;
def->vcpus = cpuCount; if (virDomainDefSetVcpus(def, cpuCount) < 0)
goto cleanup;
pret = PrlVmCfg_GetCpuMask(sdkdom, NULL, &buflen); pret = PrlVmCfg_GetCpuMask(sdkdom, NULL, &buflen);
prlsdkCheckRetGoto(pret, cleanup); prlsdkCheckRetGoto(pret, cleanup);

View File

@ -708,7 +708,8 @@ xenXMDomainSetVcpusFlags(virConnectPtr conn,
if (virDomainDefSetVcpusMax(entry->def, vcpus) < 0) if (virDomainDefSetVcpusMax(entry->def, vcpus) < 0)
goto cleanup; goto cleanup;
} else { } else {
entry->def->vcpus = vcpus; if (virDomainDefSetVcpus(entry->def, vcpus) < 0)
goto cleanup;
} }
/* If this fails, should we try to undo our changes to the /* If this fails, should we try to undo our changes to the

View File

@ -1505,7 +1505,8 @@ xenapiDomainGetXMLDesc(virDomainPtr dom, unsigned int flags)
if (virDomainDefSetVcpusMax(defPtr, vcpus) < 0) if (virDomainDefSetVcpusMax(defPtr, vcpus) < 0)
goto error; goto error;
defPtr->vcpus = vcpus; if (virDomainDefSetVcpus(defPtr, vcpus) < 0)
goto error;
enum xen_on_normal_exit action; enum xen_on_normal_exit action;
if (xen_vm_get_actions_after_shutdown(session, &action, vm)) if (xen_vm_get_actions_after_shutdown(session, &action, vm))

View File

@ -508,7 +508,10 @@ xenParseCPUFeatures(virConfPtr conf, virDomainDefPtr def)
if (xenConfigGetULong(conf, "vcpu_avail", &count, -1) < 0) if (xenConfigGetULong(conf, "vcpu_avail", &count, -1) < 0)
return -1; return -1;
def->vcpus = MIN(count_one_bits_l(count), virDomainDefGetVcpusMax(def)); if (virDomainDefSetVcpus(def, MIN(count_one_bits_l(count),
virDomainDefGetVcpusMax(def))) < 0)
return -1;
if (xenConfigGetString(conf, "cpus", &str, NULL) < 0) if (xenConfigGetString(conf, "cpus", &str, NULL) < 0)
return -1; return -1;

View File

@ -1092,6 +1092,7 @@ xenParseSxpr(const struct sexpr *root,
const char *tmp; const char *tmp;
virDomainDefPtr def; virDomainDefPtr def;
int hvm = 0, vmlocaltime; int hvm = 0, vmlocaltime;
unsigned int vcpus;
if (!(def = virDomainDefNew())) if (!(def = virDomainDefNew()))
goto error; goto error;
@ -1175,9 +1176,13 @@ xenParseSxpr(const struct sexpr *root,
if (virDomainDefSetVcpusMax(def, sexpr_int(root, "domain/vcpus")) < 0) if (virDomainDefSetVcpusMax(def, sexpr_int(root, "domain/vcpus")) < 0)
goto error; goto error;
def->vcpus = count_one_bits_l(sexpr_u64(root, "domain/vcpu_avail"));
if (!def->vcpus || virDomainDefGetVcpusMax(def) < def->vcpus) vcpus = count_one_bits_l(sexpr_u64(root, "domain/vcpu_avail"));
def->vcpus = virDomainDefGetVcpusMax(def); if (!vcpus || virDomainDefGetVcpusMax(def) < vcpus)
vcpus = virDomainDefGetVcpusMax(def);
if (virDomainDefSetVcpus(def, vcpus) < 0)
goto error;
tmp = sexpr_node(root, "domain/on_poweroff"); tmp = sexpr_node(root, "domain/on_poweroff");
if (tmp != NULL) { if (tmp != NULL) {