diff options
Diffstat (limited to 'fs/xfs/xfs_bmap_util.c')
| -rw-r--r-- | fs/xfs/xfs_bmap_util.c | 6 | 
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/xfs/xfs_bmap_util.c b/fs/xfs/xfs_bmap_util.c index fbb675563208..fcefab687285 100644 --- a/fs/xfs/xfs_bmap_util.c +++ b/fs/xfs/xfs_bmap_util.c @@ -1644,6 +1644,7 @@ xfs_swap_extents(  	uint64_t		f;  	int			resblks = 0;  	unsigned int		flags = 0; +	struct timespec64	ctime;  	/*  	 * Lock the inodes against other IO, page faults and truncate to @@ -1756,8 +1757,9 @@ xfs_swap_extents(  	 * process that the file was not changed out from  	 * under it.  	 */ -	if ((sbp->bs_ctime.tv_sec != VFS_I(ip)->i_ctime.tv_sec) || -	    (sbp->bs_ctime.tv_nsec != VFS_I(ip)->i_ctime.tv_nsec) || +	ctime = inode_get_ctime(VFS_I(ip)); +	if ((sbp->bs_ctime.tv_sec != ctime.tv_sec) || +	    (sbp->bs_ctime.tv_nsec != ctime.tv_nsec) ||  	    (sbp->bs_mtime.tv_sec != VFS_I(ip)->i_mtime.tv_sec) ||  	    (sbp->bs_mtime.tv_nsec != VFS_I(ip)->i_mtime.tv_nsec)) {  		error = -EBUSY;  | 
