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
>

Reply via email to