Re: [f2fs-dev] [PATCH 3/3] f2fs: skip migration only when BG_GC is called

From: Chao Yu
Date: Sun Feb 16 2020 - 21:22:31 EST


On 2020/2/15 2:58, Jaegeuk Kim wrote:
> FG_GC needs to move entire section more quickly.
>
> Signed-off-by: Jaegeuk Kim <jaegeuk@xxxxxxxxxx>
> ---
> fs/f2fs/gc.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c
> index bbf4db3f6bb4..1676eebc8c8b 100644
> --- a/fs/f2fs/gc.c
> +++ b/fs/f2fs/gc.c
> @@ -1203,7 +1203,7 @@ static int do_garbage_collect(struct f2fs_sb_info *sbi,
>
> if (get_valid_blocks(sbi, segno, false) == 0)
> goto freed;
> - if (__is_large_section(sbi) &&
> + if (gc_type == BG_GC && __is_large_section(sbi) &&
> migrated >= sbi->migration_granularity)

I knew migrating one large section is a more efficient way, but this can
increase long-tail latency of f2fs_balance_fs() occasionally, especially in
extreme fragmented space.

Thanks,

> goto skip;
> if (!PageUptodate(sum_page) || unlikely(f2fs_cp_error(sbi)))
>