Hi, For fixing queue lock switching back related issue, commit 498f6650aec8 ("block: Fix a race between the cgroup code and request queue initialization") moves what blk_exit_queue() does into blk_cleanup_queue(). Turns out it requires to protect generic_make_request_checks with blk_queue_enter, then we have to hold the queue usage counter before generic_make_request_checks(). This way makes generic_make_request() code quite complicated and not easy to maintain. After killing legacy request IO path, there isn't driver private queue lock story, then no such issue addressed by 498f6650aec8 any more. So revert the following commits and clean up related code much. 498f6650aec8 block: Fix a race between the cgroup code and request queue initialization 37f9579f4c31 blk-mq: Avoid that submitting a bio concurrently with device removal triggers a crash cd4a4ae4683d block: don't use blocking queue entered for recursive bio submits 24ecc3585348 block: Ensure that a request queue is dissociated from the cgroup controller Ming Lei (3): block: move blk_exit_queue into __blk_release_queue block: don't protect generic_make_request_checks with blk_queue_enter block: rename BIO_QUEUE_ENTERED as BIO_SPLITTED block/blk-core.c | 74 ++++---------------------------------- block/blk-merge.c | 10 +----- block/blk-sysfs.c | 47 ++++++++++++++++-------- block/blk.h | 1 - include/linux/blk-cgroup.h | 4 +-- include/linux/blk_types.h | 2 +- 6 files changed, 42 insertions(+), 96 deletions(-) Cc: Josef Bacik <josef@xxxxxxxxxxxxxx> Cc: Christoph Hellwig <hch@xxxxxx> Cc: Bart Van Assche <bvanassche@xxxxxxx> -- 2.20.1