Signed-off-by: Yunlong Song <yunlong.s...@huawei.com>
---
 fs/f2fs/segment.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
index 9d13743..5fe71b9 100644
--- a/fs/f2fs/segment.c
+++ b/fs/f2fs/segment.c
@@ -1540,12 +1540,17 @@ static int get_ssr_segment(struct f2fs_sb_info *sbi, 
int type)
 {
        struct curseg_info *curseg = CURSEG_I(sbi, type);
        const struct victim_selection *v_ops = DIRTY_I(sbi)->v_ops;
+       int old_type = type;
 
        if (IS_NODESEG(type)) {
                for (; type >= CURSEG_HOT_NODE; type--)
                        if (v_ops->get_victim(sbi, &(curseg)->next_segno,
                                                        BG_GC, type, SSR))
                                return 1;
+               for (type = old_type + 1; type <= CURSEG_COLD_NODE; type++)
+                       if (v_ops->get_victim(sbi, &(curseg)->next_segno,
+                                                       BG_GC, type, SSR))
+                               return 1;
                return 0;
        }
 
@@ -1554,6 +1559,10 @@ static int get_ssr_segment(struct f2fs_sb_info *sbi, int 
type)
                if (v_ops->get_victim(sbi, &(curseg)->next_segno,
                                                BG_GC, type, SSR))
                        return 1;
+       for (type = old_type + 1; type <= CURSEG_COLD_DATA; type++)
+               if (v_ops->get_victim(sbi, &(curseg)->next_segno,
+                                               BG_GC, type, SSR))
+                       return 1;
        return 0;
 }
 
-- 
1.8.5.2

Reply via email to