linux/block/blk-mq-tag.c
/*
 * If a previously busy queue goes inactive, potential waiters could now
 * be allowed to queue. Wake them up and check.
 */
If a previously busy queue goes inactive, potential waiters could now
be allowed to queue. Wake them up and check.
If a previously busy queue goes inactive potential waiters could now be allowed to queue . Wake them up and check .
void __blk_mq_tag_idle(struct blk_mq_hw_ctx *hctx)
{
	struct blk_mq_tags *tags = hctx->tags;
	if (!test_and_clear_bit(BLK_MQ_S_TAG_ACTIVE, &hctx->state))
		return;
	atomic_dec(&tags->active_queues);
	blk_mq_tag_wakeup_all(tags, false);
}
void __blk_mq_tag_idle ( struct blk_mq_hw_ctx * hctx ) { struct blk_mq_tags * tags = hctx -> tags ; if ( ! test_and_clear_bit ( BLK_MQ_S_TAG_ACTIVE , & hctx -> state ) ) return ; atomic_dec ( & tags -> active_queues ) ; blk_mq_tag_wakeup_all ( tags , false ) ; }
If a previously busy queue goes inactive, potential waiters could now
 be allowed to queue.
If a previously busy queue goes inactive potential waiters could now be allowed to queue .