On Fri, Jan 18, 2019 at 09:26:14AM +1100, Dave Chinner wrote: > On Mon, Dec 31, 2018 at 06:19:38PM -0800, Darrick J. Wong wrote: > > From: Darrick J. Wong <darrick.wong@xxxxxxxxxx> > > > > Move the kernel-specific parts of xfs_ialloc into a separate function in > > preparation for hoisting xfs_ialloc to libxfs. > > > > Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> > > --- > > fs/xfs/xfs_inode.c | 45 ++++++++++++++++++++++++++++++++++++--------- > > 1 file changed, 36 insertions(+), 9 deletions(-) > > > > > > diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c > > index 403eb8fa2f1f..b635d43caeed 100644 > > --- a/fs/xfs/xfs_inode.c > > +++ b/fs/xfs/xfs_inode.c > > @@ -621,6 +621,32 @@ xfs_lookup( > > return error; > > } > > > > +/* Return an exclusive ILOCK'd in-core inode. */ > > +static int > > +xfs_ialloc_iget( > > + struct xfs_mount *mp, > > + struct xfs_trans *tp, > > + xfs_ino_t ino, > > + struct xfs_inode **ipp) > > +{ > > + return xfs_iget(mp, tp, ino, XFS_IGET_CREATE, XFS_ILOCK_EXCL, ipp); > > +} > > + > > +/* Propagate platform-specific inode properties into the new child. */ > > +static void > > +xfs_ialloc_platform_init( > > + struct xfs_trans *tp, > > + const struct xfs_ialloc_args *args, > > + struct xfs_inode *ip) > > +{ > > + struct timespec64 tv; > > + > > + tv = current_time(VFS_I(ip)); > > + VFS_I(ip)->i_mtime = tv; > > + VFS_I(ip)->i_atime = tv; > > + VFS_I(ip)->i_ctime = tv; > > Doesn't set ip->i_d.di_crtime, so .... > > > @@ -755,10 +781,11 @@ 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.t_sec = 0; > > + ip->i_d.di_crtime.t_nsec = 0; > > } > > > > + xfs_ialloc_platform_init(tp, args, ip); > > This breaks create time functionality. Yikes! > Don't we have a statx() test in fstests that checks that the > create time of inodes is set correctly? Clearly not... <frown> --D > Cheers, > > Dave. > -- > Dave Chinner > david@xxxxxxxxxxxxx