[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <ab569309-f639-33af-ebb3-909a02158d02@kernel.org>
Date: Thu, 12 May 2022 10:04:01 +0800
From: Chao Yu <chao@...nel.org>
To: Jaegeuk Kim <jaegeuk@...nel.org>
Cc: linux-kernel@...r.kernel.org,
linux-f2fs-devel@...ts.sourceforge.net
Subject: Re: [f2fs-dev] [PATCH 4/5] f2fs: do not stop GC when requiring a free
section
On 2022/5/12 0:47, Jaegeuk Kim wrote:
>>>>> @@ -147,6 +147,7 @@ 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.nr_free_secs = foreground ? 1 : 0;
[snip]
>
> I mean gc_control->nr_free_secs should be 0.
[snip]
>>>>> @@ -528,7 +528,8 @@ void f2fs_balance_fs(struct f2fs_sb_info *sbi, bool need)
>>>>> .init_gc_type = BG_GC,
>>>>> .no_bg_gc = true,
>>>>> .should_migrate_blocks = false,
>>>>> - .err_gc_skipped = false };
>>>>> + .err_gc_skipped = false,
>>>>> + .nr_free_secs = 1 };
Oh, so, in above two paths, when .nr_free_secs is 1, no_bg_gc should be true
to keep skipping BG_GC flow.
How about adding a check condition in f2fs_gc() to avoid invalid argument
usage in future?
From: Chao Yu <chao@...nel.org>
---
fs/f2fs/gc.c | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c
index 385282017317..a98276fd3cc1 100644
--- a/fs/f2fs/gc.c
+++ b/fs/f2fs/gc.c
@@ -1799,10 +1799,19 @@ int f2fs_gc(struct f2fs_sb_info *sbi, struct f2fs_gc_control *gc_control)
gc_type = FG_GC;
}
- /* f2fs_balance_fs doesn't need to do BG_GC in critical path. */
- if (gc_type == BG_GC && gc_control->no_bg_gc) {
- ret = -EINVAL;
- goto stop;
+ if (gc_type == BG_GC) {
+ /* f2fs_balance_fs doesn't need to do BG_GC in critical path. */
+ if (gc_control->no_bg_gc) {
+ ret = -EINVAL;
+ goto stop;
+ }
+ /*
+ * BG_GC never guarantee that blocks are migrated synchronously.
+ */
+ if (gc_control->nr_free_secs) {
+ ret = -EINVAL;
+ goto stop;
+ }
}
retry:
ret = __get_victim(sbi, &segno, gc_type);
--
2.25.1
Thanks,
Powered by blists - more mailing lists