f2fs: reduce searching region of segmap when set free section
authorWanpeng Li <wanpeng.li@linux.intel.com>
Fri, 6 Mar 2015 07:00:55 +0000 (15:00 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Fri, 10 Apr 2015 22:08:36 +0000 (15:08 -0700)
In __set_free we will check whether all segment are free in one section
when free one segment, in order to set section to free status. But the
searching region of segmap is from start segno to last segno of main
area, it's not necessary. So let's just only check all segment bitmap
of target section.

Signed-off-by: Wanpeng Li <wanpeng.li@linux.intel.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/segment.h

index 7fd35111cf6241c486c22ec4477c71527528fb79..85d7fa7514b2cf1c90429095dc05076be5bdc3dd 100644 (file)
@@ -336,7 +336,8 @@ static inline void __set_free(struct f2fs_sb_info *sbi, unsigned int segno)
        clear_bit(segno, free_i->free_segmap);
        free_i->free_segments++;
 
-       next = find_next_bit(free_i->free_segmap, MAIN_SEGS(sbi), start_segno);
+       next = find_next_bit(free_i->free_segmap,
+                       start_segno + sbi->segs_per_sec, start_segno);
        if (next >= start_segno + sbi->segs_per_sec) {
                clear_bit(secno, free_i->free_secmap);
                free_i->free_sections++;