mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-24 13:35:17 +00:00
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 (cherry picked from commit 484cc3217b73b865f00bf42a9c12187b37200699)
This commit is contained in:
parent
7659e912c5
commit
fea2550974
@ -1598,7 +1598,10 @@ qemuMigrationWaitForSpice(virQEMUDriverPtr driver,
|
|||||||
/* 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 };
|
||||||
|
|
||||||
qemuDomainObjEnterMonitor(driver, vm);
|
if (qemuDomainObjEnterMonitorAsync(driver, vm,
|
||||||
|
QEMU_ASYNC_JOB_MIGRATION_OUT) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
if (qemuMonitorGetSpiceMigrationStatus(priv->mon,
|
if (qemuMonitorGetSpiceMigrationStatus(priv->mon,
|
||||||
&spice_migrated) < 0) {
|
&spice_migrated) < 0) {
|
||||||
qemuDomainObjExitMonitor(driver, vm);
|
qemuDomainObjExitMonitor(driver, vm);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user