f2fs: use for_each_set_bit to simplify the code
authorChao Yu <chao2.yu@samsung.com>
Mon, 4 Aug 2014 02:10:07 +0000 (10:10 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Mon, 4 Aug 2014 20:20:53 +0000 (13:20 -0700)
This patch uses for_each_set_bit to simplify some codes in f2fs.

Signed-off-by: Chao Yu <chao2.yu@samsung.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/gc.c
fs/f2fs/segment.c

index b90dbe55403a4dbd0c1504c399a2285d416b6063..d7947d90ccc3df487919723578bf5f81dde2d8a6 100644 (file)
@@ -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;
        }
index c3b76d09145030b38823a2062bbadf15ee69d551..0dfeebae2a50f1d8ff4b7a33e19a25fb32c2e834 100644 (file)
@@ -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;