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@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(a)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