All data is sent by multifd Channels, so we only register its for multifd channels and main channel don't register its.
Signed-off-by: Zhimin Feng <fengzhim...@huawei.com> --- migration/rdma.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/migration/rdma.c b/migration/rdma.c index eb7c2edbe7..b7b56c0493 100644 --- a/migration/rdma.c +++ b/migration/rdma.c @@ -3717,6 +3717,12 @@ static int qemu_rdma_registration_stop(QEMUFile *f, void *opaque, qemu_sem_post(&multifd_send_param->sem_sync); } + + /* + * Use multifd to migrate, we only register memory for + * multifd RDMA channel and main channel don't register it. + */ + goto wait_reg_complete; } /* @@ -3778,6 +3784,7 @@ static int qemu_rdma_registration_stop(QEMUFile *f, void *opaque, local->block[i].remote_rkey = rdma->dest_blocks[i].remote_rkey; } +wait_reg_complete: /* Wait for all multifd channels to complete registration */ if (migrate_use_multifd()) { int i; -- 2.19.1