@@ -233,16 +233,18 @@ int ocfs2_should_update_atime(struct inode *inode,
233233
234234 if (vfsmnt -> mnt_flags & MNT_RELATIME ) {
235235 struct timespec64 ctime = inode_get_ctime (inode );
236+ struct timespec64 atime = inode_get_atime (inode );
237+ struct timespec64 mtime = inode_get_mtime (inode );
236238
237- if ((timespec64_compare (& inode -> i_atime , & inode -> i_mtime ) <= 0 ) ||
238- (timespec64_compare (& inode -> i_atime , & ctime ) <= 0 ))
239+ if ((timespec64_compare (& atime , & mtime ) <= 0 ) ||
240+ (timespec64_compare (& atime , & ctime ) <= 0 ))
239241 return 1 ;
240242
241243 return 0 ;
242244 }
243245
244246 now = current_time (inode );
245- if ((now .tv_sec - inode -> i_atime . tv_sec <= osb -> s_atime_quantum ))
247+ if ((now .tv_sec - inode_get_atime_sec ( inode ) <= osb -> s_atime_quantum ))
246248 return 0 ;
247249 else
248250 return 1 ;
@@ -275,9 +277,9 @@ int ocfs2_update_inode_atime(struct inode *inode,
275277 * have i_rwsem to guard against concurrent changes to other
276278 * inode fields.
277279 */
278- inode -> i_atime = current_time (inode );
279- di -> i_atime = cpu_to_le64 (inode -> i_atime . tv_sec );
280- di -> i_atime_nsec = cpu_to_le32 (inode -> i_atime . tv_nsec );
280+ inode_set_atime_to_ts ( inode , current_time (inode ) );
281+ di -> i_atime = cpu_to_le64 (inode_get_atime_sec ( inode ) );
282+ di -> i_atime_nsec = cpu_to_le32 (inode_get_atime_nsec ( inode ) );
281283 ocfs2_update_inode_fsync_trans (handle , inode , 0 );
282284 ocfs2_journal_dirty (handle , bh );
283285
@@ -296,7 +298,7 @@ int ocfs2_set_inode_size(handle_t *handle,
296298
297299 i_size_write (inode , new_i_size );
298300 inode -> i_blocks = ocfs2_inode_sector_count (inode );
299- inode -> i_mtime = inode_set_ctime_current (inode );
301+ inode_set_mtime_to_ts ( inode , inode_set_ctime_current (inode ) );
300302
301303 status = ocfs2_mark_inode_dirty (handle , inode , fe_bh );
302304 if (status < 0 ) {
@@ -417,12 +419,12 @@ static int ocfs2_orphan_for_truncate(struct ocfs2_super *osb,
417419 }
418420
419421 i_size_write (inode , new_i_size );
420- inode -> i_mtime = inode_set_ctime_current (inode );
422+ inode_set_mtime_to_ts ( inode , inode_set_ctime_current (inode ) );
421423
422424 di = (struct ocfs2_dinode * ) fe_bh -> b_data ;
423425 di -> i_size = cpu_to_le64 (new_i_size );
424- di -> i_ctime = di -> i_mtime = cpu_to_le64 (inode_get_ctime (inode ). tv_sec );
425- di -> i_ctime_nsec = di -> i_mtime_nsec = cpu_to_le32 (inode_get_ctime (inode ). tv_nsec );
426+ di -> i_ctime = di -> i_mtime = cpu_to_le64 (inode_get_ctime_sec (inode ));
427+ di -> i_ctime_nsec = di -> i_mtime_nsec = cpu_to_le32 (inode_get_ctime_nsec (inode ));
426428 ocfs2_update_inode_fsync_trans (handle , inode , 0 );
427429
428430 ocfs2_journal_dirty (handle , fe_bh );
@@ -821,9 +823,9 @@ static int ocfs2_write_zero_page(struct inode *inode, u64 abs_from,
821823 i_size_write (inode , abs_to );
822824 inode -> i_blocks = ocfs2_inode_sector_count (inode );
823825 di -> i_size = cpu_to_le64 ((u64 )i_size_read (inode ));
824- inode -> i_mtime = inode_set_ctime_current (inode );
825- di -> i_mtime = di -> i_ctime = cpu_to_le64 (inode -> i_mtime . tv_sec );
826- di -> i_ctime_nsec = cpu_to_le32 (inode -> i_mtime . tv_nsec );
826+ inode_set_mtime_to_ts ( inode , inode_set_ctime_current (inode ) );
827+ di -> i_mtime = di -> i_ctime = cpu_to_le64 (inode_get_mtime_sec ( inode ) );
828+ di -> i_ctime_nsec = cpu_to_le32 (inode_get_mtime_nsec ( inode ) );
827829 di -> i_mtime_nsec = di -> i_ctime_nsec ;
828830 if (handle ) {
829831 ocfs2_journal_dirty (handle , di_bh );
@@ -2042,7 +2044,7 @@ static int __ocfs2_change_file_space(struct file *file, struct inode *inode,
20422044 goto out_inode_unlock ;
20432045 }
20442046
2045- inode -> i_mtime = inode_set_ctime_current (inode );
2047+ inode_set_mtime_to_ts ( inode , inode_set_ctime_current (inode ) );
20462048 ret = ocfs2_mark_inode_dirty (handle , inode , di_bh );
20472049 if (ret < 0 )
20482050 mlog_errno (ret );
0 commit comments