mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-10 23:07:44 +00:00
qemu: Wait until destination QEMU consumes all migration data
Even though QEMU on the source host reports completed migration and thus we move to the Finish phase, QEMU on the destination host may still be processing migration data. Thus before we can start guest CPUs on the destination, we have to wait for a completed migration event. https://bugzilla.redhat.com/show_bug.cgi?id=1265902 Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
This commit is contained in:
parent
829c62b7a5
commit
be5347bb72
@ -5725,6 +5725,27 @@ qemuMigrationFinish(virQEMUDriverPtr driver,
|
||||
}
|
||||
}
|
||||
|
||||
/* We need to wait for QEMU to process all data sent by the source
|
||||
* before starting guest CPUs.
|
||||
*/
|
||||
if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_EVENT)) {
|
||||
int rv;
|
||||
VIR_DEBUG("Waiting for migration to complete");
|
||||
while ((rv = qemuMigrationCompleted(driver, vm,
|
||||
QEMU_ASYNC_JOB_MIGRATION_IN,
|
||||
NULL, 0)) != 1) {
|
||||
if (rv < 0 || virDomainObjWait(vm) < 0) {
|
||||
/* There's not much we can do for v2 protocol since the
|
||||
* original domain on the source host is already gone.
|
||||
*/
|
||||
if (v3proto)
|
||||
goto endjob;
|
||||
else
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!(flags & VIR_MIGRATE_PAUSED)) {
|
||||
/* run 'cont' on the destination, which allows migration on qemu
|
||||
* >= 0.10.6 to work properly. This isn't strictly necessary on
|
||||
|
Loading…
Reference in New Issue
Block a user