Re: FAILED: patch "[PATCH] dm: revert partial fix for redundant bio-based IO accounting" failed to apply to 5.4-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hey Greg,

Turns out the fixes I marked for stable@ aren't actually fixing
anything (after applying the changes: code is cleaner but no
meaningful difference in IO stats).

That is because DM was already patching up the 'sectors' portion of
the stats after a split.  The other fields I documented in the
following header aren't tied to payload (see __part_start_io_acct).

So no _real_ need to backport to 5.4 or 5.10.  Sorry for the noise.

Mike

On Sat, Jan 29 2022 at  8:31P -0500,
gregkh@xxxxxxxxxxxxxxxxxxx <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:

> 
> The patch below does not apply to the 5.4-stable tree.
> If someone wants it applied there, or to any other stable or longterm
> tree, then please email the backport, including the original git commit
> id to <stable@xxxxxxxxxxxxxxx>.
> 
> thanks,
> 
> greg k-h
> 
> ------------------ original commit in Linus's tree ------------------
> 
> From f524d9c95fab54783d0038f7a3e8c014d5b56857 Mon Sep 17 00:00:00 2001
> From: Mike Snitzer <snitzer@xxxxxxxxxx>
> Date: Fri, 28 Jan 2022 10:58:40 -0500
> Subject: [PATCH] dm: revert partial fix for redundant bio-based IO accounting
> 
> Reverts a1e1cb72d9649 ("dm: fix redundant IO accounting for bios that
> need splitting") because it was too narrow in scope (only addressed
> redundant 'sectors[]' accounting and not ios, nsecs[], etc).
> 
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Mike Snitzer <snitzer@xxxxxxxxxx>
> Link: https://lore.kernel.org/r/20220128155841.39644-3-snitzer@xxxxxxxxxx
> Signed-off-by: Jens Axboe <axboe@xxxxxxxxx>
> 
> diff --git a/drivers/md/dm.c b/drivers/md/dm.c
> index c0ae8087c602..9849114b3c08 100644
> --- a/drivers/md/dm.c
> +++ b/drivers/md/dm.c
> @@ -1442,9 +1442,6 @@ static void init_clone_info(struct clone_info *ci, struct mapped_device *md,
>  	ci->sector = bio->bi_iter.bi_sector;
>  }
>  
> -#define __dm_part_stat_sub(part, field, subnd)	\
> -	(part_stat_get(part, field) -= (subnd))
> -
>  /*
>   * Entry point to split a bio into clones and submit them to the targets.
>   */
> @@ -1480,18 +1477,6 @@ static void __split_and_process_bio(struct mapped_device *md,
>  						  GFP_NOIO, &md->queue->bio_split);
>  			ci.io->orig_bio = b;
>  
> -			/*
> -			 * Adjust IO stats for each split, otherwise upon queue
> -			 * reentry there will be redundant IO accounting.
> -			 * NOTE: this is a stop-gap fix, a proper fix involves
> -			 * significant refactoring of DM core's bio splitting
> -			 * (by eliminating DM's splitting and just using bio_split)
> -			 */
> -			part_stat_lock();
> -			__dm_part_stat_sub(dm_disk(md)->part0,
> -					   sectors[op_stat_group(bio_op(bio))], ci.sector_count);
> -			part_stat_unlock();
> -
>  			bio_chain(b, bio);
>  			trace_block_split(b, bio->bi_iter.bi_sector);
>  			submit_bio_noacct(bio);
> 




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux