[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <168936388618.743920.17372805107217904539.b4-ty@kernel.dk>
Date: Fri, 14 Jul 2023 13:44:46 -0600
From: Jens Axboe <axboe@...nel.dk>
To: Christoph Hellwig <hch@...radead.org>,
Ross Lagerwall <ross.lagerwall@...rix.com>
Cc: linux-block@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2] blk-mq: Fix stall due to recursive flush plug
On Fri, 14 Jul 2023 11:11:06 +0100, Ross Lagerwall wrote:
> We have seen rare IO stalls as follows:
>
> * blk_mq_plug_issue_direct() is entered with an mq_list containing two
> requests.
> * For the first request, it sets last == false and enters the driver's
> queue_rq callback.
> * The driver queue_rq callback indirectly calls schedule() which calls
> blk_flush_plug(). This may happen if the driver has the
> BLK_MQ_F_BLOCKING flag set and is allowed to sleep in ->queue_rq.
> * blk_flush_plug() handles the remaining request in the mq_list. mq_list
> is now empty.
> * The original call to queue_rq resumes (with last == false).
> * The loop in blk_mq_plug_issue_direct() terminates because there are no
> remaining requests in mq_list.
>
> [...]
Applied, thanks!
[1/1] blk-mq: Fix stall due to recursive flush plug
commit: 70904263512a74a3b8941dd9e6e515ca6fc57821
Best regards,
--
Jens Axboe
Powered by blists - more mailing lists