]> git.baikalelectronics.ru Git - kernel.git/commit
blk-mq: Allow blocking queue tag iter callbacks
authorKeith Busch <keith.busch@intel.com>
Tue, 25 Sep 2018 16:36:20 +0000 (10:36 -0600)
committerJens Axboe <axboe@kernel.dk>
Wed, 26 Sep 2018 02:17:59 +0000 (20:17 -0600)
commitcc5fd4a82274ca8aa8671e6f2eb78cbe5383e6af
treef25bd9aa92fc0042974192d81b705253ddd8c597
parenta4652be5407026309094087dd9da7a7f34f80d8e
blk-mq: Allow blocking queue tag iter callbacks

A recent commit runs tag iterator callbacks under the rcu read lock,
but existing callbacks do not satisfy the non-blocking requirement.
The commit intended to prevent an iterator from accessing a queue that's
being modified. This patch fixes the original issue by taking a queue
reference instead of reading it, which allows callbacks to make blocking
calls.

Fixes: fa6723618c2f3 ("blk-mq: sync the update nr_hw_queues with blk_mq_queue_tag_busy_iter")
Acked-by: Jianchao Wang <jianchao.w.wang@oracle.com>
Signed-off-by: Keith Busch <keith.busch@intel.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-mq-tag.c