[PATCH 04/11] drbd_transport_rdma: dont schedule retry_connect_work in active is false
zhengbing.huang
zhengbing.huang at easystack.cn
Mon Jun 24 07:46:12 CEST 2024
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