[PATCH 04/11] drbd_transport_rdma: dont schedule retry_connect_work in active is false

Philipp Reisner philipp.reisner at linbit.com
Fri Jun 28 13:51:38 CEST 2024


Hello Dongsheng,

Please explain what problem you are fixing with this change. Do you
have a log that shows a problem in this area? Please describe why your
proposed change improves DRBD's behavior.

best regards,
 Philipp

On Mon, Jun 24, 2024 at 9:28 AM zhengbing.huang
<zhengbing.huang at easystack.cn> wrote:
>
> From: Dongsheng Yang <dongsheng.yang at easystack.cn>
>
> Signed-off-by: Dongsheng Yang <dongsheng.yang at easystack.cn>
> ---
>  drbd/drbd_transport_rdma.c | 12 ++++++++++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/drbd/drbd_transport_rdma.c b/drbd/drbd_transport_rdma.c
> index eccd0c6ce..b7ccb15d4 100644
> --- a/drbd/drbd_transport_rdma.c
> +++ b/drbd/drbd_transport_rdma.c
> @@ -1089,9 +1089,13 @@ static void dtr_cma_retry_connect_work_fn(struct work_struct *work)
>         if (err) {
>                 struct dtr_path *path = container_of(cs, struct dtr_path, cs);
>                 struct drbd_transport *transport = path->path.transport;
> +               struct dtr_transport *rdma_transport =
> +                       container_of(transport, struct dtr_transport, transport);
>
>                 tr_err(transport, "dtr_start_try_connect failed  %d\n", err);
> -               schedule_delayed_work(&cs->retry_connect_work, HZ);
> +               if (rdma_transport->active) {
> +                       schedule_delayed_work(&cs->retry_connect_work, HZ);
> +               }
>         }
>  }
>
> @@ -1116,6 +1120,8 @@ static void dtr_remove_cm_from_path(struct dtr_path *path, struct dtr_cm *failed
>  static void dtr_cma_retry_connect(struct dtr_path *path, struct dtr_cm *failed_cm)
>  {
>         struct drbd_transport *transport = path->path.transport;
> +       struct dtr_transport *rdma_transport =
> +               container_of(transport, struct dtr_transport, transport);
>         struct dtr_connect_state *cs = &path->cs;
>         long connect_int = 10 * HZ;
>         struct net_conf *nc;
> @@ -1128,7 +1134,9 @@ static void dtr_cma_retry_connect(struct dtr_path *path, struct dtr_cm *failed_c
>                 connect_int = nc->connect_int * HZ;
>         rcu_read_unlock();
>
> -       schedule_delayed_work(&cs->retry_connect_work, connect_int);
> +       if (rdma_transport->active) {
> +               schedule_delayed_work(&cs->retry_connect_work, connect_int);
> +       }
>  }
>
>  static void dtr_cma_connect_work_fn(struct work_struct *work)
> --
> 2.27.0
>


More information about the drbd-dev mailing list