summaryrefslogtreecommitdiff
path: root/net/sunrpc/svc_xprt.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2023-09-11 17:40:22 +0300
committerChuck Lever <chuck.lever@oracle.com>2023-10-16 19:44:08 +0300
commit15d39883ee7dfc023d8a24f5d4b58100e1d04ad9 (patch)
treebb325ff8eba96ca7c4f88f32913697fb4536a0b5 /net/sunrpc/svc_xprt.c
parent580a25756a9f639180b29a508f3bdd24c50a936a (diff)
downloadlinux-15d39883ee7dfc023d8a24f5d4b58100e1d04ad9.tar.xz
SUNRPC: change the back-channel queue to lwq
This removes the need to store and update back-links in the list. It also remove the need for the _bh version of spin_lock(). Signed-off-by: NeilBrown <neilb@suse.de> Cc: Trond Myklebust <trond.myklebust@hammerspace.com> Cc: Anna Schumaker <Anna.Schumaker@Netapp.com> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Diffstat (limited to 'net/sunrpc/svc_xprt.c')
-rw-r--r--net/sunrpc/svc_xprt.c12
1 files changed, 3 insertions, 9 deletions
diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c
index 28ca7db55da1..fee83d1024bc 100644
--- a/net/sunrpc/svc_xprt.c
+++ b/net/sunrpc/svc_xprt.c
@@ -705,7 +705,7 @@ svc_thread_should_sleep(struct svc_rqst *rqstp)
#if defined(CONFIG_SUNRPC_BACKCHANNEL)
if (svc_is_backchannel(rqstp)) {
- if (!list_empty(&rqstp->rq_server->sv_cb_list))
+ if (!lwq_empty(&rqstp->rq_server->sv_cb_list))
return false;
}
#endif
@@ -878,18 +878,12 @@ void svc_recv(struct svc_rqst *rqstp)
struct svc_serv *serv = rqstp->rq_server;
struct rpc_rqst *req;
- spin_lock_bh(&serv->sv_cb_lock);
- req = list_first_entry_or_null(&serv->sv_cb_list,
- struct rpc_rqst, rq_bc_list);
+ req = lwq_dequeue(&serv->sv_cb_list,
+ struct rpc_rqst, rq_bc_list);
if (req) {
- list_del(&req->rq_bc_list);
- spin_unlock_bh(&serv->sv_cb_lock);
svc_thread_wake_next(rqstp);
-
svc_process_bc(req, rqstp);
- return;
}
- spin_unlock_bh(&serv->sv_cb_lock);
}
#endif
}