]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
RDS: Use rds_local_wq for loopback connections in rds_conn_connect_if_down()
authorChien-Hua Yen <chien.yen@oracle.com>
Tue, 27 May 2014 19:35:25 +0000 (12:35 -0700)
committerMukesh Kacker <mukesh.kacker@oracle.com>
Wed, 8 Jul 2015 20:59:59 +0000 (13:59 -0700)
Orabug: 18892380

This patch extends commit 0715fe8 "RDS: add workqueue for local
loopback connections" to rds_conn_connect_if_down() and
rds_connect_complete().

Signed-off-by: Chien-Hua Yen <chien.yen@oracle.com>
Signed-off-by: Bang Nguyen <bang.nguyen@oracle.com>
Signed-off-by: Ajaykumar Hotchandani <ajaykumar.hotchandani@oracle.com>
(cherry picked from commit 3209dc535f742c59530d5a5dfdd003b501967e88)

net/rds/connection.c
net/rds/threads.c

index c973425cb354555ea0c2a81dcae77bf80b5653a2..b29d7754e5aeb9be3dfb98345bebaaf2d8f372aa 100644 (file)
@@ -656,8 +656,12 @@ EXPORT_SYMBOL_GPL(rds_conn_drop);
 void rds_conn_connect_if_down(struct rds_connection *conn)
 {
        if (rds_conn_state(conn) == RDS_CONN_DOWN &&
-           !test_and_set_bit(RDS_RECONNECT_PENDING, &conn->c_flags))
-               queue_delayed_work(rds_wq, &conn->c_conn_w, 0);
+           !test_and_set_bit(RDS_RECONNECT_PENDING, &conn->c_flags)) {
+               if (conn->c_loopback)
+                       queue_delayed_work(rds_local_wq, &conn->c_conn_w, 0);
+               else
+                       queue_delayed_work(rds_wq, &conn->c_conn_w, 0);
+       }
 }
 EXPORT_SYMBOL_GPL(rds_conn_connect_if_down);
 
index 7ef1948b673493bc0f21af104f6bbdc72cb89d2f..41616b6260ecbbae863bffa98e1645719a87b4b6 100644 (file)
@@ -85,7 +85,10 @@ void rds_connect_complete(struct rds_connection *conn)
                                __func__,
                                atomic_read(&conn->c_state));
                atomic_set(&conn->c_state, RDS_CONN_ERROR);
-               queue_work(rds_wq, &conn->c_down_w);
+               if (conn->c_loopback)
+                       queue_work(rds_local_wq, &conn->c_down_w);
+               else
+                       queue_work(rds_wq, &conn->c_down_w);
                return;
        }