diff mbox series

f2fs: flush data when enabling checkpoint back

Message ID 20210127014434.3431893-1-jaegeuk@kernel.org
State Accepted
Commit b0ff4fe746fd028eef920ddc8c7b0361c1ede6ec
Headers show
Series f2fs: flush data when enabling checkpoint back | expand

Commit Message

Jaegeuk Kim Jan. 27, 2021, 1:44 a.m. UTC
During checkpoint=disable period, f2fs bypasses all the synchronous IOs such as
sync and fsync. So, when enabling it back, we must flush all of them in order
to keep the data persistent. Otherwise, suddern power-cut right after enabling
checkpoint will cause data loss.

Fixes: 4354994f097d ("f2fs: checkpoint disabling")
Cc: stable@vger.kernel.org
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
---
 fs/f2fs/super.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Chao Yu Jan. 28, 2021, 7:04 a.m. UTC | #1
On 2021/1/27 9:44, Jaegeuk Kim wrote:
> During checkpoint=disable period, f2fs bypasses all the synchronous IOs such as

> sync and fsync. So, when enabling it back, we must flush all of them in order

> to keep the data persistent. Otherwise, suddern power-cut right after enabling

> checkpoint will cause data loss.

> 

> Fixes: 4354994f097d ("f2fs: checkpoint disabling")

> Cc: stable@vger.kernel.org

> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>


Reviewed-by: Chao Yu <yuchao0@huawei.com>


Thanks,
diff mbox series

Patch

diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index 359cc5a2f8f5..073b51af62c8 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -1887,6 +1887,9 @@  static int f2fs_disable_checkpoint(struct f2fs_sb_info *sbi)
 
 static void f2fs_enable_checkpoint(struct f2fs_sb_info *sbi)
 {
+	/* we should flush all the data to keep data consistency */
+	sync_inodes_sb(sbi->sb);
+
 	down_write(&sbi->gc_lock);
 	f2fs_dirty_to_prefree(sbi);