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)
56755675	if  (attr -> ia_valid  &  ATTR_SIZE ) {
56765676		handle_t  * handle ;
56775677		loff_t  oldsize  =  inode -> i_size ;
5678+ 		loff_t  old_disksize ;
56785679		int  shrink  =  (attr -> ia_size  <  inode -> i_size );
56795680
56805681		if  (!(ext4_test_inode_flag (inode , EXT4_INODE_EXTENTS ))) {
@@ -5730,6 +5731,7 @@ int ext4_setattr(struct dentry *dentry, struct iattr *attr)
57305731				inode -> i_ctime  =  inode -> i_mtime ;
57315732			}
57325733			down_write (& EXT4_I (inode )-> i_data_sem );
5734+ 			old_disksize  =  EXT4_I (inode )-> i_disksize ;
57335735			EXT4_I (inode )-> i_disksize  =  attr -> ia_size ;
57345736			rc  =  ext4_mark_inode_dirty (handle , inode );
57355737			if  (!error )
@@ -5741,6 +5743,8 @@ int ext4_setattr(struct dentry *dentry, struct iattr *attr)
57415743			 */ 
57425744			if  (!error )
57435745				i_size_write (inode , attr -> ia_size );
5746+ 			else 
5747+ 				EXT4_I (inode )-> i_disksize  =  old_disksize ;
57445748			up_write (& EXT4_I (inode )-> i_data_sem );
57455749			ext4_journal_stop (handle );
57465750			if  (error )
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments