From: Bang Nguyen Date: Tue, 25 Jun 2013 17:41:41 +0000 (-0700) Subject: RDS: restore two-sided reconnect with the lower IP node having a constant 100 ms... X-Git-Tag: v4.1.12-92~293^2^2~57 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=178b888dca3e9816ba2199eab16f55680094c84e;p=users%2Fjedix%2Flinux-maple.git 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) --- diff --git a/net/rds/connection.c b/net/rds/connection.c index ed6b2765e1345..e21fc5f0a9dcb 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 1c0ac67bbc693..c9a4ba55cb450 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);