f2fs: avoid frequent checkpoint during f2fs_gc
authorJaegeuk Kim <jaegeuk@kernel.org>
Sat, 8 Apr 2017 00:25:54 +0000 (17:25 -0700)
committerJaegeuk Kim <jaegeuk@kernel.org>
Tue, 11 Apr 2017 22:12:39 +0000 (15:12 -0700)
Now we're doing SSR aggressively more than ever before, so once we reach to
the reserved_segment, f2fs_balance_fs will call f2fs_gc, which triggers
checkpoint everytime. We actually must avoid that.

Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/gc.c

index e2f9b2b12b743292d7caca6e33a53d25b94e40f8..9172112d624642a3a04aea669596db81ffc9827b 100644 (file)
@@ -966,9 +966,11 @@ gc_more:
                 * threshold, we can make them free by checkpoint. Then, we
                 * secure free segments which doesn't need fggc any more.
                 */
-               ret = write_checkpoint(sbi, &cpc);
-               if (ret)
-                       goto stop;
+               if (prefree_segments(sbi)) {
+                       ret = write_checkpoint(sbi, &cpc);
+                       if (ret)
+                               goto stop;
+               }
                if (has_not_enough_free_secs(sbi, 0, 0))
                        gc_type = FG_GC;
        }