Skip to content

Commit

Permalink
block: mark blk_put_queue as potentially blocking
Browse files Browse the repository at this point in the history
We can't just say that the last reference release may block, as any
reference dropped could be the last one.  So move the might_sleep() from
blk_free_queue to blk_put_queue and update the documentation.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20221114042637.1009333-6-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
  • Loading branch information
Christoph Hellwig authored and Jens Axboe committed Nov 30, 2022
1 parent 2bd8522 commit 63f93fd
Showing 1 changed file with 2 additions and 4 deletions.
6 changes: 2 additions & 4 deletions block/blk-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -260,8 +260,6 @@ static void blk_free_queue_rcu(struct rcu_head *rcu_head)

static void blk_free_queue(struct request_queue *q)
{
might_sleep();

percpu_ref_exit(&q->q_usage_counter);

if (q->poll_stat)
Expand All @@ -285,11 +283,11 @@ static void blk_free_queue(struct request_queue *q)
* Decrements the refcount of the request_queue and free it when the refcount
* reaches 0.
*
* Context: Any context, but the last reference must not be dropped from
* atomic context.
* Context: Can sleep.
*/
void blk_put_queue(struct request_queue *q)
{
might_sleep();
if (refcount_dec_and_test(&q->refs))
blk_free_queue(q);
}
Expand Down

0 comments on commit 63f93fd

Please sign in to comment.