Thought of giving more clarification on my question why group search start is random ? because we can also start search for valid groups for inode allocation from the start . As this group search is random inode selection might go to end of groups which might affect IO performance On Thu, Dec 3, 2015 at 1:14 PM, lokesh jaliminche <lokesh.jaliminche@xxxxxxxxx> wrote: > hello folks, > I am new to ext4 code. I was going through the > ext4-source for allocation of inode. > There is one thing that I did not understand while selection of groups > for inode allocation . I came across this code snippet which is part > of find_group_orlov function. question is, why group search start is > random ? > > Code snippet: > ========== > ···if (qstr) { > »·······»·······»·······hinfo.hash_version = LDISKFS_DX_HASH_HALF_MD4; > »·······»·······»·······hinfo.seed = sbi->s_hash_seed; > »·······»·······»·······ldiskfsfs_dirhash(qstr->name, qstr->len, &hinfo); > »·······»·······»·······grp = hinfo.hash; > »·······»·······} else > »·······»·······»·······get_random_bytes(&grp, sizeof(grp)); > »·······»·······parent_group = (unsigned)grp % ngroups; > »·······»·······for (i = 0; i < ngroups; i++) { > »·······»·······»·······g = (parent_group + i) % ngroups; > »·······»·······»·······get_orlov_stats(sb, g, flex_size, &stats); > »·······»·······»·······if (!stats.free_inodes) > »·······»·······»·······»·······continue; > »·······»·······»·······if (stats.used_dirs >= best_ndir) > »·······»·······»·······»·······continue; > »·······»·······»·······if (stats.free_inodes < avefreei) > »·······»·······»·······»·······continue; > »·······»·······»·······if (stats.free_blocks < avefreeb) > »·······»·······»·······»·······continue; > »·······»·······»·······grp = g; > »·······»·······»·······ret = 0; > »·······»·······»·······best_ndir = stats.used_dirs; > »·······»·······} > > Thanks & Regards, > Lokesh ��.n��������+%������w��{.n�����{�����ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f