summaryrefslogtreecommitdiff
path: root/fs/f2fs/gc.c
diff options
context:
space:
mode:
authorYangtao Li <frank.li@vivo.com>2022-10-25 09:50:25 +0300
committerJaegeuk Kim <jaegeuk@kernel.org>2022-11-02 03:56:04 +0300
commite5a0db6a9e2eafe50e3ebc73a8285ae561e7d850 (patch)
tree851799b999b3e3ac6cd18ff12646c3d4eea37b94 /fs/f2fs/gc.c
parenteebd36a408bb6fc5d7adbb4b8c6db993d0a850f8 (diff)
downloadlinux-e5a0db6a9e2eafe50e3ebc73a8285ae561e7d850.tar.xz
f2fs: replace gc_urgent_high_remaining with gc_remaining_trials
The user can set the trial count limit for GC urgent and idle mode with replaced gc_remaining_trials.. If GC thread gets to the limit, the mode will turn back to GC normal mode finally. It was applied only to GC_URGENT, while this patch expands it for GC_IDLE. Signed-off-by: Yangtao Li <frank.li@vivo.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs/f2fs/gc.c')
-rw-r--r--fs/f2fs/gc.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c
index 15f56859966c..6466db75af5d 100644
--- a/fs/f2fs/gc.c
+++ b/fs/f2fs/gc.c
@@ -152,14 +152,14 @@ do_gc:
/* balancing f2fs's metadata periodically */
f2fs_balance_fs_bg(sbi, true);
next:
- if (sbi->gc_mode == GC_URGENT_HIGH) {
- spin_lock(&sbi->gc_urgent_high_lock);
- if (sbi->gc_urgent_high_remaining) {
- sbi->gc_urgent_high_remaining--;
- if (!sbi->gc_urgent_high_remaining)
+ if (sbi->gc_mode != GC_NORMAL) {
+ spin_lock(&sbi->gc_remaining_trials_lock);
+ if (sbi->gc_remaining_trials) {
+ sbi->gc_remaining_trials--;
+ if (!sbi->gc_remaining_trials)
sbi->gc_mode = GC_NORMAL;
}
- spin_unlock(&sbi->gc_urgent_high_lock);
+ spin_unlock(&sbi->gc_remaining_trials_lock);
}
sb_end_write(sbi->sb);