File tree Expand file tree Collapse file tree 1 file changed +4
-0
lines changed Expand file tree Collapse file tree 1 file changed +4
-0
lines changed Original file line number Diff line number Diff line change @@ -5675,6 +5675,7 @@ int ext4_setattr(struct dentry *dentry, struct iattr *attr)
5675
5675
if (attr -> ia_valid & ATTR_SIZE ) {
5676
5676
handle_t * handle ;
5677
5677
loff_t oldsize = inode -> i_size ;
5678
+ loff_t old_disksize ;
5678
5679
int shrink = (attr -> ia_size < inode -> i_size );
5679
5680
5680
5681
if (!(ext4_test_inode_flag (inode , EXT4_INODE_EXTENTS ))) {
@@ -5730,6 +5731,7 @@ int ext4_setattr(struct dentry *dentry, struct iattr *attr)
5730
5731
inode -> i_ctime = inode -> i_mtime ;
5731
5732
}
5732
5733
down_write (& EXT4_I (inode )-> i_data_sem );
5734
+ old_disksize = EXT4_I (inode )-> i_disksize ;
5733
5735
EXT4_I (inode )-> i_disksize = attr -> ia_size ;
5734
5736
rc = ext4_mark_inode_dirty (handle , inode );
5735
5737
if (!error )
@@ -5741,6 +5743,8 @@ int ext4_setattr(struct dentry *dentry, struct iattr *attr)
5741
5743
*/
5742
5744
if (!error )
5743
5745
i_size_write (inode , attr -> ia_size );
5746
+ else
5747
+ EXT4_I (inode )-> i_disksize = old_disksize ;
5744
5748
up_write (& EXT4_I (inode )-> i_data_sem );
5745
5749
ext4_journal_stop (handle );
5746
5750
if (error )
You can’t perform that action at this time.
0 commit comments