diff options
Diffstat (limited to 'net/sunrpc/sched.c')
| -rw-r--r-- | net/sunrpc/sched.c | 32 | 
1 files changed, 8 insertions, 24 deletions
diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c index 1f275aba786f..360afe153193 100644 --- a/net/sunrpc/sched.c +++ b/net/sunrpc/sched.c @@ -541,33 +541,14 @@ rpc_wake_up_task_on_wq_queue_action_locked(struct workqueue_struct *wq,  	return NULL;  } -static void -rpc_wake_up_task_on_wq_queue_locked(struct workqueue_struct *wq, -		struct rpc_wait_queue *queue, struct rpc_task *task) -{ -	rpc_wake_up_task_on_wq_queue_action_locked(wq, queue, task, NULL, NULL); -} -  /*   * Wake up a queued task while the queue lock is being held   */ -static void rpc_wake_up_task_queue_locked(struct rpc_wait_queue *queue, struct rpc_task *task) -{ -	rpc_wake_up_task_on_wq_queue_locked(rpciod_workqueue, queue, task); -} - -/* - * Wake up a task on a specific queue - */ -void rpc_wake_up_queued_task_on_wq(struct workqueue_struct *wq, -		struct rpc_wait_queue *queue, -		struct rpc_task *task) +static void rpc_wake_up_task_queue_locked(struct rpc_wait_queue *queue, +					  struct rpc_task *task)  { -	if (!RPC_IS_QUEUED(task)) -		return; -	spin_lock(&queue->lock); -	rpc_wake_up_task_on_wq_queue_locked(wq, queue, task); -	spin_unlock(&queue->lock); +	rpc_wake_up_task_on_wq_queue_action_locked(rpciod_workqueue, queue, +						   task, NULL, NULL);  }  /* @@ -930,8 +911,10 @@ static void __rpc_execute(struct rpc_task *task)  		/*  		 * Signalled tasks should exit rather than sleep.  		 */ -		if (RPC_SIGNALLED(task)) +		if (RPC_SIGNALLED(task)) { +			task->tk_rpc_status = -ERESTARTSYS;  			rpc_exit(task, -ERESTARTSYS); +		}  		/*  		 * The queue->lock protects against races with @@ -967,6 +950,7 @@ static void __rpc_execute(struct rpc_task *task)  			 */  			dprintk("RPC: %5u got signal\n", task->tk_pid);  			set_bit(RPC_TASK_SIGNALLED, &task->tk_runstate); +			task->tk_rpc_status = -ERESTARTSYS;  			rpc_exit(task, -ERESTARTSYS);  		}  		dprintk("RPC: %5u sync task resuming\n", task->tk_pid);  |