On 2022/5/7 7:20, Jaegeuk Kim wrote:
In f2fs_gc thread, let's keep wait_ms when sec_freed was zero.

sec_freed won't increase for background GC due to below statement:

                if (gc_type == FG_GC &&
                                get_valid_blocks(sbi, segno, false) == 0)
                        seg_freed++;

It may cause gc thread migrates lots of segments in each round?

Thanks,


Signed-off-by: Jaegeuk Kim <[email protected]>
---
  fs/f2fs/gc.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c
index aeffcc1d5c02..ec3f6f876e76 100644
--- a/fs/f2fs/gc.c
+++ b/fs/f2fs/gc.c
@@ -37,7 +37,8 @@ static int gc_thread_func(void *data)
        unsigned int wait_ms;
        struct f2fs_gc_control gc_control = {
                .victim_segno = NULL_SEGNO,
-               .should_migrate_blocks = false };
+               .should_migrate_blocks = false,
+               .err_gc_skipped = false };
wait_ms = gc_th->min_sleep_time; @@ -146,7 +147,6 @@ static int gc_thread_func(void *data) gc_control.init_gc_type = sync_mode ? FG_GC : BG_GC;
                gc_control.no_bg_gc = foreground;
-               gc_control.err_gc_skipped = sync_mode;
/* if return value is not zero, no victim was selected */
                if (f2fs_gc(sbi, &gc_control))


_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to