[libvirt] [PATCH 1/1] qemu: libvirt live migration over RDMA of ipv6 addr failed

Jiri Denemark jdenemar at redhat.com
Thu Feb 9 18:51:50 UTC 2017


On Fri, Jan 27, 2017 at 09:01:43 -0600, David Dai wrote:
> Using libvirt to do live migration over RDMA via ip v6 address failed. 
> For example:
> # virsh migrate  --live --migrateuri rdma://[deba::2222]:49152  \
>               rhel73_host1_guest1 qemu+ssh://[deba::2222]/system --verbose
> root at deba::2222's password:
> error: internal error: unable to execute QEMU command 'migrate': RDMA ERROR:  
>                   could not rdma_getaddrinfo address deba
> 
> As we can see, the ip v6 address used by rdma_getaddrinfo() has only "deba" 
> part. It should be "deba::2222".
...
> 
> Signed-off-by: David Dai <zdai at linux.vnet.ibm.com>
> ---
>  src/qemu/qemu_monitor.c |    8 ++++++--
>  1 files changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
> index b7be5e7..258665c 100644
> --- a/src/qemu/qemu_monitor.c
> +++ b/src/qemu/qemu_monitor.c
> @@ -2577,8 +2577,12 @@ qemuMonitorMigrateToHost(qemuMonitorPtr mon,
>  
>      QEMU_CHECK_MONITOR(mon);
>  
> -    if (virAsprintf(&uri, "%s:%s:%d", protocol, hostname, port) < 0)
> -        return -1;
> +    if (strchr(hostname, ':')) {
> +        if (virAsprintf(&uri, "%s:[%s]:%d", protocol, hostname, port) < 0)
> +            return -1;
> +    } else if (virAsprintf(&uri, "%s:%s:%d", protocol, hostname, port) < 0) {
> +            return -1;

Wrong indentation.

> +    }
>  
>      if (mon->json)
>          ret = qemuMonitorJSONMigrate(mon, flags, uri);

Oops. Normal (non-RDMA) migration uses the connection initiated by
libvirt and this code was only used with old QEMU which did not support
migration to a FD... until RDMA migration was introduced.

Thanks for fixing the issue. ACK and pushed after striping most of the
commit message as we don't really need to track the history of the
patch.

Jirka




More information about the libvir-list mailing list