Commit 3a03818f authored by Trond Myklebust's avatar Trond Myklebust
Browse files

SUNRPC: Avoid holding locks across the XDR encoding of the RPC message



Currently, we grab the socket bit lock before we allow the message
to be XDR encoded. That significantly slows down the transmission
rate, since we serialise on a potentially blocking operation.

Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
parent 7ebbbc6e
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -1949,9 +1949,6 @@ call_transmit(struct rpc_task *task)
	task->tk_action = call_status;
	if (task->tk_status < 0)
		return;
	if (!xprt_prepare_transmit(task))
		return;
	task->tk_action = call_transmit_status;
	/* Encode here so that rpcsec_gss can use correct sequence number. */
	if (rpc_task_need_encode(task)) {
		rpc_xdr_encode(task);
@@ -1965,6 +1962,9 @@ call_transmit(struct rpc_task *task)
			return;
		}
	}
	if (!xprt_prepare_transmit(task))
		return;
	task->tk_action = call_transmit_status;
	xprt_transmit(task);
	if (task->tk_status < 0)
		return;