Commit ec37a58f authored by Trond Myklebust's avatar Trond Myklebust
Browse files

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: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
parent 5ce97039
Loading
Loading
Loading
Loading
+3 −6
Original line number Diff line number Diff line
@@ -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);
	}