]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Properly reset non-p2p migration
authorJiri Denemark <jdenemar@redhat.com>
Wed, 26 Apr 2017 19:46:28 +0000 (21:46 +0200)
committerJiri Denemark <jdenemar@redhat.com>
Thu, 27 Apr 2017 11:55:46 +0000 (13:55 +0200)
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 <jdenemar@redhat.com>
src/qemu/qemu_migration.c

index 09adb048451fd7a4e7b3df3d70e90b4e674d62ec..42da706c9b85af0690d913350928bd7e4ace95ca 100644 (file)
@@ -4914,10 +4914,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);