ext4: fix off by one issue in ext4_mb_choose_next_group_best_avail()
authorOjaswin Mujoo <ojaswin@linux.ibm.com>
Fri, 9 Jun 2023 10:34:03 +0000 (16:04 +0530)
committerTheodore Ts'o <tytso@mit.edu>
Sun, 23 Jul 2023 12:21:14 +0000 (08:21 -0400)
commit5d5460fa7932bed3a9082a6a8852cfbdb46acbe8
tree505e88e2dd22fc21f5e7308de39d841aa7232a61
parent6909cf5c4101214f4305a62d582a5b93c7e1eb9a
ext4: fix off by one issue in ext4_mb_choose_next_group_best_avail()

In ext4_mb_choose_next_group_best_avail(), we want the start order to be
1 less than goal length and the min_order to be, at max, 1 more than the
original length. This commit fixes an off by one issue that arose due to
the fact that 1 << fls(n) > (n).

After all the processing:

order = 1 order below goal len
min_order = maximum of the three:-
             - order - trim_order
             - 1 order below B2C(s_stripe)
             - 1 order above original len

Cc: stable@kernel.org
Fixes: 33122aa930 ("ext4: Add allocation criteria 1.5 (CR1_5)")
Signed-off-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>
Link: https://lore.kernel.org/r/20230609103403.112807-1-ojaswin@linux.ibm.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/ext4/mballoc.c