[libvirt] [PATCH] qemu: clean up migration ports when migration cancelled

From bfb2dafa8ea183781446c7cbe0376e1a2d41a5ae Mon Sep 17 00:00:00 2001 From: Zeng Junliang <zengjunliang@huawei.com> Date: Wed, 6 Nov 2013 11:36:57 +0800 Subject: [PATCH] qemu: clean up migration ports when migration cancelled
If there's a migration cancelled, the bitmap of migration port should be cleaned up too. Signed-off-by: Zeng Junliang <zengjunliang@huawei.com> --- src/qemu/qemu_migration.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 4f35a7a..594d1cd 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -4387,12 +4387,16 @@ qemuMigrationFinish(virQEMUDriverPtr driver, qemuDomainObjPrivatePtr priv = vm->privateData; virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); virCapsPtr caps = NULL; + unsigned short port = 0; 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); -- 1.7.3.1.msysgit.0 Best Regards, -WangYufei

On Wed, Nov 06, 2013 at 04:17:05 +0000, Wangyufei (A) wrote:
From bfb2dafa8ea183781446c7cbe0376e1a2d41a5ae Mon Sep 17 00:00:00 2001 From: Zeng Junliang <zengjunliang@huawei.com> Date: Wed, 6 Nov 2013 11:36:57 +0800 Subject: [PATCH] qemu: clean up migration ports when migration cancelled
If there's a migration cancelled, the bitmap of migration port should be cleaned up too.
Signed-off-by: Zeng Junliang <zengjunliang@huawei.com> --- src/qemu/qemu_migration.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 4f35a7a..594d1cd 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -4387,12 +4387,16 @@ qemuMigrationFinish(virQEMUDriverPtr driver, qemuDomainObjPrivatePtr priv = vm->privateData; virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); virCapsPtr caps = NULL; + unsigned short port = 0;
No need to initialize port here.
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);
ACK and pushed. My bad for not spotting thins while reviewing the original patch. Jirka

It's ok. I applied the original patch and I didn't notice it too. No body is perfect. Fortunately, we found and fixed it immediately. I'll be much more careful next time. Thanks a lot.
-----Original Message----- From: Jiri Denemark [mailto:jdenemar@redhat.com] Sent: Wednesday, November 06, 2013 10:09 PM To: Wangyufei (A) Cc: libvir-list@redhat.com; Zengjunliang; Wangrui (K) Subject: Re: [libvirt] [PATCH] qemu: clean up migration ports when migration cancelled
On Wed, Nov 06, 2013 at 04:17:05 +0000, Wangyufei (A) wrote:
From bfb2dafa8ea183781446c7cbe0376e1a2d41a5ae Mon Sep 17 00:00:00 2001 From: Zeng Junliang <zengjunliang@huawei.com> Date: Wed, 6 Nov 2013 11:36:57 +0800 Subject: [PATCH] qemu: clean up migration ports when migration cancelled
If there's a migration cancelled, the bitmap of migration port should be cleaned up too.
Signed-off-by: Zeng Junliang <zengjunliang@huawei.com> --- src/qemu/qemu_migration.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 4f35a7a..594d1cd 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -4387,12 +4387,16 @@ qemuMigrationFinish(virQEMUDriverPtr driver, qemuDomainObjPrivatePtr priv = vm->privateData; virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); virCapsPtr caps = NULL; + unsigned short port = 0;
No need to initialize port here.
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);
ACK and pushed. My bad for not spotting thins while reviewing the original patch.
Jirka
participants (2)
-
Jiri Denemark
-
Wangyufei (A)