return __find_rev_next_zero_bit(target_map, sbi->blocks_per_seg, start);
 }
 
-/*
- * If a segment is written by LFS manner, next block offset is just obtained
- * by increasing the current block offset. However, if a segment is written by
- * SSR manner, next block offset obtained by calling __next_free_blkoff
- */
-static void __refresh_next_blkoff(struct f2fs_sb_info *sbi,
-                               struct curseg_info *seg)
+static int f2fs_find_next_ssr_block(struct f2fs_sb_info *sbi,
+               struct curseg_info *seg)
 {
-       if (seg->alloc_type == SSR) {
-               seg->next_blkoff =
-                       __next_free_blkoff(sbi, seg->segno,
-                                               seg->next_blkoff + 1);
-       } else {
-               seg->next_blkoff++;
-               if (F2FS_OPTION(sbi).fs_mode == FS_MODE_FRAGMENT_BLK) {
-                       /* To allocate block chunks in different sizes, use random number */
-                       if (--seg->fragment_remained_chunk <= 0) {
-                               seg->fragment_remained_chunk =
-                                  get_random_u32_inclusive(1, sbi->max_fragment_chunk);
-                               seg->next_blkoff +=
-                                  get_random_u32_inclusive(1, sbi->max_fragment_hole);
-                       }
-               }
-       }
+       return __next_free_blkoff(sbi, seg->segno, seg->next_blkoff + 1);
 }
 
 bool f2fs_segment_has_free_slot(struct f2fs_sb_info *sbi, int segno)
        return type;
 }
 
+static void f2fs_randomize_chunk(struct f2fs_sb_info *sbi,
+               struct curseg_info *seg)
+{
+       /* To allocate block chunks in different sizes, use random number */
+       if (--seg->fragment_remained_chunk > 0)
+               return;
+
+       seg->fragment_remained_chunk =
+               get_random_u32_inclusive(1, sbi->max_fragment_chunk);
+       seg->next_blkoff +=
+               get_random_u32_inclusive(1, sbi->max_fragment_hole);
+}
+
 void f2fs_allocate_data_block(struct f2fs_sb_info *sbi, struct page *page,
                block_t old_blkaddr, block_t *new_blkaddr,
                struct f2fs_summary *sum, int type,
        f2fs_wait_discard_bio(sbi, *new_blkaddr);
 
        curseg->sum_blk->entries[curseg->next_blkoff] = *sum;
-       __refresh_next_blkoff(sbi, curseg);
-
+       if (curseg->alloc_type == SSR) {
+               curseg->next_blkoff = f2fs_find_next_ssr_block(sbi, curseg);
+       } else {
+               curseg->next_blkoff++;
+               if (F2FS_OPTION(sbi).fs_mode == FS_MODE_FRAGMENT_BLK)
+                       f2fs_randomize_chunk(sbi, curseg);
+       }
        stat_inc_block_count(sbi, curseg);
 
        if (from_gc) {