[libvirt] [PATCHv2] qemu: Fix issues with maxMemory in qemuDomainSetMemoryFlags()

Martin Kletzander mkletzan at redhat.com
Wed Apr 1 09:02:26 UTC 2015


On Mon, Mar 30, 2015 at 09:01:37PM +0200, Peter Krempa wrote:
>From: Luyao Huang <lhuang at redhat.com>
>
>qemuDomainSetMemoryFlags() would allow to set the initial memory greater
>than the <maxMemory> field. While the configuration would not work as
>memory hotplug requires NUMA to be enabled and the
>qemuDomainSetMemoryFlags() API does not work on NUMA guests this just
>fixes a corner case.
>

ACK, since it's a corner-case, after release.

>The fix is still worth though as it allows to induce an invalid
>configuration and make the VM vanish on libvirt restart.
>
>Additionally this tweaks error message to be more accurate.
>
>Signed-off-by: Luyao Huang <lhuang at redhat.com>
>Signed-off-by: Peter Krempa <pkrempa at redhat.com>
>---
>Version 2 tweaks the error messages to be (possibly) more descriptive.
>
> src/qemu/qemu_driver.c | 10 +++++++++-
> 1 file changed, 9 insertions(+), 1 deletion(-)
>
>diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
>index 6700fc9..d15931c 100644
>--- a/src/qemu/qemu_driver.c
>+++ b/src/qemu/qemu_driver.c
>@@ -2319,11 +2319,19 @@ static int qemuDomainSetMemoryFlags(virDomainPtr dom, unsigned long newmem,
>              * is no way to change the individual node sizes with this API */
>             if (virDomainNumaGetNodeCount(persistentDef->numa) > 0) {
>                 virReportError(VIR_ERR_OPERATION_INVALID, "%s",
>-                               _("maximum memory size of a domain with NUMA "
>+                               _("initial memory size of a domain with NUMA "
>                                  "nodes cannot be modified with this API"));
>                 goto endjob;
>             }
>
>+            if (persistentDef->mem.max_memory &&
>+                persistentDef->mem.max_memory < newmem) {
>+                virReportError(VIR_ERR_OPERATION_INVALID, "%s",
>+                               _("cannot set initial memory size biger than "
>+                                 "the maximum memory size"));
>+                goto endjob;
>+            }
>+
>             virDomainDefSetMemoryInitial(persistentDef, newmem);
>
>             if (persistentDef->mem.cur_balloon > newmem)
>--
>2.2.2
>
>--
>libvir-list mailing list
>libvir-list at redhat.com
>https://www.redhat.com/mailman/listinfo/libvir-list
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150401/09c9c2ad/attachment-0001.sig>


More information about the libvir-list mailing list