diff options
author | Trond Myklebust <trond.myklebust@hammerspace.com> | 2018-08-22 17:55:46 -0400 |
---|---|---|
committer | Trond Myklebust <trond.myklebust@hammerspace.com> | 2018-09-30 15:35:14 -0400 |
commit | edc81dcd5b7f699c4049042b35c904396642032e (patch) | |
tree | 7d3e956afe26fa86a2fa7ed1063eccac4ad61ff7 /net/sunrpc/clnt.c | |
parent | 75c84151a9dc7a755c607e6761d8f14a1690dbf0 (diff) | |
download | linux-edc81dcd5b7f699c4049042b35c904396642032e.tar.gz |
SUNRPC: Refactor xprt_transmit() to remove the reply queue code
Separate out the action of adding a request to the reply queue so that the
backchannel code can simply skip calling it altogether.
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Diffstat (limited to 'net/sunrpc/clnt.c')
-rw-r--r-- | net/sunrpc/clnt.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c index a858366cd15db8..414966273a3f81 100644 --- a/net/sunrpc/clnt.c +++ b/net/sunrpc/clnt.c @@ -1962,6 +1962,11 @@ call_transmit(struct rpc_task *task) return; } } + + /* Add task to reply queue before transmission to avoid races */ + if (rpc_reply_expected(task)) + xprt_request_enqueue_receive(task); + if (!xprt_prepare_transmit(task)) return; task->tk_action = call_transmit_status; |