On Thu, Mar 09, 2023 at 01:11:22PM +0100, Jan Kara wrote: > On Fri 27-01-23 18:07:31, Ojaswin Mujoo wrote: > > Convert criteria to be an enum so it easier to maintain. This change > > also makes it easier to insert new criterias in the future. > > > > Signed-off-by: Ojaswin Mujoo <ojaswin@xxxxxxxxxxxxx> > > Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@xxxxxxxxx> > > Just two small comments below: Hi Jan, Thanks for the review. > > > diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h > > index b8b00457da8d..6037b8e0af86 100644 > > --- a/fs/ext4/ext4.h > > +++ b/fs/ext4/ext4.h > > @@ -126,6 +126,14 @@ enum SHIFT_DIRECTION { > > SHIFT_RIGHT, > > }; > > > > +/* > > + * Number of criterias defined. For each criteria, mballoc has slightly > > + * different way of finding the required blocks nad usually, higher the > ^^^ and > > > + * criteria the slower the allocation. We start at lower criterias and keep > > + * falling back to higher ones if we are not able to find any blocks. > > + */ > > +#define EXT4_MB_NUM_CRS 4 > > + > > So defining this in a different header than the enum itself is fragile. I > understand you need it in ext4_sb_info declaration so probably I'd move the > enum declaration to ext4.h. Alternatively I suppose we could move a lot of Got it, I'll try to keep them in the same file. > mballoc stuff out of ext4_sb_info into a separate struct because there's a > lot of it. But that would be much larger undertaking. Right, we did notice that as well, but as you said, that's out of scope of this patchset. > > Also when going for symbolic allocator scan names maybe we could actually > make names sensible instead of CR[0-4]? Perhaps like CR_ORDER2_ALIGNED, > CR_BEST_LENGHT_FAST, CR_BEST_LENGTH_ALL, CR_ANY_FREE. And probably we could > deal with ordered comparisons like in: I like this idea, it should make the code a bit more easier to understand. However just wondering if I should do it as a part of this series or a separate patch since we'll be touching code all around and I don't want to confuse people with the noise :) > > if (cr < 2 && > (!sbi->s_log_groups_per_flex || > ((group & ((1 << sbi->s_log_groups_per_flex) - 1)) != 0)) & > !(ext4_has_group_desc_csum(sb) && > (gdp->bg_flags & cpu_to_le16(EXT4_BG_BLOCK_UNINIT)))) > return 0; > > to declare CR_FAST_SCAN = 2, or something like that. What do you think? About this, wont it be better to just use something like cr < CR_BEST_LENGTH_ALL instead of defining a new CR_FAST_SCAN = 2. The only concern is that if we add a new "fast" CR (say between CR_BEST_LENGTH_FAST and CR_BEST_LENGTH_ALL) then we'll need to make sure we also update CR_FAST_SCAN to 3 which is easy to miss. Regards, Ojaswin > > Honza > -- > Jan Kara <jack@xxxxxxxx> > SUSE Labs, CR