]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
xfs: use xfs_trans_ichgtime to set times when allocating inode
authorDarrick J. Wong <djwong@kernel.org>
Tue, 2 Jul 2024 18:22:36 +0000 (11:22 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Tue, 2 Jul 2024 18:36:56 +0000 (11:36 -0700)
Use xfs_trans_ichgtime to set the inode times when allocating an inode,
instead of open-coding them here.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
fs/xfs/xfs_inode.c

index 4f13ad0fa14ecc54617dc13ee82bf2542c6aa164..59e76759e41ff7386a05f152b0405a87ff7205cc 100644 (file)
@@ -672,10 +672,11 @@ xfs_icreate(
        struct inode            *dir = pip ? VFS_I(pip) : NULL;
        struct xfs_mount        *mp = tp->t_mountp;
        struct xfs_inode        *ip;
+       struct inode            *inode;
        unsigned int            flags;
+       int                     times = XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG |
+                                       XFS_ICHGTIME_ACCESS;
        int                     error;
-       struct timespec64       tv;
-       struct inode            *inode;
 
        /*
         * Protect against obviously corrupt allocation btree records. Later
@@ -743,19 +744,17 @@ xfs_icreate(
        ip->i_df.if_nextents = 0;
        ASSERT(ip->i_nblocks == 0);
 
-       tv = inode_set_ctime_current(inode);
-       inode_set_mtime_to_ts(inode, tv);
-       inode_set_atime_to_ts(inode, tv);
-
        ip->i_extsize = 0;
        ip->i_diflags = 0;
 
        if (xfs_has_v3inodes(mp)) {
                inode_set_iversion(inode, 1);
                ip->i_cowextsize = 0;
-               ip->i_crtime = tv;
+               times |= XFS_ICHGTIME_CREATE;
        }
 
+       xfs_trans_ichgtime(tp, ip, times);
+
        flags = XFS_ILOG_CORE;
        switch (args->mode & S_IFMT) {
        case S_IFIFO: