]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Refresh memory size only on fresh starts
authorPeter Krempa <pkrempa@redhat.com>
Wed, 23 Sep 2015 12:19:06 +0000 (14:19 +0200)
committerCole Robinson <crobinso@redhat.com>
Wed, 23 Dec 2015 23:13:59 +0000 (18:13 -0500)
Qemu unfortunately doesn't update internal state right after migration
and so the actual balloon size as returned by 'query-balloon' are
invalid for a while after the CPUs are started after migration. If we'd
refresh our internal state at this point we would report invalid current
memory size until the next balloon event would arrive.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1242940
(cherry picked from commit d7a0386e229176ec67531aac1412b8a98914da8e)

src/qemu/qemu_process.c

index 694c5cd65bb9a6caa213f74ad0de8cbb33275bbc..c896c6c75bf7695f4c5b08109c4659264a9662a8 100644 (file)
@@ -5015,7 +5015,8 @@ int qemuProcessStart(virConnectPtr conn,
     /* Since CPUs were not started yet, the balloon could not return the memory
      * to the host and thus cur_balloon needs to be updated so that GetXMLdesc
      * and friends return the correct size in case they can't grab the job */
-    if (qemuProcessRefreshBalloonState(driver, vm, asyncJob) < 0)
+    if (!migrateFrom && !snapshot &&
+        qemuProcessRefreshBalloonState(driver, vm, asyncJob) < 0)
         goto cleanup;
 
     VIR_DEBUG("Detecting actual memory size for video device");