summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--block/test-iosched.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/block/test-iosched.c b/block/test-iosched.c
index cc7d28c1ba81..9ac5d1441e0b 100644
--- a/block/test-iosched.c
+++ b/block/test-iosched.c
@@ -988,24 +988,25 @@ static int test_dispatch_from(struct request_queue *q,
struct test_request *test_rq;
struct request *rq;
int ret = 0;
+ unsigned long flags;
if (!ptd)
goto err;
- spin_lock_irq(&ptd->lock);
+ spin_lock_irqsave(&ptd->lock, flags);
if (!list_empty(queue)) {
test_rq = list_entry(queue->next, struct test_request,
queuelist);
rq = test_rq->rq;
if (!rq) {
pr_err("%s: null request,return", __func__);
- spin_unlock_irq(&ptd->lock);
+ spin_unlock_irqrestore(&ptd->lock, flags);
goto err;
}
list_move_tail(&test_rq->queuelist, &ptd->dispatched_queue);
ptd->dispatched_count++;
(*count)--;
- spin_unlock_irq(&ptd->lock);
+ spin_unlock_irqrestore(&ptd->lock, flags);
print_req(rq);
elv_dispatch_sort(q, rq);
@@ -1013,7 +1014,7 @@ static int test_dispatch_from(struct request_queue *q,
ret = 1;
goto err;
}
- spin_unlock_irq(&ptd->lock);
+ spin_unlock_irqrestore(&ptd->lock, flags);
err:
return ret;