mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-11 07:17:44 +00:00
qemu_migration.c: sleep first before checking for migration status.
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 522e81cbb5
)
This commit is contained in:
parent
d17b2d9d5d
commit
8ab12f1a5b
@ -2369,7 +2369,7 @@ qemuMigrationWaitForCompletion(virQEMUDriverPtr driver,
|
|||||||
|
|
||||||
jobInfo->type = VIR_DOMAIN_JOB_UNBOUNDED;
|
jobInfo->type = VIR_DOMAIN_JOB_UNBOUNDED;
|
||||||
|
|
||||||
while (jobInfo->type == VIR_DOMAIN_JOB_UNBOUNDED) {
|
while (1) {
|
||||||
/* Poll every 50ms for progress & to allow cancellation */
|
/* Poll every 50ms for progress & to allow cancellation */
|
||||||
struct timespec ts = { .tv_sec = 0, .tv_nsec = 50 * 1000 * 1000ull };
|
struct timespec ts = { .tv_sec = 0, .tv_nsec = 50 * 1000 * 1000ull };
|
||||||
|
|
||||||
@ -2391,6 +2391,9 @@ qemuMigrationWaitForCompletion(virQEMUDriverPtr driver,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (jobInfo->type != VIR_DOMAIN_JOB_UNBOUNDED)
|
||||||
|
break;
|
||||||
|
|
||||||
virObjectUnlock(vm);
|
virObjectUnlock(vm);
|
||||||
|
|
||||||
nanosleep(&ts, NULL);
|
nanosleep(&ts, NULL);
|
||||||
|
Loading…
Reference in New Issue
Block a user