Re: [PATCH 5.16 1026/1039] blk-mq: fix tag_get wait task cant be awakened

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 24/01/2022 18:46, Greg Kroah-Hartman wrote:
From: Laibin Qiu<qiulaibin@xxxxxxxxxx>

commit 180dccb0dba4f5e84a4a70c1be1d34cbb6528b32 upstream.

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>
Reviewed-by: Andy Shevchenko<andriy.shevchenko@xxxxxxxxxxxxxxx>
Link:https://lore.kernel.org/r/20220113025536.1479653-1-qiulaibin@xxxxxxxxxx
Signed-off-by: Jens Axboe<axboe@xxxxxxxxx>
Signed-off-by: Greg Kroah-Hartman<gregkh@xxxxxxxxxxxxxxxxxxx>

JFYI, Somebody reported a hang with this commit:
https://lore.kernel.org/linux-block/78cafe94-a787-e006-8851-69906f0c2128@xxxxxxxxxx/T/#t

Thanks,
John



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux