|
@@ -472,7 +472,7 @@ void xprt_write_space(struct rpc_xprt *xprt)
|
|
|
if (xprt->snd_task) {
|
|
|
dprintk("RPC: write space: waking waiting task on "
|
|
|
"xprt %p\n", xprt);
|
|
|
- rpc_wake_up_task(xprt->snd_task);
|
|
|
+ rpc_wake_up_queued_task(&xprt->pending, xprt->snd_task);
|
|
|
}
|
|
|
spin_unlock_bh(&xprt->transport_lock);
|
|
|
}
|
|
@@ -602,8 +602,7 @@ void xprt_force_disconnect(struct rpc_xprt *xprt)
|
|
|
/* Try to schedule an autoclose RPC call */
|
|
|
if (test_and_set_bit(XPRT_LOCKED, &xprt->state) == 0)
|
|
|
queue_work(rpciod_workqueue, &xprt->task_cleanup);
|
|
|
- else if (xprt->snd_task != NULL)
|
|
|
- rpc_wake_up_task(xprt->snd_task);
|
|
|
+ xprt_wake_pending_tasks(xprt, -ENOTCONN);
|
|
|
spin_unlock_bh(&xprt->transport_lock);
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(xprt_force_disconnect);
|
|
@@ -749,18 +748,19 @@ EXPORT_SYMBOL_GPL(xprt_update_rtt);
|
|
|
void xprt_complete_rqst(struct rpc_task *task, int copied)
|
|
|
{
|
|
|
struct rpc_rqst *req = task->tk_rqstp;
|
|
|
+ struct rpc_xprt *xprt = req->rq_xprt;
|
|
|
|
|
|
dprintk("RPC: %5u xid %08x complete (%d bytes received)\n",
|
|
|
task->tk_pid, ntohl(req->rq_xid), copied);
|
|
|
|
|
|
- task->tk_xprt->stat.recvs++;
|
|
|
+ xprt->stat.recvs++;
|
|
|
task->tk_rtt = (long)jiffies - req->rq_xtime;
|
|
|
|
|
|
list_del_init(&req->rq_list);
|
|
|
/* Ensure all writes are done before we update req->rq_received */
|
|
|
smp_wmb();
|
|
|
req->rq_received = req->rq_private_buf.len = copied;
|
|
|
- rpc_wake_up_task(task);
|
|
|
+ rpc_wake_up_queued_task(&xprt->pending, task);
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(xprt_complete_rqst);
|
|
|
|