@@ -240,6 +240,12 @@ static loff_t ovl_llseek(struct file *file, loff_t offset, int whence)
240240 return ret ;
241241}
242242
243+ static void ovl_file_modified (struct file * file )
244+ {
245+ /* Update size/mtime */
246+ ovl_copyattr (file_inode (file ));
247+ }
248+
243249static void ovl_file_accessed (struct file * file )
244250{
245251 struct inode * inode , * upperinode ;
@@ -290,10 +296,8 @@ static void ovl_aio_cleanup_handler(struct ovl_aio_req *aio_req)
290296 struct kiocb * orig_iocb = aio_req -> orig_iocb ;
291297
292298 if (iocb -> ki_flags & IOCB_WRITE ) {
293- struct inode * inode = file_inode (orig_iocb -> ki_filp );
294-
295299 kiocb_end_write (iocb );
296- ovl_copyattr ( inode );
300+ ovl_file_modified ( orig_iocb -> ki_filp );
297301 }
298302
299303 orig_iocb -> ki_pos = iocb -> ki_pos ;
@@ -436,7 +440,7 @@ static ssize_t ovl_write_iter(struct kiocb *iocb, struct iov_iter *iter)
436440 ret = vfs_iter_write (real .file , iter , & iocb -> ki_pos , rwf );
437441 file_end_write (real .file );
438442 /* Update size */
439- ovl_copyattr ( inode );
443+ ovl_file_modified ( file );
440444 } else {
441445 struct ovl_aio_req * aio_req ;
442446
@@ -526,7 +530,7 @@ static ssize_t ovl_splice_write(struct pipe_inode_info *pipe, struct file *out,
526530
527531 file_end_write (real .file );
528532 /* Update size */
529- ovl_copyattr ( inode );
533+ ovl_file_modified ( out );
530534 revert_creds (old_cred );
531535 fdput (real );
532536
@@ -607,7 +611,7 @@ static long ovl_fallocate(struct file *file, int mode, loff_t offset, loff_t len
607611 revert_creds (old_cred );
608612
609613 /* Update size */
610- ovl_copyattr ( inode );
614+ ovl_file_modified ( file );
611615
612616 fdput (real );
613617
@@ -691,7 +695,7 @@ static loff_t ovl_copyfile(struct file *file_in, loff_t pos_in,
691695 revert_creds (old_cred );
692696
693697 /* Update size */
694- ovl_copyattr ( inode_out );
698+ ovl_file_modified ( file_out );
695699
696700 fdput (real_in );
697701 fdput (real_out );
0 commit comments