VIR_DELETE_ELEMENT(def->mems, idx, def->nmems);
- /* fix up balloon size */
- if (def->mem.cur_balloon > virDomainDefGetMemoryTotal(def))
- def->mem.cur_balloon = virDomainDefGetMemoryTotal(def);
-
/* fix total memory size of the domain */
virDomainDefSetMemoryTotal(def, memory - ret->size);
return -1;
}
- if (vmdef->mem.cur_balloon == virDomainDefGetMemoryTotal(vmdef))
- vmdef->mem.cur_balloon += dev->data.memory->size;
+ vmdef->mem.cur_balloon += dev->data.memory->size;
if (virDomainMemoryInsert(vmdef, dev->data.memory) < 0)
return -1;
virDomainControllerDefPtr cont, det_cont;
virDomainChrDefPtr chr;
virDomainFSDefPtr fs;
+ virDomainMemoryDefPtr mem;
int idx;
switch ((virDomainDeviceType) dev->type) {
_("matching memory device was not found"));
return -1;
}
-
- virDomainMemoryDefFree(virDomainMemoryRemove(vmdef, idx));
+ mem = virDomainMemoryRemove(vmdef, idx);
+ vmdef->mem.cur_balloon -= mem->size;
+ virDomainMemoryDefFree(mem);
break;
case VIR_DOMAIN_DEVICE_REDIRDEV: