SUNRPC: Simplify xprt_prepare_transmit()
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>
This commit is contained in:
parent
04b3b88fbf
commit
5f2f6bd987
|
@ -1123,27 +1123,18 @@ bool xprt_prepare_transmit(struct rpc_task *task)
|
||||||
{
|
{
|
||||||
struct rpc_rqst *req = task->tk_rqstp;
|
struct rpc_rqst *req = task->tk_rqstp;
|
||||||
struct rpc_xprt *xprt = req->rq_xprt;
|
struct rpc_xprt *xprt = req->rq_xprt;
|
||||||
bool ret = false;
|
|
||||||
|
|
||||||
dprintk("RPC: %5u xprt_prepare_transmit\n", task->tk_pid);
|
dprintk("RPC: %5u xprt_prepare_transmit\n", task->tk_pid);
|
||||||
|
|
||||||
spin_lock_bh(&xprt->transport_lock);
|
if (!xprt_lock_write(xprt, task)) {
|
||||||
if (!req->rq_bytes_sent) {
|
/* Race breaker: someone may have transmitted us */
|
||||||
if (req->rq_reply_bytes_recvd) {
|
|
||||||
task->tk_status = req->rq_reply_bytes_recvd;
|
|
||||||
goto out_unlock;
|
|
||||||
}
|
|
||||||
if (!test_bit(RPC_TASK_NEED_XMIT, &task->tk_runstate))
|
if (!test_bit(RPC_TASK_NEED_XMIT, &task->tk_runstate))
|
||||||
goto out_unlock;
|
rpc_wake_up_queued_task_set_status(&xprt->sending,
|
||||||
|
task, 0);
|
||||||
|
return false;
|
||||||
|
|
||||||
}
|
}
|
||||||
if (!xprt->ops->reserve_xprt(xprt, task)) {
|
return true;
|
||||||
task->tk_status = -EAGAIN;
|
|
||||||
goto out_unlock;
|
|
||||||
}
|
|
||||||
ret = true;
|
|
||||||
out_unlock:
|
|
||||||
spin_unlock_bh(&xprt->transport_lock);
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void xprt_end_transmit(struct rpc_task *task)
|
void xprt_end_transmit(struct rpc_task *task)
|
||||||
|
|
Loading…
Reference in New Issue