Skip to content

Commit

Permalink
SUNRPC: Simplify xprt_prepare_transmit()
Browse files Browse the repository at this point in the history
Remove the checks for whether or not we need to transmit, and whether
or not a reply has been received. Those are already handled in
call_transmit() itself.

Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
  • Loading branch information
Trond Myklebust committed Sep 30, 2018
1 parent 04b3b88 commit 5f2f6bd
Showing 1 changed file with 7 additions and 16 deletions.
23 changes: 7 additions & 16 deletions net/sunrpc/xprt.c
Original file line number Diff line number Diff line change
Expand Up @@ -1123,27 +1123,18 @@ bool xprt_prepare_transmit(struct rpc_task *task)
{
struct rpc_rqst *req = task->tk_rqstp;
struct rpc_xprt *xprt = req->rq_xprt;
bool ret = false;

dprintk("RPC: %5u xprt_prepare_transmit\n", task->tk_pid);

spin_lock_bh(&xprt->transport_lock);
if (!req->rq_bytes_sent) {
if (req->rq_reply_bytes_recvd) {
task->tk_status = req->rq_reply_bytes_recvd;
goto out_unlock;
}
if (!xprt_lock_write(xprt, task)) {
/* Race breaker: someone may have transmitted us */
if (!test_bit(RPC_TASK_NEED_XMIT, &task->tk_runstate))
goto out_unlock;
}
if (!xprt->ops->reserve_xprt(xprt, task)) {
task->tk_status = -EAGAIN;
goto out_unlock;
rpc_wake_up_queued_task_set_status(&xprt->sending,
task, 0);
return false;

}
ret = true;
out_unlock:
spin_unlock_bh(&xprt->transport_lock);
return ret;
return true;
}

void xprt_end_transmit(struct rpc_task *task)
Expand Down

0 comments on commit 5f2f6bd

Please sign in to comment.