From ba8c83614a6e0f1600d4b31abab8445b812dc1d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A1n=20Tomko?= Date: Thu, 26 Jun 2014 09:13:25 +0200 Subject: [PATCH] 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 --- 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 9c006e9c2f..b47ac5ed6a 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;