diff options
author | Jens Axboe <axboe@fb.com> | 2017-03-02 13:59:08 -0700 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2017-03-02 13:59:08 -0700 |
commit | 7b36a7189fc320f0b783dd51bd1f541db56cfbdd (patch) | |
tree | c527bc3477255dfc0064390f2073533c6a652c2b /block/blk-sysfs.c | |
parent | a5a79d00017c9eee68a9bcb40d5dfd6f45f17461 (diff) | |
download | op-kernel-dev-7b36a7189fc320f0b783dd51bd1f541db56cfbdd.zip op-kernel-dev-7b36a7189fc320f0b783dd51bd1f541db56cfbdd.tar.gz |
block: don't call ioc_exit_icq() with the queue lock held for blk-mq
For legacy scheduling, we always call ioc_exit_icq() with both the
ioc and queue lock held. This poses a problem for blk-mq with
scheduling, since the queue lock isn't what we use in the scheduler.
And since we don't need the queue lock held for ioc exit there,
don't grab it and leave any extra locking up to the blk-mq scheduler.
Reported-by: Paolo Valente <paolo.valente@linaro.org>
Tested-by: Paolo Valente <paolo.valente@linaro.org>
Reviewed-by: Omar Sandoval <osandov@fb.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'block/blk-sysfs.c')
-rw-r--r-- | block/blk-sysfs.c | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c index 002af83..c44b321 100644 --- a/block/blk-sysfs.c +++ b/block/blk-sysfs.c @@ -815,9 +815,7 @@ static void blk_release_queue(struct kobject *kobj) blkcg_exit_queue(q); if (q->elevator) { - spin_lock_irq(q->queue_lock); ioc_clear_queue(q); - spin_unlock_irq(q->queue_lock); elevator_exit(q->elevator); } |