On Wed, 2023-08-09 at 13:16 -0400, David Jeffery wrote: > When a bio is split by md raid0, the newly created bio will not be > tracked > by md for I/O accounting. Only the portion of I/O still assigned to > the > original bio which was reduced by the split will be accounted for. > This > results in md iostat data sometimes showing I/O values far below the > actual > amount of data being sent through md. > > md_account_bio() needs to be called for all bio generated by the bio > split. > > Signed-off-by: David Jeffery <djeffery@xxxxxxxxxx> > Tested-by: Laurence Oberman <loberman@xxxxxxxxxx> > --- > drivers/md/raid0.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c > index d1ac73fcd852..1fd559ac8c68 100644 > --- a/drivers/md/raid0.c > +++ b/drivers/md/raid0.c > @@ -597,8 +597,7 @@ static bool raid0_make_request(struct mddev > *mddev, struct bio *bio) > bio = split; > } > > - if (bio->bi_pool != &mddev->bio_set) > - md_account_bio(mddev, &bio); > + md_account_bio(mddev, &bio); > > orig_sector = sector; > zone = find_zone(mddev->private, §or); Works well, looks good. Reviewed-by: Laurence Oberman <loberman@xxxxxxxxxx>