From: Ján Tomko Date: Thu, 26 Jun 2014 07:13:25 +0000 (+0200) Subject: LXC: Allow setting max mem lower than current mem X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=ba8c83614a6e0f1600d4b31abab8445b812dc1d8;p=people%2Fliuw%2Flibxenctrl-split%2Flibvirt.git LXC: Allow setting max mem lower than current mem For inactive domains, set both current and maximum memory to the specified 'maximum memory' value. This matches the behavior of QEMU driver's SetMaxMemory. https://bugzilla.redhat.com/show_bug.cgi?id=1091132 --- diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index 9c006e9c2..b47ac5ed6 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -692,9 +692,14 @@ static int lxcDomainSetMaxMemory(virDomainPtr dom, unsigned long newmax) goto cleanup; if (newmax < vm->def->mem.cur_balloon) { - virReportError(VIR_ERR_INVALID_ARG, - "%s", _("Cannot set max memory lower than current memory")); - goto cleanup; + if (!virDomainObjIsActive(vm)) { + vm->def->mem.cur_balloon = newmax; + } else { + virReportError(VIR_ERR_OPERATION_INVALID, "%s", + _("Cannot set max memory lower than current" + " memory for an active domain")); + goto cleanup; + } } vm->def->mem.max_balloon = newmax;