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

Jiri Denemark jdenemar at redhat.com
Wed Nov 6 14:09:07 UTC 2013


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 at 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 at 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




More information about the libvir-list mailing list