On Wed 27-03-24 05:38:19, Kemeng Shi wrote: > Keep "prefetch_grp" and "nr" consistent to avoid to call > ext4_mb_prefetch_fini with non-prefetched groups. > When we step into next criteria, "prefetch_grp" is set to prefetch start > of new criteria while "nr" is number of the prefetched group in previous > criteria. If previous criteria and next criteria are both inexpensive > (< CR_GOAL_LEN_SLOW) and prefetch_ios reachs sbi->s_mb_prefetch_limit > in previous criteria, "prefetch_grp" and "nr" will be inconsistent and > may introduce unexpected cost to do ext4_mb_init_group for non-prefetched > groups. > Reset "nr" to 0 when we reset "prefetch_grp" to start of prefech in next > criteria to ensure "prefetch_grp" and "nr" are consistent. > > Signed-off-by: Kemeng Shi <shikemeng@xxxxxxxxxxxxxxx> Looks good. Feel free to add: Reviewed-by: Jan Kara <jack@xxxxxxx> Honza > --- > fs/ext4/mballoc.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c > index 12b3f196010b..a61fc52956b2 100644 > --- a/fs/ext4/mballoc.c > +++ b/fs/ext4/mballoc.c > @@ -2856,6 +2856,7 @@ ext4_mb_regular_allocator(struct ext4_allocation_context *ac) > group = ac->ac_g_ex.fe_group; > ac->ac_groups_linear_remaining = sbi->s_mb_max_linear_groups; > prefetch_grp = group; > + nr = 0; > > for (i = 0, new_cr = cr; i < ngroups; i++, > ext4_mb_choose_next_group(ac, &new_cr, &group, ngroups)) { > -- > 2.30.0 > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR