| From 04f669f00a425bd7044feee837705dacae799181 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 7 Aug 2024 18:24:35 +0800 |
| Subject: f2fs: atomic: fix to truncate pagecache before on-disk metadata |
| truncation |
| |
| From: Chao Yu <chao@kernel.org> |
| |
| [ Upstream commit ebd3309aec6271c4616573b0cb83ea25e623070a ] |
| |
| We should always truncate pagecache while truncating on-disk data. |
| |
| Fixes: a46bebd502fe ("f2fs: synchronize atomic write aborts") |
| Signed-off-by: Chao Yu <chao@kernel.org> |
| Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| fs/f2fs/file.c | 4 ++++ |
| 1 file changed, 4 insertions(+) |
| |
| diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c |
| index e178e3ebde04e..5558a75f29b79 100644 |
| --- a/fs/f2fs/file.c |
| +++ b/fs/f2fs/file.c |
| @@ -2184,6 +2184,10 @@ static int f2fs_ioc_start_atomic_write(struct file *filp, bool truncate) |
| F2FS_I(fi->cow_inode)->atomic_inode = inode; |
| } else { |
| /* Reuse the already created COW inode */ |
| + f2fs_bug_on(sbi, get_dirty_pages(fi->cow_inode)); |
| + |
| + invalidate_mapping_pages(fi->cow_inode->i_mapping, 0, -1); |
| + |
| ret = f2fs_do_truncate_blocks(fi->cow_inode, 0, true); |
| if (ret) { |
| f2fs_up_write(&fi->i_gc_rwsem[WRITE]); |
| -- |
| 2.43.0 |
| |