Re: [PATCH 2/2] xfs: add xfs_setattr_time

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 11/18/2013 08:10 AM, Christoph Hellwig wrote:
> Split out a xfs_setattr_time helper to share code between truncate and
> regular setattr similar to xfs_setattr_mode.  I might also have another
> caller growing for this in the near future.
> 
> Signed-off-by: Christoph Hellwig <hch@xxxxxx>
> 
> ---

Reviewed-by: Brian Foster <bfoster@xxxxxxxxxx>

>  fs/xfs/xfs_iops.c |   66 ++++++++++++++++++++++++------------------------------
>  1 file changed, 30 insertions(+), 36 deletions(-)
> 
> Index: linux/fs/xfs/xfs_iops.c
> ===================================================================
> --- linux.orig/fs/xfs/xfs_iops.c	2013-11-18 11:54:46.083792257 +0100
> +++ linux/fs/xfs/xfs_iops.c	2013-11-18 11:55:34.891791256 +0100
> @@ -474,6 +474,32 @@ xfs_setattr_mode(
>  	inode->i_mode |= mode & ~S_IFMT;
>  }
>  
> +static void
> +xfs_setattr_time(
> +	struct xfs_inode	*ip,
> +	struct iattr		*iattr)
> +{
> +	struct inode		*inode = VFS_I(ip);
> +
> +	ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL));
> +
> +	if (iattr->ia_valid & ATTR_ATIME) {
> +		inode->i_atime = iattr->ia_atime;
> +		ip->i_d.di_atime.t_sec = iattr->ia_atime.tv_sec;
> +		ip->i_d.di_atime.t_nsec = iattr->ia_atime.tv_nsec;
> +	}
> +	if (iattr->ia_valid & ATTR_CTIME) {
> +		inode->i_ctime = iattr->ia_ctime;
> +		ip->i_d.di_ctime.t_sec = iattr->ia_ctime.tv_sec;
> +		ip->i_d.di_ctime.t_nsec = iattr->ia_ctime.tv_nsec;
> +	}
> +	if (iattr->ia_valid & ATTR_MTIME) {
> +		inode->i_mtime = iattr->ia_mtime;
> +		ip->i_d.di_mtime.t_sec = iattr->ia_mtime.tv_sec;
> +		ip->i_d.di_mtime.t_nsec = iattr->ia_mtime.tv_nsec;
> +	}
> +}
> +
>  int
>  xfs_setattr_nonsize(
>  	struct xfs_inode	*ip,
> @@ -627,30 +653,10 @@ xfs_setattr_nonsize(
>  		}
>  	}
>  
> -	/*
> -	 * Change file access modes.
> -	 */
>  	if (mask & ATTR_MODE)
>  		xfs_setattr_mode(ip, iattr);
> -
> -	/*
> -	 * Change file access or modified times.
> -	 */
> -	if (mask & ATTR_ATIME) {
> -		inode->i_atime = iattr->ia_atime;
> -		ip->i_d.di_atime.t_sec = iattr->ia_atime.tv_sec;
> -		ip->i_d.di_atime.t_nsec = iattr->ia_atime.tv_nsec;
> -	}
> -	if (mask & ATTR_CTIME) {
> -		inode->i_ctime = iattr->ia_ctime;
> -		ip->i_d.di_ctime.t_sec = iattr->ia_ctime.tv_sec;
> -		ip->i_d.di_ctime.t_nsec = iattr->ia_ctime.tv_nsec;
> -	}
> -	if (mask & ATTR_MTIME) {
> -		inode->i_mtime = iattr->ia_mtime;
> -		ip->i_d.di_mtime.t_sec = iattr->ia_mtime.tv_sec;
> -		ip->i_d.di_mtime.t_nsec = iattr->ia_mtime.tv_nsec;
> -	}
> +	if (mask & (ATTR_ATIME|ATTR_CTIME|ATTR_MTIME))
> +		xfs_setattr_time(ip, iattr);
>  
>  	xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
>  
> @@ -865,22 +871,10 @@ xfs_setattr_size(
>  		xfs_inode_clear_eofblocks_tag(ip);
>  	}
>  
> -	/*
> -	 * Change file access modes.
> -	 */
>  	if (mask & ATTR_MODE)
>  		xfs_setattr_mode(ip, iattr);
> -
> -	if (mask & ATTR_CTIME) {
> -		inode->i_ctime = iattr->ia_ctime;
> -		ip->i_d.di_ctime.t_sec = iattr->ia_ctime.tv_sec;
> -		ip->i_d.di_ctime.t_nsec = iattr->ia_ctime.tv_nsec;
> -	}
> -	if (mask & ATTR_MTIME) {
> -		inode->i_mtime = iattr->ia_mtime;
> -		ip->i_d.di_mtime.t_sec = iattr->ia_mtime.tv_sec;
> -		ip->i_d.di_mtime.t_nsec = iattr->ia_mtime.tv_nsec;
> -	}
> +	if (mask & (ATTR_ATIME|ATTR_CTIME|ATTR_MTIME))
> +		xfs_setattr_time(ip, iattr);
>  
>  	xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
>  
> 
> _______________________________________________
> xfs mailing list
> xfs@xxxxxxxxxxx
> http://oss.sgi.com/mailman/listinfo/xfs
> 

_______________________________________________
xfs mailing list
xfs@xxxxxxxxxxx
http://oss.sgi.com/mailman/listinfo/xfs




[Index of Archives]     [Linux XFS Devel]     [Linux Filesystem Development]     [Filesystem Testing]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux