Re: [PATCH v5 5/8] xfs: XFS_ICHGTIME_CREATE is unused

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 2023-07-14 at 07:16 -0700, Darrick J. Wong wrote:
> On Fri, Jul 14, 2023 at 06:53:45AM -0400, Jeff Layton wrote:
> > On Thu, 2023-07-13 at 23:35 -0700, Darrick J. Wong wrote:
> > > On Thu, Jul 13, 2023 at 08:15:21PM -0400, Jeff Layton wrote:
> > > > On Fri, 2023-07-14 at 01:53 +0200, Anthony Iliopoulos wrote:
> > > > > On Thu, Jul 13, 2023 at 07:00:54PM -0400, Jeff Layton wrote:
> > > > > > Nothing ever sets this flag, which makes sense since the create time is
> > > > > > set at inode instantiation and is never changed. Remove it and the
> > > > > > handling of it in xfs_trans_ichgtime.
> > > > > 
> > > > > It is currently used by xfs_repair during recreating the root inode and
> > > > > the internal realtime inodes when needed (libxfs is exported to xfsprogs
> > > > > so there are userspace consumers of this code).
> > > > > 
> > > > 
> > > > Ahh thanks. I didn't think to look at userland for this. We can drop
> > > > this patch, and I'll respin #6.
> > > > 
> > > > Looking briefly at xfsprogs, it looks like XFS_ICHGTIME_CREATE is never
> > > > set without also setting XFS_ICHGTIME_CHG. Is that safe assumption?
> > > 
> > > There are four timestamps in an xfs inode and an ICHGTIME flag for each:
> > > MOD is mtime, CHG is ctime, CREATE is crtime/btime, and ACCESS is atime.
> > > I'd rather leave it that way than tie flags together.
> > > 
> > > 
> > 
> > I wasn't suggesting to tie any flags together. I just don't see any
> > scenario where it's OK to call xfs_trans_ichgtime() without
> > XFS_ICHGTIME_CHG set. It has to change if either of the other times
> > change.
> 
> Oh!  That's correct, I don't know of any place where the [bam]time get
> updated without also bumping ctime.
> 

Great! Thanks for confirming. With that, patch #6 has this delta in it
instead:

diff --git a/fs/xfs/libxfs/xfs_trans_inode.c b/fs/xfs/libxfs/xfs_trans_inode.c
index 6b2296ff248a..3ac1fcca7c52 100644
--- a/fs/xfs/libxfs/xfs_trans_inode.c
+++ b/fs/xfs/libxfs/xfs_trans_inode.c
@@ -62,12 +62,12 @@ xfs_trans_ichgtime(
        ASSERT(tp);
        ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL));
 
-       tv = current_time(inode);
+       /* If the mtime or btime change, then ctime must also change */
+       WARN_ON_ONCE(!(flags & XFS_ICHGTIME_CHG));
 
+       tv = inode_set_ctime_current(inode);
        if (flags & XFS_ICHGTIME_MOD)
                inode->i_mtime = tv;
-       if (flags & XFS_ICHGTIME_CHG)
-               inode_set_ctime_to_ts(inode, tv);
        if (flags & XFS_ICHGTIME_CREATE)
                ip->i_crtime = tv;
 }





[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux