|
@@ -487,13 +487,17 @@ EXPORT_SYMBOL_GPL(xprt_wake_pending_tasks);
|
|
|
* xprt_wait_for_buffer_space - wait for transport output buffer to clear
|
|
|
* @task: task to be put to sleep
|
|
|
* @action: function pointer to be executed after wait
|
|
|
+ *
|
|
|
+ * Note that we only set the timer for the case of RPC_IS_SOFT(), since
|
|
|
+ * we don't in general want to force a socket disconnection due to
|
|
|
+ * an incomplete RPC call transmission.
|
|
|
*/
|
|
|
void xprt_wait_for_buffer_space(struct rpc_task *task, rpc_action action)
|
|
|
{
|
|
|
struct rpc_rqst *req = task->tk_rqstp;
|
|
|
struct rpc_xprt *xprt = req->rq_xprt;
|
|
|
|
|
|
- task->tk_timeout = req->rq_timeout;
|
|
|
+ task->tk_timeout = RPC_IS_SOFT(task) ? req->rq_timeout : 0;
|
|
|
rpc_sleep_on(&xprt->pending, task, action);
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(xprt_wait_for_buffer_space);
|