From 81d8546556f74d0052cbe2a2c3287bc9d796bf32 Mon Sep 17 00:00:00 2001 Message-Id: <81d8546556f74d0052cbe2a2c3287bc9d796bf32@dist-git> From: Jiri Denemark Date: Thu, 27 Apr 2017 14:08:40 +0200 Subject: [PATCH] qemu: Properly reset non-p2p migration While peer-to-peer migration enters the Confirm phase even if the Perform phase fails, the client which initiated a non-p2p migration will never call virDomainMigrateConfirm* API if the Perform phase failed. Thus we need to explicitly reset migration before reporting a failure from the Perform phase API. https://bugzilla.redhat.com/show_bug.cgi?id=1425003 Signed-off-by: Jiri Denemark (cherry picked from commit eeb2feb9fbb66ea9026edc6451018fb3b94ffa58) Signed-off-by: Jiri Denemark --- src/qemu/qemu_migration.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 8c6d1385e..8cbad894c 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -4902,10 +4902,13 @@ qemuMigrationPerformPhase(virQEMUDriverPtr driver, goto endjob; endjob: - if (ret < 0) + if (ret < 0) { + qemuMigrationReset(driver, vm, QEMU_ASYNC_JOB_MIGRATION_OUT); qemuMigrationJobFinish(driver, vm); - else + } else { qemuMigrationJobContinue(vm); + } + if (!virDomainObjIsActive(vm)) qemuDomainRemoveInactive(driver, vm); -- 2.12.2