} else {
/* resize the current memory */
+ unsigned long oldmax = 0;
- if (newmem > vm->def->mem.max_balloon) {
+ if (flags & VIR_DOMAIN_AFFECT_LIVE)
+ oldmax = vm->def->mem.max_balloon;
+ if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
+ if (!oldmax || oldmax > persistentDef->mem.max_balloon)
+ oldmax = persistentDef->mem.max_balloon;
+ }
+
+ if (newmem > oldmax) {
virReportError(VIR_ERR_INVALID_ARG, "%s",
_("cannot set memory higher than max memory"));
goto endjob;
virDomainDefPtr persistentDef;
int ret = -1;
bool maximum;
+ unsigned int maxvcpus = 0;
virQEMUDriverConfigPtr cfg = NULL;
virCapsPtr caps = NULL;
qemuAgentCPUInfoPtr cpuinfo = NULL;
goto endjob;
}
- if (!maximum && nvcpus > vm->def->maxvcpus) {
+ if (flags & VIR_DOMAIN_AFFECT_LIVE)
+ maxvcpus = vm->def->maxvcpus;
+ if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
+ if (!maxvcpus || maxvcpus > persistentDef->maxvcpus)
+ maxvcpus = persistentDef->maxvcpus;
+ }
+ if (!maximum && nvcpus > maxvcpus) {
virReportError(VIR_ERR_INVALID_ARG,
_("requested vcpus is greater than max allowable"
" vcpus for the domain: %d > %d"),
- nvcpus, vm->def->maxvcpus);
+ nvcpus, maxvcpus);
goto endjob;
}