On Thu, Jan 27 2022 at  5:56P -0500,
Mike Snitzer <[email protected]> wrote:

> Record the start_time for a bio but defer the starting block core's IO
> accounting until after IO is submitted using bio_start_io_acct_time().
> 
> This approach avoids the need to mess around with any of the
> individual IO stats in response to a bio_split() that follows bio
> submission.
> 
> Reported-by: Bud Brown <[email protected]>
> Cc: [email protected]
> Depends-on: f9893e1da2e3 ("block: add bio_start_io_acct_time() to control 
> start_time")
> Signed-off-by: Mike Snitzer <[email protected]>
> ---
>  drivers/md/dm.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/md/dm.c b/drivers/md/dm.c
> index 9849114b3c08..144436301a57 100644
> --- a/drivers/md/dm.c
> +++ b/drivers/md/dm.c
> @@ -489,7 +489,7 @@ static void start_io_acct(struct dm_io *io)
>       struct mapped_device *md = io->md;
>       struct bio *bio = io->orig_bio;
>  
> -     io->start_time = bio_start_io_acct(bio);
> +     __bio_start_io_acct(bio, io->start_time);
>       if (unlikely(dm_stats_used(&md->stats)))
>               dm_stats_account_io(&md->stats, bio_data_dir(bio),
>                                   bio->bi_iter.bi_sector, bio_sectors(bio),

This should be calling bio_start_io_acct_time().
I updated the header but somehow dropped the code change before
sending.

Mike

> @@ -535,7 +535,7 @@ static struct dm_io *alloc_io(struct mapped_device *md, 
> struct bio *bio)
>       io->md = md;
>       spin_lock_init(&io->endio_lock);
>  
> -     start_io_acct(io);
> +     io->start_time = READ_ONCE(jiffies);
>  
>       return io;
>  }
> @@ -1482,6 +1482,7 @@ static void __split_and_process_bio(struct 
> mapped_device *md,
>                       submit_bio_noacct(bio);
>               }
>       }
> +     start_io_acct(ci.io);
>  
>       /* drop the extra reference count */
>       dm_io_dec_pending(ci.io, errno_to_blk_status(error));
> -- 
> 2.15.0
> 

--
dm-devel mailing list
[email protected]
https://listman.redhat.com/mailman/listinfo/dm-devel

Reply via email to