[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <e8558aeb-7343-da56-88bb-14c1a27d099c@huawei.com>
Date: Tue, 25 Jan 2022 08:38:01 +0000
From: John Garry <john.garry@...wei.com>
To: Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
<linux-kernel@...r.kernel.org>
CC: <stable@...r.kernel.org>, Ming Lei <ming.lei@...hat.com>,
Laibin Qiu <qiulaibin@...wei.com>,
Andy Shevchenko <andriy.shevchenko@...ux.intel.com>,
Jens Axboe <axboe@...nel.dk>, <alex_y_xu@...oo.ca>
Subject: Re: [PATCH 5.16 1026/1039] blk-mq: fix tag_get wait task cant be
awakened
On 24/01/2022 18:46, Greg Kroah-Hartman wrote:
> From: Laibin Qiu<qiulaibin@...wei.com>
>
> 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@...hat.com>
> Suggested-by: John Garry<john.garry@...wei.com>
> Signed-off-by: Laibin Qiu<qiulaibin@...wei.com>
> Reviewed-by: Andy Shevchenko<andriy.shevchenko@...ux.intel.com>
> Link:https://lore.kernel.org/r/20220113025536.1479653-1-qiulaibin@huawei.com
> Signed-off-by: Jens Axboe<axboe@...nel.dk>
> Signed-off-by: Greg Kroah-Hartman<gregkh@...uxfoundation.org>
JFYI, Somebody reported a hang with this commit:
https://lore.kernel.org/linux-block/78cafe94-a787-e006-8851-69906f0c2128@huawei.com/T/#t
Thanks,
John
Powered by blists - more mailing lists