lkml.org 
[lkml]   [2023]   [Jul]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: [PATCH v2] blk-mq: Fix stall due to recursive flush plug
    Date

    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



    \
     
     \ /
      Last update: 2023-07-16 20:51    [W:7.619 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site