f2fs: correct search area in get_new_segment
get_new_segment starts from current segment position, tries to search a free segment among its right neighbors locate in same section. But previously our search area was set as [current segment, max segment], which means we have to search to more bits in free_segmap bitmap for some worse cases. So here we correct the search area to [current segment, last segment in section] to avoid unnecessary searching. Signed-off-by: Chao Yu <chao2.yu@samsung.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This commit is contained in:
parent
2304cb0c44
commit
0ab1435631
|
@ -874,9 +874,8 @@ static void get_new_segment(struct f2fs_sb_info *sbi,
|
|||
|
||||
if (!new_sec && ((*newseg + 1) % sbi->segs_per_sec)) {
|
||||
segno = find_next_zero_bit(free_i->free_segmap,
|
||||
MAIN_SEGS(sbi), *newseg + 1);
|
||||
if (segno - *newseg < sbi->segs_per_sec -
|
||||
(*newseg % sbi->segs_per_sec))
|
||||
(hint + 1) * sbi->segs_per_sec, *newseg + 1);
|
||||
if (segno < (hint + 1) * sbi->segs_per_sec)
|
||||
goto got_it;
|
||||
}
|
||||
find_other_zone:
|
||||
|
|
Loading…
Reference in New Issue