]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu_migration.c: sleep first before checking for migration status.
authorXing Lin <xinglin@cs.utah.edu>
Thu, 9 Apr 2015 22:02:02 +0000 (16:02 -0600)
committerCole Robinson <crobinso@redhat.com>
Tue, 28 Apr 2015 15:14:10 +0000 (11:14 -0400)
The problem with the previous implementation is,
even when qemuMigrationUpdateJobStatus() detects a migration job
has completed, it will do a sleep for 50 ms (which is unnecessary
and only adds up to the VM pause time).

Signed-off-by: Xing Lin <xinglin@cs.utah.edu>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
(cherry picked from commit 522e81cbb501e9772fbafba975ac886c1b4a283d)

src/qemu/qemu_migration.c

index 5daf12f38feedbdba77561b5849320d7688483bb..9fa58cada106d201489b1f57006a9e997ac7c4bf 100644 (file)
@@ -2369,7 +2369,7 @@ qemuMigrationWaitForCompletion(virQEMUDriverPtr driver,
 
     jobInfo->type = VIR_DOMAIN_JOB_UNBOUNDED;
 
-    while (jobInfo->type == VIR_DOMAIN_JOB_UNBOUNDED) {
+    while (1) {
         /* Poll every 50ms for progress & to allow cancellation */
         struct timespec ts = { .tv_sec = 0, .tv_nsec = 50 * 1000 * 1000ull };
 
@@ -2391,6 +2391,9 @@ qemuMigrationWaitForCompletion(virQEMUDriverPtr driver,
             break;
         }
 
+        if (jobInfo->type != VIR_DOMAIN_JOB_UNBOUNDED)
+            break;
+
         virObjectUnlock(vm);
 
         nanosleep(&ts, NULL);