forked from pool/libvirt
32 lines
1.4 KiB
Diff
32 lines
1.4 KiB
Diff
|
commit 484cc3217b73b865f00bf42a9c12187b37200699
|
||
|
Author: Martin Kletzander <mkletzan@redhat.com>
|
||
|
Date: Fri Sep 20 16:40:20 2013 +0200
|
||
|
|
||
|
qemu: Fix seamless SPICE migration
|
||
|
|
||
|
Since the wait is done during migration (still inside
|
||
|
QEMU_ASYNC_JOB_MIGRATION_OUT), the code should enter the monitor as such
|
||
|
in order to prohibit all other jobs from interfering in the meantime.
|
||
|
This patch fixes bug #1009886 in which qemuDomainGetBlockInfo was
|
||
|
waiting on the monitor condition and after GetSpiceMigrationStatus
|
||
|
mangled its internal data, the daemon crashed.
|
||
|
|
||
|
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1009886
|
||
|
|
||
|
Index: libvirt-1.1.2/src/qemu/qemu_migration.c
|
||
|
===================================================================
|
||
|
--- libvirt-1.1.2.orig/src/qemu/qemu_migration.c
|
||
|
+++ libvirt-1.1.2/src/qemu/qemu_migration.c
|
||
|
@@ -1598,7 +1598,10 @@ qemuMigrationWaitForSpice(virQEMUDriverP
|
||
|
/* Poll every 50ms for progress & to allow cancellation */
|
||
|
struct timespec ts = { .tv_sec = 0, .tv_nsec = 50 * 1000 * 1000ull };
|
||
|
|
||
|
- qemuDomainObjEnterMonitor(driver, vm);
|
||
|
+ if (qemuDomainObjEnterMonitorAsync(driver, vm,
|
||
|
+ QEMU_ASYNC_JOB_MIGRATION_OUT) < 0)
|
||
|
+ return -1;
|
||
|
+
|
||
|
if (qemuMonitorGetSpiceMigrationStatus(priv->mon,
|
||
|
&spice_migrated) < 0) {
|
||
|
qemuDomainObjExitMonitor(driver, vm);
|