ext4: fast commit may miss tracking unwritten range during ftruncate
commit 9725958bb7 upstream.
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
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
04b5627306
commit
f26b24b4c1
1 changed files with 1 additions and 2 deletions
|
|
@ -5468,8 +5468,7 @@ int ext4_setattr(struct dentry *dentry, struct iattr *attr)
|
|||
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,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue