]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: clean up migration ports when migration cancelled
authorZeng Junliang <zengjunliang@huawei.com>
Wed, 6 Nov 2013 03:36:57 +0000 (11:36 +0800)
committerJiri Denemark <jdenemar@redhat.com>
Wed, 6 Nov 2013 14:08:43 +0000 (15:08 +0100)
If there's a migration cancelled, the bitmap of migration port should be
cleaned up too.

Signed-off-by: Zeng Junliang <zengjunliang@huawei.com>
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
src/qemu/qemu_migration.c

index 4f35a7a3e7db84ae086a8b01818af26d78aa032c..7d8b7274c718bb053de2b8b34d77f4ddbe88bb1e 100644 (file)
@@ -4387,12 +4387,16 @@ qemuMigrationFinish(virQEMUDriverPtr driver,
     qemuDomainObjPrivatePtr priv = vm->privateData;
     virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
     virCapsPtr caps = NULL;
+    unsigned short port;
 
     VIR_DEBUG("driver=%p, dconn=%p, vm=%p, cookiein=%s, cookieinlen=%d, "
               "cookieout=%p, cookieoutlen=%p, flags=%lx, retcode=%d",
               driver, dconn, vm, NULLSTR(cookiein), cookieinlen,
               cookieout, cookieoutlen, flags, retcode);
 
+    port = priv->migrationPort;
+    priv->migrationPort = 0;
+
     if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
         goto cleanup;
 
@@ -4439,8 +4443,6 @@ qemuMigrationFinish(virQEMUDriverPtr driver,
         }
 
         qemuMigrationStopNBDServer(driver, vm, mig);
-        virPortAllocatorRelease(driver->migrationPorts, priv->migrationPort);
-        priv->migrationPort = 0;
 
         if (flags & VIR_MIGRATE_PERSIST_DEST) {
             virDomainDefPtr vmdef;
@@ -4573,6 +4575,7 @@ endjob:
     }
 
 cleanup:
+    virPortAllocatorRelease(driver->migrationPorts, port);
     if (vm) {
         VIR_FREE(priv->origname);
         virObjectUnlock(vm);