Re: [PATCH -next V2] blk-mq: fix tag_get wait task can't be awakened

From: John Garry
Date: Wed Jan 05 2022 - 05:56:44 EST


On 05/01/2022 03:56, Laibin Qiu wrote:
+
/*
* If a previously inactive queue goes active, bump the active user count.
* We need to do this before try to allocate driver tag, then even if fail
@@ -23,10 +38,16 @@
*/
bool __blk_mq_tag_busy(struct blk_mq_hw_ctx *hctx)
{
+ unsigned int users;
+
if (!test_bit(BLK_MQ_S_TAG_ACTIVE, &hctx->state) &&
- !test_and_set_bit(BLK_MQ_S_TAG_ACTIVE, &hctx->state))
+ !test_and_set_bit(BLK_MQ_S_TAG_ACTIVE, &hctx->state)) {
atomic_inc(&hctx->tags->active_queues);
+ users = atomic_read(&hctx->tags->active_queues);
+ blk_mq_update_wake_batch(hctx->tags, users);
+ }
+
return true;
}

This code looks old to me. Which baseline is used here?

Thanks,
John