2022-08-13 14:48:33

by Jaegeuk Kim

[permalink] [raw]
Subject: [PATCH] f2fs: fix wrong continue condition in GC

We should decrease the frozen counter.

Cc: [email protected]
Fixes: 325163e9892b ("f2fs: add gc_urgent_high_remaining sysfs node")
Signed-off-by: Jaegeuk Kim <[email protected]>
---
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 6da21d405ce1..7e4b41240d59 100644
--- a/fs/f2fs/gc.c
+++ b/fs/f2fs/gc.c
@@ -102,7 +102,7 @@ static int gc_thread_func(void *data)
sbi->gc_urgent_high_limited = false;
spin_unlock(&sbi->gc_urgent_high_lock);
sbi->gc_mode = GC_NORMAL;
- continue;
+ goto next;
}
sbi->gc_urgent_high_remaining--;
}
--
2.37.1.595.g718a3a8f04-goog


2022-08-15 04:07:17

by Chao Yu

[permalink] [raw]
Subject: Re: [f2fs-dev] [PATCH] f2fs: fix wrong continue condition in GC

On 2022/8/13 22:37, Jaegeuk Kim wrote:
> We should decrease the frozen counter.
>
> Cc: [email protected]
> Fixes: 325163e9892b ("f2fs: add gc_urgent_high_remaining sysfs node")
> Signed-off-by: Jaegeuk Kim <[email protected]>
> ---
> 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 6da21d405ce1..7e4b41240d59 100644
> --- a/fs/f2fs/gc.c
> +++ b/fs/f2fs/gc.c
> @@ -102,7 +102,7 @@ static int gc_thread_func(void *data)
> sbi->gc_urgent_high_limited = false;
> spin_unlock(&sbi->gc_urgent_high_lock);
> sbi->gc_mode = GC_NORMAL;
> - continue;
> + goto next;
> }
> sbi->gc_urgent_high_remaining--;
> }

Why not:

if (!sbi->gc_urgent_high_remaining) {
sbi->gc_urgent_high_limited = false;
spin_unlock(&sbi->gc_urgent_high_lock);
sbi->gc_mode = GC_NORMAL;
} else {
sbi->gc_urgent_high_remaining--;
}

Thanks,

2022-08-20 00:07:39

by Jaegeuk Kim

[permalink] [raw]
Subject: Re: [PATCH v2] f2fs: fix wrong continue condition in GC

We should decrease the frozen counter.

Cc: [email protected]
Fixes: 325163e9892b ("f2fs: add gc_urgent_high_remaining sysfs node")
Signed-off-by: Jaegeuk Kim <[email protected]>
---

Change log from v1:
- fix by refactoring the flow

fs/f2fs/gc.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c
index 6da21d405ce1..45f90e3c46d4 100644
--- a/fs/f2fs/gc.c
+++ b/fs/f2fs/gc.c
@@ -97,14 +97,10 @@ static int gc_thread_func(void *data)
*/
if (sbi->gc_mode == GC_URGENT_HIGH) {
spin_lock(&sbi->gc_urgent_high_lock);
- if (sbi->gc_urgent_high_limited) {
- if (!sbi->gc_urgent_high_remaining) {
- sbi->gc_urgent_high_limited = false;
- spin_unlock(&sbi->gc_urgent_high_lock);
- sbi->gc_mode = GC_NORMAL;
- continue;
- }
- sbi->gc_urgent_high_remaining--;
+ if (sbi->gc_urgent_high_limited &&
+ !sbi->gc_urgent_high_remaining--) {
+ sbi->gc_urgent_high_limited = false;
+ sbi->gc_mode = GC_NORMAL;
}
spin_unlock(&sbi->gc_urgent_high_lock);
}
--
2.37.1.595.g718a3a8f04-goog

2022-08-20 00:10:55

by Jaegeuk Kim

[permalink] [raw]
Subject: Re: [f2fs-dev] [PATCH] f2fs: fix wrong continue condition in GC

On 08/15, Chao Yu wrote:
> On 2022/8/13 22:37, Jaegeuk Kim wrote:
> > We should decrease the frozen counter.
> >
> > Cc: [email protected]
> > Fixes: 325163e9892b ("f2fs: add gc_urgent_high_remaining sysfs node")
> > Signed-off-by: Jaegeuk Kim <[email protected]>
> > ---
> > 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 6da21d405ce1..7e4b41240d59 100644
> > --- a/fs/f2fs/gc.c
> > +++ b/fs/f2fs/gc.c
> > @@ -102,7 +102,7 @@ static int gc_thread_func(void *data)
> > sbi->gc_urgent_high_limited = false;
> > spin_unlock(&sbi->gc_urgent_high_lock);
> > sbi->gc_mode = GC_NORMAL;
> > - continue;
> > + goto next;
> > }
> > sbi->gc_urgent_high_remaining--;
> > }
>
> Why not:
>
> if (!sbi->gc_urgent_high_remaining) {
> sbi->gc_urgent_high_limited = false;
> spin_unlock(&sbi->gc_urgent_high_lock);

Should not call spin_unlock, if so. Anyway, let me send v2.

> sbi->gc_mode = GC_NORMAL;
> } else {
> sbi->gc_urgent_high_remaining--;
> }
>
> Thanks,

2022-08-20 02:20:05

by Chao Yu

[permalink] [raw]
Subject: Re: [f2fs-dev] [PATCH v2] f2fs: fix wrong continue condition in GC

On 2022/8/20 7:34, Jaegeuk Kim wrote:
> We should decrease the frozen counter.
>
> Cc: [email protected]
> Fixes: 325163e9892b ("f2fs: add gc_urgent_high_remaining sysfs node")
> Signed-off-by: Jaegeuk Kim <[email protected]>

Reviewed-by: Chao Yu <[email protected]>

Thanks,