This fixes missing unlock call.
Cc: <[email protected]>
Signed-off-by: Jaegeuk Kim <[email protected]>
---
fs/f2fs/super.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index b79677639108..2689a2cb56cc 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -1462,6 +1462,9 @@ static int f2fs_disable_checkpoint(struct f2fs_sb_info *sbi)
while (!f2fs_time_over(sbi, DISABLE_TIME)) {
err = f2fs_gc(sbi, true, false, NULL_SEGNO);
+
+ /* f2fs_gc guarantees unlock gc_mutex */
+ mutex_lock(&sbi->gc_mutex);
if (err == -ENODATA)
break;
if (err && err != -EAGAIN) {
--
2.19.0.605.g01d371f741-goog
On 2018/12/18 10:15, Jaegeuk Kim wrote:
> This fixes missing unlock call.
>
> Cc: <[email protected]>
> Signed-off-by: Jaegeuk Kim <[email protected]>
> ---
> fs/f2fs/super.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
> index b79677639108..2689a2cb56cc 100644
> --- a/fs/f2fs/super.c
> +++ b/fs/f2fs/super.c
> @@ -1462,6 +1462,9 @@ static int f2fs_disable_checkpoint(struct f2fs_sb_info *sbi)
>
> while (!f2fs_time_over(sbi, DISABLE_TIME)) {
> err = f2fs_gc(sbi, true, false, NULL_SEGNO);
> +
> + /* f2fs_gc guarantees unlock gc_mutex */
How about:
while () {
mutex_lock(&sbi->gc_mutex);
err = f2fs_gc();
if (err) {
handle error cases..
}
}
Thanks,
> + mutex_lock(&sbi->gc_mutex);
> if (err == -ENODATA)
> break;
> if (err && err != -EAGAIN) {
>
This fixes missing unlock call.
Cc: <[email protected]>
Signed-off-by: Jaegeuk Kim <[email protected]>
---
v1 -> v2:
- clean up
fs/f2fs/super.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index b79677639108..cec7ef27b389 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -1457,19 +1457,16 @@ static int f2fs_disable_checkpoint(struct f2fs_sb_info *sbi)
sbi->sb->s_flags |= SB_ACTIVE;
- mutex_lock(&sbi->gc_mutex);
f2fs_update_time(sbi, DISABLE_TIME);
while (!f2fs_time_over(sbi, DISABLE_TIME)) {
+ mutex_lock(&sbi->gc_mutex);
err = f2fs_gc(sbi, true, false, NULL_SEGNO);
if (err == -ENODATA)
break;
- if (err && err != -EAGAIN) {
- mutex_unlock(&sbi->gc_mutex);
+ if (err && err != -EAGAIN)
return err;
- }
}
- mutex_unlock(&sbi->gc_mutex);
err = sync_filesystem(sbi->sb);
if (err)
--
2.19.0.605.g01d371f741-goog
On 2018/12/19 7:22, Jaegeuk Kim wrote:
> This fixes missing unlock call.
>
> Cc: <[email protected]>
> Signed-off-by: Jaegeuk Kim <[email protected]>
Looks good to me now. :)
Reviewed-by: Chao Yu <[email protected]>
Thanks,