This fixes missing unlock call.
Cc: stable@vger.kernel.org Signed-off-by: Jaegeuk Kim jaegeuk@kernel.org --- 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) {
On 2018/12/18 10:15, Jaegeuk Kim wrote:
This fixes missing unlock call.
Cc: stable@vger.kernel.org Signed-off-by: Jaegeuk Kim jaegeuk@kernel.org
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,
if (err == -ENODATA) break; if (err && err != -EAGAIN) {mutex_lock(&sbi->gc_mutex);
This fixes missing unlock call.
Cc: stable@vger.kernel.org Signed-off-by: Jaegeuk Kim jaegeuk@kernel.org ---
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)
On 2018/12/19 7:22, Jaegeuk Kim wrote:
This fixes missing unlock call.
Cc: stable@vger.kernel.org Signed-off-by: Jaegeuk Kim jaegeuk@kernel.org
Looks good to me now. :)
Reviewed-by: Chao Yu yuchao0@huawei.com
Thanks,
linux-stable-mirror@lists.linaro.org