On Thu, Nov 11, 2021 at 04:51:33PM +0800, Ming Lei wrote: > blk_mq_sched_bio_merge is only called from blk-mq.c:blk_attempt_bio_merge(), > which is called when queue usage counter is grabbed already: > > 1) blk_mq_get_new_requests() > > 2) blk_mq_get_request() > - cached request in current plug owns one queue usage counter > > So don't grab ->q_usage_counter in blk_mq_sched_bio_merge(), and more > importantly this nest way causes hang in blk_mq_freeze_queue_wait(). Looks good, Reviewed-by: Christoph Hellwig <hch@xxxxxx>