On Sat, Nov 07, 2020 at 11:58:14PM +0800, Chunguang Xu wrote: > From: Chunguang Xu <brookxu@xxxxxxxxxxx> > > In order to avoid poor search efficiency of system_zone, the > system only adds metadata of some sparse group to system_zone. > In the meta_bg scenario, the non-sparse group may contain gdt > blocks. Perhaps we should add these blocks to system_zone to > improve fault tolerance without significantly reducing system > performance. > @@ -226,13 +227,16 @@ int ext4_setup_system_zone(struct super_block *sb) > > for (i=0; i < ngroups; i++) { > cond_resched(); > - if (ext4_bg_has_super(sb, i) && > - ((i < 5) || ((i % flex_size) == 0))) { > - ret = add_system_zone(system_blks, > - ext4_group_first_block_no(sb, i), > - ext4_bg_num_gdb(sb, i) + 1, 0); > - if (ret) > - goto err; > + if ((i < 5) || ((i % flex_size) == 0)) { If we're going to do this, why not just drop the above conditional, and just always do this logic for all block groups? > + gd_blks = ext4_bg_has_super(sb, i) + > + ext4_bg_num_gdb(sb, i); > + if (gd_blks) { > + ret = add_system_zone(system_blks, > + ext4_group_first_block_no(sb, i), > + gd_blks, 0); > + if (ret) > + goto err; > + } - Ted