Hi, On Thu, Jan 13, 2022 at 10:55:36AM +0800, Laibin Qiu wrote: > In case of shared tags, there might be more than one hctx which > allocates from the same tags, and each hctx is limited to allocate at > most: > hctx_max_depth = max((bt->sb.depth + users - 1) / users, 4U); > > tag idle detection is lazy, and may be delayed for 30sec, so there > could be just one real active hctx(queue) but all others are actually > idle and still accounted as active because of the lazy idle detection. > Then if wake_batch is > hctx_max_depth, driver tag allocation may wait > forever on this real active hctx. > > Fix this by recalculating wake_batch when inc or dec active_queues. > > Fixes: 0d2602ca30e41 ("blk-mq: improve support for shared tags maps") > Suggested-by: Ming Lei <ming.lei@xxxxxxxxxx> > Suggested-by: John Garry <john.garry@xxxxxxxxxx> > Signed-off-by: Laibin Qiu <qiulaibin@xxxxxxxxxx> I understand this problem has been reported already, but still: This patch causes a hang in several of my qemu emulations when trying to boot from usb. Reverting it fixes the problem. Bisect log is attached. Boot logs are available at https://kerneltests.org/builders/qemu-arm-aspeed-master/builds/230/steps/qemubuildcommand/logs/stdio but don't really show much: the affected tests simply hang until they are aborted. Guenter --- bisect log: # bad: [0280e3c58f92b2fe0e8fbbdf8d386449168de4a8] Merge tag 'nfs-for-5.17-1' of git://git.linux-nfs.org/projects/anna/linux-nfs # good: [64f29d8856a9e0d1fcdc5344f76e70c364b941cb] Merge tag 'ceph-for-5.17-rc1' of git://github.com/ceph/ceph-client git bisect start 'HEAD' '64f29d8856a9' # bad: [b087788c20aa959f83df989b31fdcc4182b2d067] Merge tag 'ata-5.17-rc1-part2' of git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/libata git bisect bad b087788c20aa959f83df989b31fdcc4182b2d067 # bad: [0854dc81e108c90cccda6d1fc54bc270f16a3cc9] Merge tag 'docs-5.17-2' of git://git.lwn.net/linux git bisect bad 0854dc81e108c90cccda6d1fc54bc270f16a3cc9 # good: [75242f31db6cabf602a5eb84c13b579099d72a65] Merge tag 'rtc-5.17' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux git bisect good 75242f31db6cabf602a5eb84c13b579099d72a65 # good: [f3a78227eef20c0ba13bbf9401f0a340bca3ad16] Merge tag 'io_uring-5.17-2022-01-21' of git://git.kernel.dk/linux-block git bisect good f3a78227eef20c0ba13bbf9401f0a340bca3ad16 # bad: [3c7c25038b6c7d66a6816028219914379be6a5cc] Merge tag 'block-5.17-2022-01-21' of git://git.kernel.dk/linux-block git bisect bad 3c7c25038b6c7d66a6816028219914379be6a5cc # bad: [e6a2e5116e07ce5acc8698785c29e9e47f010fd5] block: Remove unnecessary variable assignment git bisect bad e6a2e5116e07ce5acc8698785c29e9e47f010fd5 # bad: [413ec8057bc3d368574abd05dd27e747063b2f59] loop: remove redundant initialization of pointer node git bisect bad 413ec8057bc3d368574abd05dd27e747063b2f59 # bad: [180dccb0dba4f5e84a4a70c1be1d34cbb6528b32] blk-mq: fix tag_get wait task can't be awakened git bisect bad 180dccb0dba4f5e84a4a70c1be1d34cbb6528b32 # first bad commit: [180dccb0dba4f5e84a4a70c1be1d34cbb6528b32] blk-mq: fix tag_get wait task can't be awakened