From edca33be359cb000d3918683a230df06f61544dd Mon Sep 17 00:00:00 2001 From: Mukesh Kacker Date: Wed, 8 Oct 2014 13:11:14 -0700 Subject: [PATCH] RDS: move more queing for loopback connections to separate queue All instances of processing for processing of connect/re-connect/disconnect/reject instances in RDS should use separate workqueue dedicated for processing for (few) local loopback connections to reduce latency so they do not get behind processing of large number of remote connections. However, a few instances of such processing do not. With this fix those are being changed to use the workqueue dedicated for local connections. Orabug: 18977932 Signed-off-by: Mukesh Kacker Acked-by: Ajaykumar Hotchandani Signed-off-by: Guangyu Sun (cherry picked from commit a0d407f186e0e4841bf1a24541dbcc0f0973726e) --- net/rds/rdma_transport.c | 13 +++++++++---- net/rds/threads.c | 8 ++++++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/net/rds/rdma_transport.c b/net/rds/rdma_transport.c index 7e3fc7526c50..b48b5797e290 100644 --- a/net/rds/rdma_transport.c +++ b/net/rds/rdma_transport.c @@ -242,10 +242,15 @@ int rds_rdma_cm_event_handler(struct rdma_cm_id *cm_id, conn->c_proposed_version = RDS_PROTOCOL_COMPAT_VERSION; rds_conn_drop(conn); - } else { - queue_delayed_work(rds_wq, - &conn->c_reject_w, - msecs_to_jiffies(10)); + } else { + if (conn->c_loopback) + queue_delayed_work(rds_local_wq, + &conn->c_reject_w, + msecs_to_jiffies(10)); + else + queue_delayed_work(rds_wq, + &conn->c_reject_w, + msecs_to_jiffies(10)); } } else rds_conn_drop(conn); diff --git a/net/rds/threads.c b/net/rds/threads.c index 41616b6260ec..13eff3b134e5 100644 --- a/net/rds/threads.c +++ b/net/rds/threads.c @@ -301,8 +301,12 @@ void rds_shutdown_worker(struct work_struct *work) */ if (conn->c_laddr < conn->c_faddr && conn->c_reconnect_racing) { rds_conn_shutdown(conn, 0); - queue_delayed_work(rds_wq, &conn->c_reconn_w, - msecs_to_jiffies(5000)); + if (conn->c_loopback) + queue_delayed_work(rds_local_wq, &conn->c_reconn_w, + msecs_to_jiffies(5000)); + else + queue_delayed_work(rds_wq, &conn->c_reconn_w, + msecs_to_jiffies(5000)); } else rds_conn_shutdown(conn, 1); -- 2.49.0