Hello Jens, Replace the spinlock in blk_mq_find_and_get_req() with an SRCU read lock around the tag iterators. Avoids scsi_host_busy() lockup during scsi host blocked in case of big cpu cores & deep queue depth. Also the big tags lock isn't needed when reading disk sysfs attribute 'inflight' any more. Take the following approach: - clearing rq reference in tags->rqs[] and deferring freeing scheduler requests in SRCU callback - replace tags->lock with srcu read lock in tags iterator. V2: - rebase on for-6.18/block - add review tags Thanks, Ming Ming Lei (5): blk-mq: Move flush queue allocation into blk_mq_init_hctx() blk-mq: Pass tag_set to blk_mq_free_rq_map/tags blk-mq: Defer freeing of tags page_list to SRCU callback blk-mq: Defer freeing flush queue to SRCU callback blk-mq: Replace tags->lock with SRCU for tag iterators block/blk-mq-sysfs.c | 1 - block/blk-mq-tag.c | 38 +++++++++++++++--- block/blk-mq.c | 87 +++++++++++++++++++++--------------------- block/blk-mq.h | 4 +- block/blk.h | 1 + include/linux/blk-mq.h | 2 + 6 files changed, 80 insertions(+), 53 deletions(-) -- 2.47.0