All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] migration/rdma: Increase the backlog from 5 to 128
@ 2022-02-01 15:11 Jack Wang
  2022-02-01 15:11 ` [PATCH 2/2] migration/rdma: set the REUSEADDR option for destination Jack Wang
  2022-02-01 18:19 ` [PATCH 1/2] migration/rdma: Increase the backlog from 5 to 128 Pankaj Gupta
  0 siblings, 2 replies; 13+ messages in thread
From: Jack Wang @ 2022-02-01 15:11 UTC (permalink / raw)
  To: quintela, dgilbert; +Cc: qemu-devel, pankaj.gupta

So it can handle more incoming requests.

Signed-off-by: Jack Wang <jinpu.wang@ionos.com>
---
 migration/rdma.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/migration/rdma.c b/migration/rdma.c
index c7c7a384875b..2e223170d06d 100644
--- a/migration/rdma.c
+++ b/migration/rdma.c
@@ -4238,7 +4238,7 @@ void rdma_start_incoming_migration(const char *host_port, Error **errp)
 
     trace_rdma_start_incoming_migration_after_dest_init();
 
-    ret = rdma_listen(rdma->listen_id, 5);
+    ret = rdma_listen(rdma->listen_id, 128);
 
     if (ret) {
         ERROR(errp, "listening on socket!");
-- 
2.25.1



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 2/2] migration/rdma: set the REUSEADDR option for destination
  2022-02-01 15:11 [PATCH 1/2] migration/rdma: Increase the backlog from 5 to 128 Jack Wang
@ 2022-02-01 15:11 ` Jack Wang
  2022-02-01 18:39   ` Pankaj Gupta
  2022-02-02 10:15   ` Dr. David Alan Gilbert
  2022-02-01 18:19 ` [PATCH 1/2] migration/rdma: Increase the backlog from 5 to 128 Pankaj Gupta
  1 sibling, 2 replies; 13+ messages in thread
From: Jack Wang @ 2022-02-01 15:11 UTC (permalink / raw)
  To: quintela, dgilbert; +Cc: qemu-devel, pankaj.gupta

This allow address could be reused to avoid rdma_bind_addr error
out.

Signed-off-by: Jack Wang <jinpu.wang@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



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/2] migration/rdma: Increase the backlog from 5 to 128
  2022-02-01 15:11 [PATCH 1/2] migration/rdma: Increase the backlog from 5 to 128 Jack Wang
  2022-02-01 15:11 ` [PATCH 2/2] migration/rdma: set the REUSEADDR option for destination Jack Wang
@ 2022-02-01 18:19 ` Pankaj Gupta
  2022-02-01 20:32   ` Jinpu Wang
  1 sibling, 1 reply; 13+ messages in thread
From: Pankaj Gupta @ 2022-02-01 18:19 UTC (permalink / raw)
  To: Jack Wang; +Cc: qemu-devel, dgilbert, quintela

> So it can handle more incoming requests.
>
> Signed-off-by: Jack Wang <jinpu.wang@ionos.com>
> ---
>  migration/rdma.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/migration/rdma.c b/migration/rdma.c
> index c7c7a384875b..2e223170d06d 100644
> --- a/migration/rdma.c
> +++ b/migration/rdma.c
> @@ -4238,7 +4238,7 @@ void rdma_start_incoming_migration(const char *host_port, Error **errp)
>
>      trace_rdma_start_incoming_migration_after_dest_init();
>
> -    ret = rdma_listen(rdma->listen_id, 5);
> +    ret = rdma_listen(rdma->listen_id, 128);

128 backlog seems too much to me. Any reason for choosing this number.
Any rationale to choose this number?

Thanks,
Pankaj

>
>      if (ret) {
>          ERROR(errp, "listening on socket!");
> --
> 2.25.1
>


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/2] migration/rdma: set the REUSEADDR option for destination
  2022-02-01 15:11 ` [PATCH 2/2] migration/rdma: set the REUSEADDR option for destination Jack Wang
@ 2022-02-01 18:39   ` Pankaj Gupta
  2022-02-01 20:43     ` Jinpu Wang
  2022-02-02 10:15   ` Dr. David Alan Gilbert
  1 sibling, 1 reply; 13+ messages in thread
From: Pankaj Gupta @ 2022-02-01 18:39 UTC (permalink / raw)
  To: Jack Wang; +Cc: qemu-devel, dgilbert, quintela

> This allow address could be reused to avoid rdma_bind_addr error
> out.

Seems we are proposing to allow multiple connections on same source ip
port pair?
>
> Signed-off-by: Jack Wang <jinpu.wang@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);

maybe we can just write '1' directly on the argument list of 'rdma_set_option'.
Assuming reuseaddr does not effect core rdma transport? change seems ok to me.

Thanks,
Pankaj

> +    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
>


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/2] migration/rdma: Increase the backlog from 5 to 128
  2022-02-01 18:19 ` [PATCH 1/2] migration/rdma: Increase the backlog from 5 to 128 Pankaj Gupta
@ 2022-02-01 20:32   ` Jinpu Wang
  2022-02-02  6:27     ` Pankaj Gupta
  0 siblings, 1 reply; 13+ messages in thread
From: Jinpu Wang @ 2022-02-01 20:32 UTC (permalink / raw)
  To: Pankaj Gupta; +Cc: qemu-devel, dgilbert, quintela

On Tue, Feb 1, 2022 at 7:19 PM Pankaj Gupta <pankaj.gupta@ionos.com> wrote:
>
> > So it can handle more incoming requests.
> >
> > Signed-off-by: Jack Wang <jinpu.wang@ionos.com>
> > ---
> >  migration/rdma.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/migration/rdma.c b/migration/rdma.c
> > index c7c7a384875b..2e223170d06d 100644
> > --- a/migration/rdma.c
> > +++ b/migration/rdma.c
> > @@ -4238,7 +4238,7 @@ void rdma_start_incoming_migration(const char *host_port, Error **errp)
> >
> >      trace_rdma_start_incoming_migration_after_dest_init();
> >
> > -    ret = rdma_listen(rdma->listen_id, 5);
> > +    ret = rdma_listen(rdma->listen_id, 128);
>
> 128 backlog seems too much to me. Any reason for choosing this number.
> Any rationale to choose this number?
>
128 is the default value of SOMAXCONN, I can use that if it is preferred.

> Thanks,
> Pankaj

Thanks!
>
> >
> >      if (ret) {
> >          ERROR(errp, "listening on socket!");
> > --
> > 2.25.1
> >


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/2] migration/rdma: set the REUSEADDR option for destination
  2022-02-01 18:39   ` Pankaj Gupta
@ 2022-02-01 20:43     ` Jinpu Wang
  2022-02-02  4:57       ` Pankaj Gupta
  0 siblings, 1 reply; 13+ messages in thread
From: Jinpu Wang @ 2022-02-01 20:43 UTC (permalink / raw)
  To: Pankaj Gupta; +Cc: qemu-devel, dgilbert, quintela

On Tue, Feb 1, 2022 at 7:39 PM Pankaj Gupta <pankaj.gupta@ionos.com> wrote:
>
> > This allow address could be reused to avoid rdma_bind_addr error
> > out.
>
> Seems we are proposing to allow multiple connections on same source ip
> port pair?
according to the man page, it's more about the destination side which
is the incoming side.[1]
We hit the error on the migration target when there are many migration
tests in parallel:
"RDMA ERROR: Error: could not rdma_bind_addr!"

[1]https://manpages.debian.org/testing/librdmacm-dev/rdma_set_option.3.en.html
> >
> > Signed-off-by: Jack Wang <jinpu.wang@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);
>
> maybe we can just write '1' directly on the argument list of 'rdma_set_option'.
> Assuming reuseaddr does not effect core rdma transport? change seems ok to me.
I feel it's cleaner to do it with a variable than force conversion of
1 to void *.

It's bound to the cm_id which is newly created a few lines above, so
does not affect core rdma transport.

>
> Thanks,
> Pankaj
Thanks for the review!

Jinpu Wang
>
> > +    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
> >


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/2] migration/rdma: set the REUSEADDR option for destination
  2022-02-01 20:43     ` Jinpu Wang
@ 2022-02-02  4:57       ` Pankaj Gupta
  0 siblings, 0 replies; 13+ messages in thread
From: Pankaj Gupta @ 2022-02-02  4:57 UTC (permalink / raw)
  To: Jinpu Wang; +Cc: qemu-devel, dgilbert, quintela

> > > This allow address could be reused to avoid rdma_bind_addr error
> > > out.
> >
> > Seems we are proposing to allow multiple connections on same source ip
> > port pair?
> according to the man page, it's more about the destination side which
> is the incoming side.[1]

By source here I meant generic ip port address pair binding. For this case it is
at destination live migration host.

> We hit the error on the migration target when there are many migration
> tests in parallel:
> "RDMA ERROR: Error: could not rdma_bind_addr!"
o.k. Worth to add this in commit message.

>
> [1]https://manpages.debian.org/testing/librdmacm-dev/rdma_set_option.3.en.html
> > >
> > > Signed-off-by: Jack Wang <jinpu.wang@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);
> >
> > maybe we can just write '1' directly on the argument list of 'rdma_set_option'.
> > Assuming reuseaddr does not effect core rdma transport? change seems ok to me.
> I feel it's cleaner to do it with a variable than force conversion of
> 1 to void *.

Adding typecasted 1 seems more cleaner than adding another auto variable.
Will leave this to maintainers to decide.
>
> It's bound to the cm_id which is newly created a few lines above, so
> does not affect core rdma transport.

o.k.
>
> >
> > Thanks,
> > Pankaj
> Thanks for the review!
>
> Jinpu Wang
> >
> > > +    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
> > >


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/2] migration/rdma: Increase the backlog from 5 to 128
  2022-02-01 20:32   ` Jinpu Wang
@ 2022-02-02  6:27     ` Pankaj Gupta
  2022-02-02  6:37       ` Pankaj Gupta
  0 siblings, 1 reply; 13+ messages in thread
From: Pankaj Gupta @ 2022-02-02  6:27 UTC (permalink / raw)
  To: Jinpu Wang; +Cc: qemu-devel, dgilbert, quintela

> > > So it can handle more incoming requests.
> > >
> > > Signed-off-by: Jack Wang <jinpu.wang@ionos.com>
> > > ---
> > >  migration/rdma.c | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/migration/rdma.c b/migration/rdma.c
> > > index c7c7a384875b..2e223170d06d 100644
> > > --- a/migration/rdma.c
> > > +++ b/migration/rdma.c
> > > @@ -4238,7 +4238,7 @@ void rdma_start_incoming_migration(const char *host_port, Error **errp)
> > >
> > >      trace_rdma_start_incoming_migration_after_dest_init();
> > >
> > > -    ret = rdma_listen(rdma->listen_id, 5);
> > > +    ret = rdma_listen(rdma->listen_id, 128);
> >
> > 128 backlog seems too much to me. Any reason for choosing this number.
> > Any rationale to choose this number?
> >
> 128 is the default value of SOMAXCONN, I can use that if it is preferred.

AFAICS backlog is only applicable with RDMA iWARP CM mode. Maybe we
can increase it to 128.
Maybe you can also share any testing data for multiple concurrent live
migrations using RDMA, please.

Thanks,
Pankaj

Thanks,
Pankaj


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/2] migration/rdma: Increase the backlog from 5 to 128
  2022-02-02  6:27     ` Pankaj Gupta
@ 2022-02-02  6:37       ` Pankaj Gupta
  2022-02-02  9:20         ` Dr. David Alan Gilbert
  0 siblings, 1 reply; 13+ messages in thread
From: Pankaj Gupta @ 2022-02-02  6:37 UTC (permalink / raw)
  To: Jinpu Wang; +Cc: qemu-devel, dgilbert, quintela

> > > >  migration/rdma.c | 2 +-
> > > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > >
> > > > diff --git a/migration/rdma.c b/migration/rdma.c
> > > > index c7c7a384875b..2e223170d06d 100644
> > > > --- a/migration/rdma.c
> > > > +++ b/migration/rdma.c
> > > > @@ -4238,7 +4238,7 @@ void rdma_start_incoming_migration(const char *host_port, Error **errp)
> > > >
> > > >      trace_rdma_start_incoming_migration_after_dest_init();
> > > >
> > > > -    ret = rdma_listen(rdma->listen_id, 5);
> > > > +    ret = rdma_listen(rdma->listen_id, 128);
> > >
> > > 128 backlog seems too much to me. Any reason for choosing this number.
> > > Any rationale to choose this number?
> > >
> > 128 is the default value of SOMAXCONN, I can use that if it is preferred.
>
> AFAICS backlog is only applicable with RDMA iWARP CM mode. Maybe we
> can increase it to 128.these many

Or maybe we first increase it to 20 or 32? or so to avoid memory
overhead if we are not
using these many connections at the same time.

> Maybe you can also share any testing data for multiple concurrent live
> migrations using RDMA, please.
>
> Thanks,
> Pankaj
>
> Thanks,
> Pankaj


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/2] migration/rdma: Increase the backlog from 5 to 128
  2022-02-02  6:37       ` Pankaj Gupta
@ 2022-02-02  9:20         ` Dr. David Alan Gilbert
  2022-02-02  9:55           ` Jinpu Wang
  0 siblings, 1 reply; 13+ messages in thread
From: Dr. David Alan Gilbert @ 2022-02-02  9:20 UTC (permalink / raw)
  To: Pankaj Gupta; +Cc: Jinpu Wang, qemu-devel, quintela

* Pankaj Gupta (pankaj.gupta@ionos.com) wrote:
> > > > >  migration/rdma.c | 2 +-
> > > > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > > >
> > > > > diff --git a/migration/rdma.c b/migration/rdma.c
> > > > > index c7c7a384875b..2e223170d06d 100644
> > > > > --- a/migration/rdma.c
> > > > > +++ b/migration/rdma.c
> > > > > @@ -4238,7 +4238,7 @@ void rdma_start_incoming_migration(const char *host_port, Error **errp)
> > > > >
> > > > >      trace_rdma_start_incoming_migration_after_dest_init();
> > > > >
> > > > > -    ret = rdma_listen(rdma->listen_id, 5);
> > > > > +    ret = rdma_listen(rdma->listen_id, 128);
> > > >
> > > > 128 backlog seems too much to me. Any reason for choosing this number.
> > > > Any rationale to choose this number?
> > > >
> > > 128 is the default value of SOMAXCONN, I can use that if it is preferred.
> >
> > AFAICS backlog is only applicable with RDMA iWARP CM mode. Maybe we
> > can increase it to 128.these many
> 
> Or maybe we first increase it to 20 or 32? or so to avoid memory
> overhead if we are not
> using these many connections at the same time.

Can you explain why you're requiring more than 1?  Is this with multifd
patches?

Dave

> > Maybe you can also share any testing data for multiple concurrent live
> > migrations using RDMA, please.
> >
> > Thanks,
> > Pankaj
> >
> > Thanks,
> > Pankaj
> 
-- 
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/2] migration/rdma: Increase the backlog from 5 to 128
  2022-02-02  9:20         ` Dr. David Alan Gilbert
@ 2022-02-02  9:55           ` Jinpu Wang
  0 siblings, 0 replies; 13+ messages in thread
From: Jinpu Wang @ 2022-02-02  9:55 UTC (permalink / raw)
  To: Dr. David Alan Gilbert; +Cc: qemu-devel, Pankaj Gupta, quintela

On Wed, Feb 2, 2022 at 10:20 AM Dr. David Alan Gilbert
<dgilbert@redhat.com> wrote:
>
> * Pankaj Gupta (pankaj.gupta@ionos.com) wrote:
> > > > > >  migration/rdma.c | 2 +-
> > > > > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > > > >
> > > > > > diff --git a/migration/rdma.c b/migration/rdma.c
> > > > > > index c7c7a384875b..2e223170d06d 100644
> > > > > > --- a/migration/rdma.c
> > > > > > +++ b/migration/rdma.c
> > > > > > @@ -4238,7 +4238,7 @@ void rdma_start_incoming_migration(const char *host_port, Error **errp)
> > > > > >
> > > > > >      trace_rdma_start_incoming_migration_after_dest_init();
> > > > > >
> > > > > > -    ret = rdma_listen(rdma->listen_id, 5);
> > > > > > +    ret = rdma_listen(rdma->listen_id, 128);
> > > > >
> > > > > 128 backlog seems too much to me. Any reason for choosing this number.
> > > > > Any rationale to choose this number?
> > > > >
> > > > 128 is the default value of SOMAXCONN, I can use that if it is preferred.
> > >
> > > AFAICS backlog is only applicable with RDMA iWARP CM mode. Maybe we
> > > can increase it to 128.these many
> >
> > Or maybe we first increase it to 20 or 32? or so to avoid memory
> > overhead if we are not
> > using these many connections at the same time.
>
> Can you explain why you're requiring more than 1?  Is this with multifd
> patches?

no, I'm not using multifs patches, just code reading, I feel 5 is too
small for the backlog setting.

As Pankaj rightly mentioned, in RDMA, only iWARP CM will take some
effect, it does nothing for InfiniBand
and RoCE.

Please ignore this patch, we can revisit this when we introduce
multifid with RDMA.

Thanks!
Jinpu Wang
>
> Dave
>
> > > Maybe you can also share any testing data for multiple concurrent live
> > > migrations using RDMA, please.
> > >
> > > Thanks,
> > > Pankaj
> > >
> > > Thanks,
> > > Pankaj
> >
> --
> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
>


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/2] migration/rdma: set the REUSEADDR option for destination
  2022-02-01 15:11 ` [PATCH 2/2] migration/rdma: set the REUSEADDR option for destination Jack Wang
  2022-02-01 18:39   ` Pankaj Gupta
@ 2022-02-02 10:15   ` Dr. David Alan Gilbert
  2022-02-02 10:51     ` Jinpu Wang
  1 sibling, 1 reply; 13+ messages in thread
From: Dr. David Alan Gilbert @ 2022-02-02 10:15 UTC (permalink / raw)
  To: Jack Wang; +Cc: qemu-devel, pankaj.gupta, quintela

* Jack Wang (jinpu.wang@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?

Dave

> Signed-off-by: Jack Wang <jinpu.wang@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 / dgilbert@redhat.com / Manchester, UK



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/2] migration/rdma: set the REUSEADDR option for destination
  2022-02-02 10:15   ` Dr. David Alan Gilbert
@ 2022-02-02 10:51     ` Jinpu Wang
  0 siblings, 0 replies; 13+ messages in thread
From: Jinpu Wang @ 2022-02-02 10:51 UTC (permalink / raw)
  To: Dr. David Alan Gilbert; +Cc: qemu-devel, pankaj.gupta, quintela

On Wed, Feb 2, 2022 at 11:15 AM Dr. David Alan Gilbert
<dgilbert@redhat.com> wrote:
>
> * Jack Wang (jinpu.wang@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.wang@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 / dgilbert@redhat.com / Manchester, UK
>


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2022-02-02 10:53 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-02-01 15:11 [PATCH 1/2] migration/rdma: Increase the backlog from 5 to 128 Jack Wang
2022-02-01 15:11 ` [PATCH 2/2] migration/rdma: set the REUSEADDR option for destination Jack Wang
2022-02-01 18:39   ` Pankaj Gupta
2022-02-01 20:43     ` Jinpu Wang
2022-02-02  4:57       ` Pankaj Gupta
2022-02-02 10:15   ` Dr. David Alan Gilbert
2022-02-02 10:51     ` Jinpu Wang
2022-02-01 18:19 ` [PATCH 1/2] migration/rdma: Increase the backlog from 5 to 128 Pankaj Gupta
2022-02-01 20:32   ` Jinpu Wang
2022-02-02  6:27     ` Pankaj Gupta
2022-02-02  6:37       ` Pankaj Gupta
2022-02-02  9:20         ` Dr. David Alan Gilbert
2022-02-02  9:55           ` Jinpu Wang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.