Commit 8d2d878d authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Darrick J. Wong

xfs: use a struct timespec64 for the in-core crtime

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: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
[darrick: fix a minor indenting problem in xfs_trans_ichgtime]
Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
parent d8d11fc7
...@@ -256,8 +256,8 @@ xfs_inode_from_disk( ...@@ -256,8 +256,8 @@ xfs_inode_from_disk(
if (to->di_version == 3) { if (to->di_version == 3) {
inode_set_iversion_queried(inode, inode_set_iversion_queried(inode,
be64_to_cpu(from->di_changecount)); be64_to_cpu(from->di_changecount));
to->di_crtime.t_sec = be32_to_cpu(from->di_crtime.t_sec); to->di_crtime.tv_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_nsec = be32_to_cpu(from->di_crtime.t_nsec);
to->di_flags2 = be64_to_cpu(from->di_flags2); to->di_flags2 = be64_to_cpu(from->di_flags2);
to->di_cowextsize = be32_to_cpu(from->di_cowextsize); to->di_cowextsize = be32_to_cpu(from->di_cowextsize);
} }
...@@ -306,8 +306,8 @@ xfs_inode_to_disk( ...@@ -306,8 +306,8 @@ xfs_inode_to_disk(
if (from->di_version == 3) { if (from->di_version == 3) {
to->di_changecount = cpu_to_be64(inode_peek_iversion(inode)); 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_sec = cpu_to_be32(from->di_crtime.tv_sec);
to->di_crtime.t_nsec = cpu_to_be32(from->di_crtime.t_nsec); to->di_crtime.t_nsec = cpu_to_be32(from->di_crtime.tv_nsec);
to->di_flags2 = cpu_to_be64(from->di_flags2); to->di_flags2 = cpu_to_be64(from->di_flags2);
to->di_cowextsize = cpu_to_be32(from->di_cowextsize); to->di_cowextsize = cpu_to_be32(from->di_cowextsize);
to->di_ino = cpu_to_be64(ip->i_ino); to->di_ino = cpu_to_be64(ip->i_ino);
......
...@@ -37,7 +37,7 @@ struct xfs_icdinode { ...@@ -37,7 +37,7 @@ struct xfs_icdinode {
uint64_t di_flags2; /* more random flags */ uint64_t di_flags2; /* more random flags */
uint32_t di_cowextsize; /* basic cow extent size for file */ uint32_t di_cowextsize; /* basic cow extent size for file */
xfs_ictimestamp_t di_crtime; /* time created */ struct timespec64 di_crtime; /* time created */
}; };
/* /*
......
...@@ -55,7 +55,7 @@ xfs_trans_ichgtime( ...@@ -55,7 +55,7 @@ xfs_trans_ichgtime(
int flags) int flags)
{ {
struct inode *inode = VFS_I(ip); struct inode *inode = VFS_I(ip);
struct timespec64 tv; struct timespec64 tv;
ASSERT(tp); ASSERT(tp);
ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL));
...@@ -66,10 +66,8 @@ xfs_trans_ichgtime( ...@@ -66,10 +66,8 @@ xfs_trans_ichgtime(
inode->i_mtime = tv; inode->i_mtime = tv;
if (flags & XFS_ICHGTIME_CHG) if (flags & XFS_ICHGTIME_CHG)
inode->i_ctime = tv; inode->i_ctime = tv;
if (flags & XFS_ICHGTIME_CREATE) { if (flags & XFS_ICHGTIME_CREATE)
ip->i_d.di_crtime.t_sec = (int32_t)tv.tv_sec; ip->i_d.di_crtime = tv;
ip->i_d.di_crtime.t_nsec = (int32_t)tv.tv_nsec;
}
} }
/* /*
......
...@@ -851,8 +851,7 @@ xfs_ialloc( ...@@ -851,8 +851,7 @@ xfs_ialloc(
inode_set_iversion(inode, 1); inode_set_iversion(inode, 1);
ip->i_d.di_flags2 = 0; ip->i_d.di_flags2 = 0;
ip->i_d.di_cowextsize = 0; ip->i_d.di_cowextsize = 0;
ip->i_d.di_crtime.t_sec = (int32_t)tv.tv_sec; ip->i_d.di_crtime = tv;
ip->i_d.di_crtime.t_nsec = (int32_t)tv.tv_nsec;
} }
......
...@@ -341,8 +341,8 @@ xfs_inode_to_log_dinode( ...@@ -341,8 +341,8 @@ xfs_inode_to_log_dinode(
if (from->di_version == 3) { if (from->di_version == 3) {
to->di_changecount = inode_peek_iversion(inode); to->di_changecount = inode_peek_iversion(inode);
to->di_crtime.t_sec = from->di_crtime.t_sec; to->di_crtime.t_sec = from->di_crtime.tv_sec;
to->di_crtime.t_nsec = from->di_crtime.t_nsec; to->di_crtime.t_nsec = from->di_crtime.tv_nsec;
to->di_flags2 = from->di_flags2; to->di_flags2 = from->di_flags2;
to->di_cowextsize = from->di_cowextsize; to->di_cowextsize = from->di_cowextsize;
to->di_ino = ip->i_ino; to->di_ino = ip->i_ino;
......
...@@ -554,8 +554,7 @@ xfs_vn_getattr( ...@@ -554,8 +554,7 @@ xfs_vn_getattr(
if (ip->i_d.di_version == 3) { if (ip->i_d.di_version == 3) {
if (request_mask & STATX_BTIME) { if (request_mask & STATX_BTIME) {
stat->result_mask |= STATX_BTIME; stat->result_mask |= STATX_BTIME;
stat->btime.tv_sec = ip->i_d.di_crtime.t_sec; stat->btime = ip->i_d.di_crtime;
stat->btime.tv_nsec = ip->i_d.di_crtime.t_nsec;
} }
} }
......
...@@ -97,8 +97,8 @@ xfs_bulkstat_one_int( ...@@ -97,8 +97,8 @@ xfs_bulkstat_one_int(
buf->bs_mtime_nsec = inode->i_mtime.tv_nsec; buf->bs_mtime_nsec = inode->i_mtime.tv_nsec;
buf->bs_ctime = inode->i_ctime.tv_sec; buf->bs_ctime = inode->i_ctime.tv_sec;
buf->bs_ctime_nsec = inode->i_ctime.tv_nsec; buf->bs_ctime_nsec = inode->i_ctime.tv_nsec;
buf->bs_btime = dic->di_crtime.t_sec; buf->bs_btime = dic->di_crtime.tv_sec;
buf->bs_btime_nsec = dic->di_crtime.t_nsec; buf->bs_btime_nsec = dic->di_crtime.tv_nsec;
buf->bs_gen = inode->i_generation; buf->bs_gen = inode->i_generation;
buf->bs_mode = inode->i_mode; buf->bs_mode = inode->i_mode;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment