• Christoph Hellwig's avatar
    xfs: fix timestamp handling in xfs_setattr · d6d59bad
    Christoph Hellwig authored
    We currently have some rather odd code in xfs_setattr for
    updating the a/c/mtime timestamps:
    
     - first we do a non-transaction update if all three are updated
       together
     - second we implicitly update the ctime for various changes
       instead of relying on the ATTR_CTIME flag
     - third we set the timestamps to the current time instead of the
       arguments in the iattr structure in many cases.
    
    This patch makes sure we update it in a consistent way:
    
     - always transactional
     - ctime is only updated if ATTR_CTIME is set or we do a size
       update, which is a special case
     - always to the times passed in from the caller instead of the
       current time
    
    The only non-size caller of xfs_setattr that doesn't come from
    the VFS is updated to set ATTR_CTIME and pass in a valid ctime
    value.
    Reported-by: default avatarEric Blake <ebb9@byu.net>
    Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarAlex Elder <aelder@sgi.com>
    d6d59bad
xfs_vnodeops.c 77.5 KB