projects
/
linux.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
5ce9703
)
SUNRPC: Don't wake queued RPC calls multiple times in xprt_transmit
author
Trond Myklebust
<trond.myklebust@hammerspace.com>
Wed, 29 Aug 2018 13:30:19 +0000
(09:30 -0400)
committer
Trond Myklebust
<trond.myklebust@hammerspace.com>
Sun, 30 Sep 2018 19:35:14 +0000
(15:35 -0400)
Rather than waking up the entire queue of RPC messages a second time,
just wake up the task that was put to sleep.
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
net/sunrpc/xprt.c
patch
|
blob
|
history
diff --git
a/net/sunrpc/xprt.c
b/net/sunrpc/xprt.c
index 649a40cfae6dd157290857467e5b63325c5c877d..3a3b3445a7c0c21460cb7c8cd6c9237a0cf03649 100644
(file)
--- a/
net/sunrpc/xprt.c
+++ b/
net/sunrpc/xprt.c
@@
-1079,13
+1079,10
@@
void xprt_transmit(struct rpc_task *task)
spin_lock(&xprt->recv_lock);
if (test_bit(RPC_TASK_NEED_RECV, &task->tk_runstate)) {
rpc_sleep_on(&xprt->pending, task, xprt_timer);
- /*
- * Send an extra queue wakeup call if the
- * connection was dropped in case the call to
- * rpc_sleep_on() raced.
- */
+ /* Wake up immediately if the connection was dropped */
if (!xprt_connected(xprt))
- xprt_wake_pending_tasks(xprt, -ENOTCONN);
+ rpc_wake_up_queued_task_set_status(&xprt->pending,
+ task, -ENOTCONN);
}
spin_unlock(&xprt->recv_lock);
}