On Wed, Feb 2, 2022 at 11:15 AM Dr. David Alan Gilbert <dgilb...@redhat.com> wrote: > > * Jack Wang (jinpu.w...@ionos.com) wrote: > > This allow address could be reused to avoid rdma_bind_addr error > > out. > > In what case do you get the error - after a failed migrate and then a > retry?
Yes, what I saw is in case of error, mgmt daemon pick one migration port, incoming rdma:[::]:8089: RDMA ERROR: Error: could not rdma_bind_addr Then try another -incoming rdma:[::]:8103, sometime it worked, sometimes need another try with other ports number. with this patch, I don't see the error anymore. > > Dave Thanks! > > > Signed-off-by: Jack Wang <jinpu.w...@ionos.com> > > --- > > migration/rdma.c | 7 +++++++ > > 1 file changed, 7 insertions(+) > > > > diff --git a/migration/rdma.c b/migration/rdma.c > > index 2e223170d06d..b498ef013c77 100644 > > --- a/migration/rdma.c > > +++ b/migration/rdma.c > > @@ -2705,6 +2705,7 @@ static int qemu_rdma_dest_init(RDMAContext *rdma, > > Error **errp) > > char ip[40] = "unknown"; > > struct rdma_addrinfo *res, *e; > > char port_str[16]; > > + int reuse = 1; > > > > for (idx = 0; idx < RDMA_WRID_MAX; idx++) { > > rdma->wr_data[idx].control_len = 0; > > @@ -2740,6 +2741,12 @@ static int qemu_rdma_dest_init(RDMAContext *rdma, > > Error **errp) > > goto err_dest_init_bind_addr; > > } > > > > + ret = rdma_set_option(listen_id, RDMA_OPTION_ID, > > RDMA_OPTION_ID_REUSEADDR, > > + &reuse, sizeof reuse); > > + if (ret) { > > + ERROR(errp, "Error: could not set REUSEADDR option"); > > + goto err_dest_init_bind_addr; > > + } > > for (e = res; e != NULL; e = e->ai_next) { > > inet_ntop(e->ai_family, > > &((struct sockaddr_in *) e->ai_dst_addr)->sin_addr, ip, sizeof > > ip); > > -- > > 2.25.1 > > > -- > Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK >