lkml.org 
[lkml]   [2022]   [Jun]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.18 118/339] blk-mq: do not update io_ticks with passthrough requests
    Date
    From: Haisu Wang <haisuwang@tencent.com>

    [ Upstream commit b81c14ca14b631aa1abae32fb5ae75b5e9251012 ]

    Flush or passthrough requests are not accounted as normal IO in completion.
    To reflect iostat for slow IO, io_ticks is updated when stat show called
    based on inflight numbers.
    It may cause inconsistent io_ticks calculation result.

    So do not account non-passthrough request when check inflight.

    Fixes: 86d7331299fd ("block: update io_ticks when io hang")
    Signed-off-by: Haisu Wang <haisuwang@tencent.com>
    Reviewed-by: samuelliao <samuelliao@tencent.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20220530064059.1120058-1-haisuwang@tencent.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    block/blk-mq.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    diff --git a/block/blk-mq.c b/block/blk-mq.c
    index 9d33e0032fee..de7fc6957271 100644
    --- a/block/blk-mq.c
    +++ b/block/blk-mq.c
    @@ -133,7 +133,8 @@ static bool blk_mq_check_inflight(struct request *rq, void *priv,
    {
    struct mq_inflight *mi = priv;

    - if ((!mi->part->bd_partno || rq->part == mi->part) &&
    + if (rq->part && blk_do_io_stat(rq) &&
    + (!mi->part->bd_partno || rq->part == mi->part) &&
    blk_mq_rq_state(rq) == MQ_RQ_IN_FLIGHT)
    mi->inflight[rq_data_dir(rq)]++;

    --
    2.35.1


    \
     
     \ /
      Last update: 2022-06-13 15:46    [W:2.214 / U:0.308 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site