xfs: use a struct timespec64 for the in-core crtime
authorChristoph Hellwig <hch@lst.de>
Tue, 12 Nov 2019 16:20:42 +0000 (08:20 -0800)
committerDarrick J. Wong <darrick.wong@oracle.com>
Wed, 13 Nov 2019 19:13:45 +0000 (11:13 -0800)
struct xfs_icdinode is purely an in-memory data structure, so don't use
a log on-disk structure for it.  This simplifies the code a bit, and
also reduces our include hell slightly.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
[darrick: fix a minor indenting problem in xfs_trans_ichgtime]
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
fs/xfs/libxfs/xfs_inode_buf.c
fs/xfs/libxfs/xfs_inode_buf.h
fs/xfs/libxfs/xfs_trans_inode.c
fs/xfs/xfs_inode.c
fs/xfs/xfs_inode_item.c
fs/xfs/xfs_iops.c
fs/xfs/xfs_itable.c

index 28ab3c5..d311567 100644 (file)
@@ -256,8 +256,8 @@ xfs_inode_from_disk(
        if (to->di_version == 3) {
                inode_set_iversion_queried(inode,
                                           be64_to_cpu(from->di_changecount));
-               to->di_crtime.t_sec = be32_to_cpu(from->di_crtime.t_sec);
-               to->di_crtime.t_nsec = be32_to_cpu(from->di_crtime.t_nsec);
+               to->di_crtime.tv_sec = be32_to_cpu(from->di_crtime.t_sec);
+               to->di_crtime.tv_nsec = be32_to_cpu(from->di_crtime.t_nsec);
                to->di_flags2 = be64_to_cpu(from->di_flags2);
                to->di_cowextsize = be32_to_cpu(from->di_cowextsize);
        }
@@ -306,8 +306,8 @@ xfs_inode_to_disk(
 
        if (from->di_version == 3) {
                to->di_changecount = cpu_to_be64(inode_peek_iversion(inode));
-               to->di_crtime.t_sec = cpu_to_be32(from->di_crtime.t_sec);
-               to->di_crtime.t_nsec = cpu_to_be32(from->di_crtime.t_nsec);
+               to->di_crtime.t_sec = cpu_to_be32(from->di_crtime.tv_sec);
+               to->di_crtime.t_nsec = cpu_to_be32(from->di_crtime.tv_nsec);
                to->di_flags2 = cpu_to_be64(from->di_flags2);
                to->di_cowextsize = cpu_to_be32(from->di_cowextsize);
                to->di_ino = cpu_to_be64(ip->i_ino);
index ab0f841..c9ac69c 100644 (file)
@@ -37,7 +37,7 @@ struct xfs_icdinode {
        uint64_t        di_flags2;      /* more random flags */
        uint32_t        di_cowextsize;  /* basic cow extent size for file */
 
-       xfs_ictimestamp_t di_crtime;    /* time created */
+       struct timespec64 di_crtime;    /* time created */
 };
 
 /*
index a9ad909..2b8ccb5 100644 (file)
@@ -55,7 +55,7 @@ xfs_trans_ichgtime(
        int                     flags)
 {
        struct inode            *inode = VFS_I(ip);
-       struct timespec64 tv;
+       struct timespec64       tv;
 
        ASSERT(tp);
        ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL));
@@ -66,10 +66,8 @@ xfs_trans_ichgtime(
                inode->i_mtime = tv;
        if (flags & XFS_ICHGTIME_CHG)
                inode->i_ctime = tv;
-       if (flags & XFS_ICHGTIME_CREATE) {
-               ip->i_d.di_crtime.t_sec = (int32_t)tv.tv_sec;
-               ip->i_d.di_crtime.t_nsec = (int32_t)tv.tv_nsec;
-       }
+       if (flags & XFS_ICHGTIME_CREATE)
+               ip->i_d.di_crtime = tv;
 }
 
 /*
index a92d452..caf4f83 100644 (file)
@@ -851,8 +851,7 @@ xfs_ialloc(
                inode_set_iversion(inode, 1);
                ip->i_d.di_flags2 = 0;
                ip->i_d.di_cowextsize = 0;
-               ip->i_d.di_crtime.t_sec = (int32_t)tv.tv_sec;
-               ip->i_d.di_crtime.t_nsec = (int32_t)tv.tv_nsec;
+               ip->i_d.di_crtime = tv;
        }
 
 
index 726aa3b..a3a75db 100644 (file)
@@ -341,8 +341,8 @@ xfs_inode_to_log_dinode(
 
        if (from->di_version == 3) {
                to->di_changecount = inode_peek_iversion(inode);
-               to->di_crtime.t_sec = from->di_crtime.t_sec;
-               to->di_crtime.t_nsec = from->di_crtime.t_nsec;
+               to->di_crtime.t_sec = from->di_crtime.tv_sec;
+               to->di_crtime.t_nsec = from->di_crtime.tv_nsec;
                to->di_flags2 = from->di_flags2;
                to->di_cowextsize = from->di_cowextsize;
                to->di_ino = ip->i_ino;
index b129e07..fc766b3 100644 (file)
@@ -554,8 +554,7 @@ xfs_vn_getattr(
        if (ip->i_d.di_version == 3) {
                if (request_mask & STATX_BTIME) {
                        stat->result_mask |= STATX_BTIME;
-                       stat->btime.tv_sec = ip->i_d.di_crtime.t_sec;
-                       stat->btime.tv_nsec = ip->i_d.di_crtime.t_nsec;
+                       stat->btime = ip->i_d.di_crtime;
                }
        }
 
index 884950a..1177111 100644 (file)
@@ -97,8 +97,8 @@ xfs_bulkstat_one_int(
        buf->bs_mtime_nsec = inode->i_mtime.tv_nsec;
        buf->bs_ctime = inode->i_ctime.tv_sec;
        buf->bs_ctime_nsec = inode->i_ctime.tv_nsec;
-       buf->bs_btime = dic->di_crtime.t_sec;
-       buf->bs_btime_nsec = dic->di_crtime.t_nsec;
+       buf->bs_btime = dic->di_crtime.tv_sec;
+       buf->bs_btime_nsec = dic->di_crtime.tv_nsec;
        buf->bs_gen = inode->i_generation;
        buf->bs_mode = inode->i_mode;