]> Pileus Git - ~andy/linux/blobdiff - fs/f2fs/segment.h
Merge branch 'for_linus' of git://cavan.codon.org.uk/platform-drivers-x86
[~andy/linux] / fs / f2fs / segment.h
index 66a288a52fd306f64d83cba764729d35c56f46f1..552dadbb23272e8b2c3e10a04cfa3d0c0262de2d 100644 (file)
@@ -450,29 +450,16 @@ static inline bool need_SSR(struct f2fs_sb_info *sbi)
        return (free_sections(sbi) < overprovision_sections(sbi));
 }
 
-static inline int get_ssr_segment(struct f2fs_sb_info *sbi, int type)
+static inline bool has_not_enough_free_secs(struct f2fs_sb_info *sbi, int freed)
 {
-       struct curseg_info *curseg = CURSEG_I(sbi, type);
-       return DIRTY_I(sbi)->v_ops->get_victim(sbi,
-                               &(curseg)->next_segno, BG_GC, type, SSR);
-}
-
-static inline bool has_not_enough_free_secs(struct f2fs_sb_info *sbi)
-{
-       unsigned int pages_per_sec = (1 << sbi->log_blocks_per_seg) *
-                       sbi->segs_per_sec;
-       int node_secs = ((get_pages(sbi, F2FS_DIRTY_NODES) + pages_per_sec - 1)
-                       >> sbi->log_blocks_per_seg) / sbi->segs_per_sec;
-       int dent_secs = ((get_pages(sbi, F2FS_DIRTY_DENTS) + pages_per_sec - 1)
-                       >> sbi->log_blocks_per_seg) / sbi->segs_per_sec;
+       int node_secs = get_blocktype_secs(sbi, F2FS_DIRTY_NODES);
+       int dent_secs = get_blocktype_secs(sbi, F2FS_DIRTY_DENTS);
 
        if (sbi->por_doing)
                return false;
 
-       if (free_sections(sbi) <= (node_secs + 2 * dent_secs +
-                                               reserved_sections(sbi)))
-               return true;
-       return false;
+       return ((free_sections(sbi) + freed) <= (node_secs + 2 * dent_secs +
+                                               reserved_sections(sbi)));
 }
 
 static inline int utilization(struct f2fs_sb_info *sbi)