Commit 5ce97039 authored by Trond Myklebust's avatar Trond Myklebust

SUNRPC: Test whether the task is queued before grabbing the queue spinlocks

When asked to wake up an RPC task, it makes sense to test whether or not
the task is still queued.
Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
parent 359c48c0
...@@ -479,6 +479,8 @@ void rpc_wake_up_queued_task_on_wq(struct workqueue_struct *wq, ...@@ -479,6 +479,8 @@ void rpc_wake_up_queued_task_on_wq(struct workqueue_struct *wq,
struct rpc_wait_queue *queue, struct rpc_wait_queue *queue,
struct rpc_task *task) struct rpc_task *task)
{ {
if (!RPC_IS_QUEUED(task))
return;
spin_lock_bh(&queue->lock); spin_lock_bh(&queue->lock);
rpc_wake_up_task_on_wq_queue_locked(wq, queue, task); rpc_wake_up_task_on_wq_queue_locked(wq, queue, task);
spin_unlock_bh(&queue->lock); spin_unlock_bh(&queue->lock);
...@@ -489,6 +491,8 @@ void rpc_wake_up_queued_task_on_wq(struct workqueue_struct *wq, ...@@ -489,6 +491,8 @@ void rpc_wake_up_queued_task_on_wq(struct workqueue_struct *wq,
*/ */
void rpc_wake_up_queued_task(struct rpc_wait_queue *queue, struct rpc_task *task) void rpc_wake_up_queued_task(struct rpc_wait_queue *queue, struct rpc_task *task)
{ {
if (!RPC_IS_QUEUED(task))
return;
spin_lock_bh(&queue->lock); spin_lock_bh(&queue->lock);
rpc_wake_up_task_queue_locked(queue, task); rpc_wake_up_task_queue_locked(queue, task);
spin_unlock_bh(&queue->lock); spin_unlock_bh(&queue->lock);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment