ext4: Avoid scanning smaller extents in BG during CR1
authorOjaswin Mujoo <ojaswin@linux.ibm.com>
Tue, 30 May 2023 12:33:45 +0000 (18:03 +0530)
committerTheodore Ts'o <tytso@mit.edu>
Mon, 26 Jun 2023 23:34:56 +0000 (19:34 -0400)
commit1b420011210802a7a1b1e99f30bc1d62c352ac71
treee1acf7c17910cc0393f336cabb15282254bc31c3
parent3ef5d263879696027c70548532a94418aad3bd95
ext4: Avoid scanning smaller extents in BG during CR1

When we are inside ext4_mb_complex_scan_group() in CR1, we can be sure
that this group has atleast 1 big enough continuous free extent to satisfy
our request because (free / fragments) > goal length.

Hence, instead of wasting time looping over smaller free extents, only
try to consider the free extent if we are sure that it has enough
continuous free space to satisfy goal length. This is particularly
useful when scanning highly fragmented BGs in CR1 as, without this
patch, the allocator might stop scanning early before reaching the big
enough free extent (due to ac_found > mb_max_to_scan) which causes us to
uncessarily trim the request.

Signed-off-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>
Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Link: https://lore.kernel.org/r/a5473df4517c53ec940bc9b603ef83a547032a32.1685449706.git.ojaswin@linux.ibm.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/ext4/mballoc.c