aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ext4
diff options
context:
space:
mode:
authorXin Yin <yinxin.x@bytedance.com>2021-12-23 11:23:37 +0800
committerTheodore Ts'o <tytso@mit.edu>2022-01-10 13:25:54 -0500
commit9725958bb75cdfa10f2ec11526fdb23e7485e8e4 (patch)
tree018b8ba7176e73152882aa4cf229a9768cbc3092 /fs/ext4
parentext4: use ext4_ext_remove_space() for fast commit replay delete range (diff)
downloadlinux-dev-9725958bb75cdfa10f2ec11526fdb23e7485e8e4.tar.xz
linux-dev-9725958bb75cdfa10f2ec11526fdb23e7485e8e4.zip
ext4: fast commit may miss tracking unwritten range during ftruncate
If use FALLOC_FL_KEEP_SIZE to alloc unwritten range at bottom, the inode->i_size will not include the unwritten range. When call ftruncate with fast commit enabled, it will miss to track the unwritten range. Change to trace the full range during ftruncate. Signed-off-by: Xin Yin <yinxin.x@bytedance.com> Reviewed-by: Harshad Shirwadkar <harshadshirwadkar@gmail.com> Link: https://lore.kernel.org/r/20211223032337.5198-3-yinxin.x@bytedance.com Signed-off-by: Theodore Ts'o <tytso@mit.edu> Cc: stable@kernel.org
Diffstat (limited to 'fs/ext4')
-rw-r--r--fs/ext4/inode.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 4895909de21b..08a90e25b78b 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -5424,8 +5424,7 @@ int ext4_setattr(struct user_namespace *mnt_userns, struct dentry *dentry,
ext4_fc_track_range(handle, inode,
(attr->ia_size > 0 ? attr->ia_size - 1 : 0) >>
inode->i_sb->s_blocksize_bits,
- (oldsize > 0 ? oldsize - 1 : 0) >>
- inode->i_sb->s_blocksize_bits);
+ EXT_MAX_BLOCKS - 1);
else
ext4_fc_track_range(
handle, inode,