]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
f2fs: atomic: fix to truncate pagecache before on-disk metadata truncation
authorChao Yu <chao@kernel.org>
Wed, 7 Aug 2024 10:24:35 +0000 (18:24 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Wed, 21 Aug 2024 00:56:28 +0000 (00:56 +0000)
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>
fs/f2fs/file.c

index 73f70a7a256709b6bdcbd019914c47531fb089c0..5fb8e4242c7a9d05f6d5b21ecad65a0ffdfbadb9 100644 (file)
@@ -2195,6 +2195,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]);