diff options
author | Xin Yin | 2021-12-23 11:23:37 +0800 |
---|---|---|
committer | Theodore Ts'o | 2022-01-10 13:25:54 -0500 |
commit | 9725958bb75cdfa10f2ec11526fdb23e7485e8e4 (patch) | |
tree | 018b8ba7176e73152882aa4cf229a9768cbc3092 /fs/ext4/inode.c | |
parent | 0b5b5a62b945a141e64011b2f90ee7e46f14be98 (diff) |
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/inode.c')
-rw-r--r-- | fs/ext4/inode.c | 3 |
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, |