f2fs: use for_each_set_bit to simplify the code
Subsystems (2)
PATCH 1/2 f2fs: use for_each_set_bit to simplify the code
This patch uses for_each_set_bit to simplify some codes in f2fs.
Signed-off-by Chao Yu <[email protected]>
--- fs/f2fs/gc.c | 7 ++----- fs/f2fs/segment.c | 13 ++++--------- 2 files changed, 6 insertions(+), 14 deletions(-)
fs/f2fs/gc.c +2 -5
@@ -186,7 +186,6 @@ static unsigned int get_max_cost(struct f2fs_sb_info *sbi,static unsigned int check_bg_victims (struct f2fs_sb_info *sbi) {struct dirty_seglist_info *dirty_i =DIRTY_I (sbi); -unsigned int hint =0 ;unsigned int secno;/*
@@ -194,11 +193,9 @@ static unsigned int check_bg_victims(struct f2fs_sb_info *sbi)* selected by background GC before. * Those segments guarantee they have small valid blocks. */ -next: - secno =find_next_bit (dirty_i->victim_secmap,TOTAL_SECS (sbi), hint++); -if (secno <TOTAL_SECS (sbi)) { +for_each_set_bit (secno, dirty_i->victim_secmap,TOTAL_SECS (sbi)) {if (sec_usage_check (sbi, secno)) - goto next; +continue ;clear_bit (secno, dirty_i->victim_secmap);return secno * sbi->segs_per_sec; }
fs/f2fs/segment.c +4 -9
@@ -439,17 +439,12 @@ static void add_discard_addrs(struct f2fs_sb_info *sbi,static void set_prefree_as_free_segments (struct f2fs_sb_info *sbi) {struct dirty_seglist_info *dirty_i =DIRTY_I (sbi); -unsigned int segno =-1 ; +unsigned int segno;unsigned int total_segs =TOTAL_SEGS (sbi);mutex_lock (&dirty_i->seglist_lock); -while (1 ) { - segno =find_next_bit (dirty_i->dirty_segmap[PRE ], total_segs, - segno +1 ); -if (segno >= total_segs) -break ; +for_each_set_bit (segno, dirty_i->dirty_segmap[PRE ], total_segs)__set_test_and_free (sbi, segno); - }mutex_unlock (&dirty_i->seglist_lock); }
@@ -1531,7 +1526,7 @@ void flush_sit_entries(struct f2fs_sb_info *sbi)struct page *page =NULL ;struct f2fs_sit_block *raw_sit =NULL ;unsigned int start =0 , end =0 ; -unsigned int segno =-1 ; +unsigned int segno;bool flushed;mutex_lock (&curseg->curseg_mutex);
@@ -1543,7 +1538,7 @@ void flush_sit_entries(struct f2fs_sb_info *sbi)*/ flushed =flush_sits_in_journal (sbi); -while ((segno =find_next_bit (bitmap, nsegs, segno +1 )) < nsegs) { +for_each_set_bit (segno, bitmap, nsegs) {struct seg_entry *se =get_seg_entry (sbi, segno);int sit_offset, offset;
Signature · 10 lines
2.0.0.421.g786a89d ------------------------------------------------------------------------------ Infragistics Professional Build stunning WinForms apps today! Reboot your WinForms applications with our WinForms controls. Build a bridge from your legacy apps to the future. http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk