From 178b888dca3e9816ba2199eab16f55680094c84e Mon Sep 17 00:00:00 2001 From: Bang Nguyen Date: Tue, 25 Jun 2013 10:41:41 -0700 Subject: [PATCH] RDS: restore two-sided reconnect with the lower IP node having a constant 100 ms backoff. Orabug: 16710287 Signed-off-by: Richard Frank (cherry picked from commit 1e165f6511abd1d57e4be79f1a3a430c98a7576e) --- net/rds/connection.c | 3 +-- net/rds/threads.c | 6 +++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/net/rds/connection.c b/net/rds/connection.c index ed6b2765e134..e21fc5f0a9dc 100644 --- a/net/rds/connection.c +++ b/net/rds/connection.c @@ -345,8 +345,7 @@ void rds_conn_shutdown(struct rds_connection *conn) rcu_read_lock(); if (!hlist_unhashed(&conn->c_hash_node)) { rcu_read_unlock(); - if (conn->c_laddr >= conn->c_faddr) - rds_queue_reconnect(conn); + rds_queue_reconnect(conn); } else { rcu_read_unlock(); } diff --git a/net/rds/threads.c b/net/rds/threads.c index 1c0ac67bbc69..c9a4ba55cb45 100644 --- a/net/rds/threads.c +++ b/net/rds/threads.c @@ -139,8 +139,12 @@ void rds_queue_reconnect(struct rds_connection *conn) rdsdebug("%lu delay %lu ceil conn %p for %pI4 -> %pI4\n", rand % conn->c_reconnect_jiffies, conn->c_reconnect_jiffies, conn, &conn->c_laddr, &conn->c_faddr); - queue_delayed_work(rds_wq, &conn->c_conn_w, + if (conn->c_laddr >= conn->c_faddr) + queue_delayed_work(rds_wq, &conn->c_conn_w, rand % conn->c_reconnect_jiffies); + else + queue_delayed_work(rds_wq, &conn->c_conn_w, + msecs_to_jiffies(100)); conn->c_reconnect_jiffies = min(conn->c_reconnect_jiffies * 2, rds_sysctl_reconnect_max_jiffies); -- 2.50.1