From: Daeho Jeong <daehoje...@google.com> Need bigger BG GC migration granularity when free section is running low.
Signed-off-by: Daeho Jeong <daehoje...@google.com> --- fs/f2fs/gc.c | 13 +++++++++++-- fs/f2fs/gc.h | 1 + 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c index b5d3fd40b17a..d6d71aab94f3 100644 --- a/fs/f2fs/gc.c +++ b/fs/f2fs/gc.c @@ -1728,8 +1728,17 @@ static int do_garbage_collect(struct f2fs_sb_info *sbi, sec_end_segno -= SEGS_PER_SEC(sbi) - f2fs_usable_segs_in_sec(sbi, segno); - if (gc_type == BG_GC) - end_segno = start_segno + sbi->migration_granularity; + if (gc_type == BG_GC) { + unsigned int migration_granularity = + sbi->migration_granularity; + + if (f2fs_sb_has_blkzoned(sbi) && + !has_enough_free_blocks(sbi, + LIMIT_BOOST_ZONED_GC)) + migration_granularity *= BOOST_GC_MULTIPLE; + + end_segno = start_segno + migration_granularity; + } if (end_segno > sec_end_segno) end_segno = sec_end_segno; diff --git a/fs/f2fs/gc.h b/fs/f2fs/gc.h index 14ae85f33235..33848d550153 100644 --- a/fs/f2fs/gc.h +++ b/fs/f2fs/gc.h @@ -33,6 +33,7 @@ #define LIMIT_NO_ZONED_GC 60 /* percentage over total user space of no gc for zoned devices */ #define LIMIT_BOOST_ZONED_GC 25 /* percentage over total user space of boosted gc for zoned devices */ #define DEF_MIGRATION_GRANULARITY_ZONED 3 +#define BOOST_GC_MULTIPLE 5 #define DEF_GC_FAILED_PINNED_FILES 2048 #define MAX_GC_FAILED_PINNED_FILES USHRT_MAX -- 2.46.0.469.g59c65b2a67-goog _______________________________________________ Linux-f2fs-devel mailing list Linux-f2fs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel