lkml.org 
[lkml]   [2023]   [Mar]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH v3] md/raid10: don't call bio_start_io_acct twice for bio which experienced read error
    On Mon, Mar 13, 2023 at 6:23 PM Yu Kuai <yukuai1@huaweicloud.com> wrote:
    >
    > From: Yu Kuai <yukuai3@huawei.com>
    >
    > handle_read_error() will resumit r10_bio by raid10_read_request(), which
    > will call bio_start_io_acct() again, while bio_end_io_acct() will only
    > be called once.
    >
    > Fix the problem by don't account io again from handle_read_error().
    >
    > Fixes: 528bc2cf2fcc ("md/raid10: enable io accounting")
    > Suggested-by: Song Liu <song@kernel.org>
    > Signed-off-by: Yu Kuai <yukuai3@huawei.com>

    Applied to md-next.

    Thanks!
    Song

    > ---
    > Changes in v3:
    > - use r10_bo->start_time instead of adding a new paramater.
    > Changes in v3:
    > - Change the patch title
    >
    > drivers/md/raid10.c | 4 +++-
    > 1 file changed, 3 insertions(+), 1 deletion(-)
    >
    > diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
    > index 6c66357f92f5..3483fdf796ec 100644
    > --- a/drivers/md/raid10.c
    > +++ b/drivers/md/raid10.c
    > @@ -1244,7 +1244,8 @@ static void raid10_read_request(struct mddev *mddev, struct bio *bio,
    > }
    > slot = r10_bio->read_slot;
    >
    > - if (blk_queue_io_stat(bio->bi_bdev->bd_disk->queue))
    > + if (!r10_bio->start_time &&
    > + blk_queue_io_stat(bio->bi_bdev->bd_disk->queue))
    > r10_bio->start_time = bio_start_io_acct(bio);
    > read_bio = bio_alloc_clone(rdev->bdev, bio, gfp, &mddev->bio_set);
    >
    > @@ -1574,6 +1575,7 @@ static void __make_request(struct mddev *mddev, struct bio *bio, int sectors)
    > r10_bio->sector = bio->bi_iter.bi_sector;
    > r10_bio->state = 0;
    > r10_bio->read_slot = -1;
    > + r10_bio->start_time = 0;
    > memset(r10_bio->devs, 0, sizeof(r10_bio->devs[0]) *
    > conf->geo.raid_disks);
    >
    > --
    > 2.31.1
    >

    \
     
     \ /
      Last update: 2023-03-27 01:00    [W:5.155 / U:0.064 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site