xfs
[Top] [All Lists]

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

To: xfs@xxxxxxxxxxx
Subject: Re: [PATCH 2/2] xfs: add xfs_setattr_time
From: Brian Foster <bfoster@xxxxxxxxxx>
Date: Mon, 18 Nov 2013 08:53:17 -0500
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <20131118131052.GB21649@xxxxxxxxxxxxx>
References: <20131118131040.GA21649@xxxxxxxxxxxxx> <20131118131052.GB21649@xxxxxxxxxxxxx>
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.0
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
> 

<Prev in Thread] Current Thread [Next in Thread>