In the following scenario, after executing the move_range ioctl syscall, the block size of the source file is 0, but data can still be read.
# stat test File: test Size: 6 Blocks: 8 IO Block: 4096 regular file # ./new_f2fs_io move_range test test_move_range 0 0 0 move range ret=0 # stat test File: test Size: 6 Blocks: 0 IO Block: 4096 regular file # cat test nihao Let's fix to call invalidate_mapping_pages() after __exchange_data_block() success. Fixes: 4dd6f977fc77 ("f2fs: support an ioctl to move a range of data blocks") Signed-off-by: Yangtao Li <frank...@vivo.com> --- fs/f2fs/file.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index 78aa8cff4b41..ae7752c5cd0a 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -2870,6 +2870,9 @@ static int f2fs_move_file_range(struct file *file_in, loff_t pos_in, f2fs_i_size_write(dst, dst_max_i_size); else if (dst_osize != dst->i_size) f2fs_i_size_write(dst, dst_osize); + + invalidate_mapping_pages(src->i_mapping, + pos_out, pos_in + len); } f2fs_unlock_op(sbi); -- 2.39.0 _______________________________________________ Linux-f2fs-devel mailing list Linux-f2fs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel