On Sun, Oct 20, 2019 at 10:21:42AM +0200, Christoph Hellwig wrote: > 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@xxxxxx> > --- > fs/xfs/libxfs/xfs_inode_buf.c | 8 ++++---- > fs/xfs/libxfs/xfs_inode_buf.h | 2 +- > fs/xfs/libxfs/xfs_trans_inode.c | 6 ++---- > fs/xfs/xfs_inode.c | 3 +-- > fs/xfs/xfs_inode_item.c | 4 ++-- > fs/xfs/xfs_iops.c | 3 +-- > fs/xfs/xfs_itable.c | 4 ++-- > 7 files changed, 13 insertions(+), 17 deletions(-) > > diff --git a/fs/xfs/libxfs/xfs_inode_buf.c b/fs/xfs/libxfs/xfs_inode_buf.c > index 28ab3c5255e1..d31156718b20 100644 > --- a/fs/xfs/libxfs/xfs_inode_buf.c > +++ b/fs/xfs/libxfs/xfs_inode_buf.c > @@ -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); > diff --git a/fs/xfs/libxfs/xfs_inode_buf.h b/fs/xfs/libxfs/xfs_inode_buf.h > index ab0f84165317..c9ac69c82d21 100644 > --- a/fs/xfs/libxfs/xfs_inode_buf.h > +++ b/fs/xfs/libxfs/xfs_inode_buf.h > @@ -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 */ > }; > > /* > diff --git a/fs/xfs/libxfs/xfs_trans_inode.c b/fs/xfs/libxfs/xfs_trans_inode.c > index a9ad90926b87..b7b81c5de2de 100644 > --- a/fs/xfs/libxfs/xfs_trans_inode.c > +++ b/fs/xfs/libxfs/xfs_trans_inode.c > @@ -66,10 +66,8 @@ xfs_trans_ichgtime( I spotted a misaligned variable declaration for @tv in this function and will fold that into this patch on commit. @@ -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)); Looks ok otherwise, Reviewed-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> --D > 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; > } > > /* > diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c > index 18f4b262e61c..24efdbf534c7 100644 > --- a/fs/xfs/xfs_inode.c > +++ b/fs/xfs/xfs_inode.c > @@ -845,8 +845,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; > } > > > diff --git a/fs/xfs/xfs_inode_item.c b/fs/xfs/xfs_inode_item.c > index bb8f076805b9..a15db5d679ac 100644 > --- a/fs/xfs/xfs_inode_item.c > +++ b/fs/xfs/xfs_inode_item.c > @@ -340,8 +340,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; > diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c > index fe285d123d69..47d8cdb86e5c 100644 > --- a/fs/xfs/xfs_iops.c > +++ b/fs/xfs/xfs_iops.c > @@ -516,8 +516,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; > } > } > > diff --git a/fs/xfs/xfs_itable.c b/fs/xfs/xfs_itable.c > index 884950adbd16..11771112a634 100644 > --- a/fs/xfs/xfs_itable.c > +++ b/fs/xfs/xfs_itable.c > @@ -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; > > -- > 2.20.1 >