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
---
src/lxc/lxc_driver.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c
index 9c006e9..b47ac5e 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;
--
1.8.5.5