[libvirt] [PATCH 09/21] qemu: migration: src: nbdtunnel unix socket

John Ferlan jferlan at redhat.com
Mon Dec 14 15:02:13 UTC 2015



On 11/18/2015 01:13 PM, Pavel Boldin wrote:
> Create a UNIX socket that will be a target for outgoing NBD connection
> from the QEMU side.
> 
> Signed-off-by: Pavel Boldin <pboldin at mirantis.com>
> ---
>  src/qemu/qemu_migration.c | 24 +++++++++++++++++++++++-
>  1 file changed, 23 insertions(+), 1 deletion(-)
> 
> diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
> index fb2a216..d587c56 100644
> --- a/src/qemu/qemu_migration.c
> +++ b/src/qemu/qemu_migration.c
> @@ -4597,7 +4597,7 @@ static int doTunnelMigrate(virQEMUDriverPtr driver,
>                             size_t nmigrate_disks,
>                             const char **migrate_disks)
>  {
> -    virNetSocketPtr sock = NULL;
> +    virNetSocketPtr sock = NULL, nbdSock = NULL;
>      int ret = -1;
>      qemuMigrationSpec spec;
>      virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
> @@ -4613,6 +4613,23 @@ static int doTunnelMigrate(virQEMUDriverPtr driver,
>      spec.fwdType = MIGRATION_FWD_STREAM;
>      spec.fwd.stream = st;
>  
> +    if (nmigrate_disks) {
> +        spec.nbd_tunnel_unix_socket.sock = -1;
> +        spec.nbd_tunnel_unix_socket.file = NULL;
> +
> +        if (virAsprintf(&spec.nbd_tunnel_unix_socket.file,
> +                        "%s/domain-%s/qemu.nbdtunnelmigrate.src",
> +                        cfg->libDir, vm->def->name) < 0)
> +            goto cleanup;
> +
> +        if (virNetSocketNewListenUNIX(spec.nbd_tunnel_unix_socket.file, 0700,
> +                                      cfg->user, cfg->group,
> +                                      &nbdSock) < 0 ||
> +            virNetSocketListen(nbdSock, 1) < 0)
> +            goto cleanup;
> +
> +        spec.nbd_tunnel_unix_socket.sock = virNetSocketGetFD(nbdSock);
> +    }

We can now get to cleanup without "spec.destType" being set.  The first
thing it does is check it - so it's uninitialized according to Coverity.

Probably need to move the following 2 lines up

>  
>      spec.destType = MIGRATION_DEST_FD;
>      spec.dest.fd.qemu = -1;
> @@ -4643,6 +4660,11 @@ static int doTunnelMigrate(virQEMUDriverPtr driver,
>          VIR_FREE(spec.dest.unix_socket.file);
>      }
>  
> +    if (nmigrate_disks) {
> +        virObjectUnref(nbdSock);

?? VIR_FORCE_CLOSE(spec.nbd_tunnel_unix_socket.sock);

John

> +        VIR_FREE(spec.nbd_tunnel_unix_socket.file);
> +    }
> +
>      virObjectUnref(cfg);
>      return ret;
>  }
> 




More information about the libvir-list mailing list