On Sat 01-06-19 16:49:41, Chengguang Xu wrote: > Start from parent blockgroup when trying linear search > for a free indoe because for non directory inode it's > better to keep in same blockgroup with parent. > > Signed-off-by: Chengguang Xu <cgxu519@xxxxxxxxxxx> Thanks for the patch! As much as I agree that incrementing group before calling ext2_get_group_desc() was probably an oversight I don't think that changing that at this point is good. For ext2 driver we don't really care about performance too much anymore and also existing filesystems have inodes for files in a directory allocated in parent_group + 1 and this change would spread them also to parent_group effectively worsening the situation. Honza > --- > fs/ext2/ialloc.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/fs/ext2/ialloc.c b/fs/ext2/ialloc.c > index fda7d3f5b4be..435463a255e6 100644 > --- a/fs/ext2/ialloc.c > +++ b/fs/ext2/ialloc.c > @@ -411,11 +411,11 @@ static int find_group_other(struct super_block *sb, struct inode *parent) > */ > group = parent_group; > for (i = 0; i < ngroups; i++) { > - if (++group >= ngroups) > - group = 0; > desc = ext2_get_group_desc (sb, group, NULL); > if (desc && le16_to_cpu(desc->bg_free_inodes_count)) > goto found; > + if (++group >= ngroups) > + group = 0; > } > > return -1; > -- > 2.17.2 > > > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR