@@ -73,6 +73,7 @@ libxfs_icreate(
struct xfs_inode *pip = args->pip;
struct xfs_inode *ip;
unsigned int flags;
+ int times = XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG;
int error;
error = libxfs_iget(tp->t_mountp, tp, ino, 0, &ip);
@@ -84,7 +85,6 @@ libxfs_icreate(
set_nlink(VFS_I(ip), args->nlink);
VFS_I(ip)->i_uid = args->uid;
ip->i_projid = args->prid;
- xfs_trans_ichgtime(tp, ip, XFS_ICHGTIME_CHG | XFS_ICHGTIME_MOD);
if (pip && (VFS_I(pip)->i_mode & S_ISGID)) {
if (!(args->flags & XFS_ICREATE_ARGS_FORCE_GID))
@@ -102,10 +102,12 @@ libxfs_icreate(
if (xfs_has_v3inodes(ip->i_mount)) {
VFS_I(ip)->i_version = 1;
ip->i_diflags2 = ip->i_mount->m_ino_geo.new_diflags2;
- ip->i_crtime = VFS_I(ip)->i_mtime;
ip->i_cowextsize = 0;
+ times |= XFS_ICHGTIME_CREATE;
}
+ xfs_trans_ichgtime(tp, ip, times);
+
flags = XFS_ILOG_CORE;
switch (args->mode & S_IFMT) {
case S_IFIFO: