File tree 1 file changed +4
-0
lines changed 1 file changed +4
-0
lines changed Original file line number Diff line number Diff line change @@ -5668,6 +5668,7 @@ int ext4_setattr(struct dentry *dentry, struct iattr *attr)
5668
5668
if (attr -> ia_valid & ATTR_SIZE ) {
5669
5669
handle_t * handle ;
5670
5670
loff_t oldsize = inode -> i_size ;
5671
+ loff_t old_disksize ;
5671
5672
int shrink = (attr -> ia_size < inode -> i_size );
5672
5673
5673
5674
if (!(ext4_test_inode_flag (inode , EXT4_INODE_EXTENTS ))) {
@@ -5723,6 +5724,7 @@ int ext4_setattr(struct dentry *dentry, struct iattr *attr)
5723
5724
inode -> i_ctime = inode -> i_mtime ;
5724
5725
}
5725
5726
down_write (& EXT4_I (inode )-> i_data_sem );
5727
+ old_disksize = EXT4_I (inode )-> i_disksize ;
5726
5728
EXT4_I (inode )-> i_disksize = attr -> ia_size ;
5727
5729
rc = ext4_mark_inode_dirty (handle , inode );
5728
5730
if (!error )
@@ -5734,6 +5736,8 @@ int ext4_setattr(struct dentry *dentry, struct iattr *attr)
5734
5736
*/
5735
5737
if (!error )
5736
5738
i_size_write (inode , attr -> ia_size );
5739
+ else
5740
+ EXT4_I (inode )-> i_disksize = old_disksize ;
5737
5741
up_write (& EXT4_I (inode )-> i_data_sem );
5738
5742
ext4_journal_stop (handle );
5739
5743
if (error )
You can’t perform that action at this time.
0 commit comments