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
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,
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
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,
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,