mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-15 15:15:47 +00:00
SUNRPC: Don't wake queued RPC calls multiple times in xprt_transmit
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>
This commit is contained in:
parent
5ce970393b
commit
ec37a58fba
1 changed files with 3 additions and 6 deletions
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue