public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Jeff Layton <jlayton@kernel.org>
To: Alexander Viro <viro@zeniv.linux.org.uk>,
	Christian Brauner <brauner@kernel.org>,
	linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: "Darrick J. Wong" <djwong@kernel.org>, linux-xfs@vger.kernel.org
Subject: [PATCH v2 77/89] xfs: convert to new timestamp accessors
Date: Wed,  4 Oct 2023 14:53:02 -0400	[thread overview]
Message-ID: <20231004185347.80880-75-jlayton@kernel.org> (raw)
In-Reply-To: <20231004185347.80880-1-jlayton@kernel.org>

Convert to using the new inode timestamp accessor functions.

Signed-off-by: Jeff Layton <jlayton@kernel.org>
---
 fs/xfs/libxfs/xfs_inode_buf.c   | 10 ++++++----
 fs/xfs/libxfs/xfs_rtbitmap.c    |  6 +++++-
 fs/xfs/libxfs/xfs_trans_inode.c |  2 +-
 fs/xfs/xfs_bmap_util.c          |  7 ++++---
 fs/xfs/xfs_inode.c              |  4 ++--
 fs/xfs/xfs_inode_item.c         |  4 ++--
 fs/xfs/xfs_iops.c               |  8 ++++----
 fs/xfs/xfs_itable.c             | 12 ++++++------
 fs/xfs/xfs_rtalloc.c            | 30 ++++++++++++++++--------------
 9 files changed, 46 insertions(+), 37 deletions(-)

diff --git a/fs/xfs/libxfs/xfs_inode_buf.c b/fs/xfs/libxfs/xfs_inode_buf.c
index a35781577cad..543f3748c2a3 100644
--- a/fs/xfs/libxfs/xfs_inode_buf.c
+++ b/fs/xfs/libxfs/xfs_inode_buf.c
@@ -220,8 +220,10 @@ xfs_inode_from_disk(
 	 * a time before epoch is converted to a time long after epoch
 	 * on 64 bit systems.
 	 */
-	inode->i_atime = xfs_inode_from_disk_ts(from, from->di_atime);
-	inode->i_mtime = xfs_inode_from_disk_ts(from, from->di_mtime);
+	inode_set_atime_to_ts(inode,
+			      xfs_inode_from_disk_ts(from, from->di_atime));
+	inode_set_mtime_to_ts(inode,
+			      xfs_inode_from_disk_ts(from, from->di_mtime));
 	inode_set_ctime_to_ts(inode,
 			      xfs_inode_from_disk_ts(from, from->di_ctime));
 
@@ -315,8 +317,8 @@ xfs_inode_to_disk(
 	to->di_projid_lo = cpu_to_be16(ip->i_projid & 0xffff);
 	to->di_projid_hi = cpu_to_be16(ip->i_projid >> 16);
 
-	to->di_atime = xfs_inode_to_disk_ts(ip, inode->i_atime);
-	to->di_mtime = xfs_inode_to_disk_ts(ip, inode->i_mtime);
+	to->di_atime = xfs_inode_to_disk_ts(ip, inode_get_atime(inode));
+	to->di_mtime = xfs_inode_to_disk_ts(ip, inode_get_mtime(inode));
 	to->di_ctime = xfs_inode_to_disk_ts(ip, inode_get_ctime(inode));
 	to->di_nlink = cpu_to_be32(inode->i_nlink);
 	to->di_gen = cpu_to_be32(inode->i_generation);
diff --git a/fs/xfs/libxfs/xfs_rtbitmap.c b/fs/xfs/libxfs/xfs_rtbitmap.c
index fa180ab66b73..396648acb5be 100644
--- a/fs/xfs/libxfs/xfs_rtbitmap.c
+++ b/fs/xfs/libxfs/xfs_rtbitmap.c
@@ -970,6 +970,7 @@ xfs_rtfree_extent(
 	xfs_mount_t	*mp;		/* file system mount structure */
 	xfs_fsblock_t	sb;		/* summary file block number */
 	struct xfs_buf	*sumbp = NULL;	/* summary file block buffer */
+	struct timespec64 atime;
 
 	mp = tp->t_mountp;
 
@@ -999,7 +1000,10 @@ xfs_rtfree_extent(
 	    mp->m_sb.sb_rextents) {
 		if (!(mp->m_rbmip->i_diflags & XFS_DIFLAG_NEWRTBM))
 			mp->m_rbmip->i_diflags |= XFS_DIFLAG_NEWRTBM;
-		*(uint64_t *)&VFS_I(mp->m_rbmip)->i_atime = 0;
+
+		atime = inode_get_atime(VFS_I(mp->m_rbmip));
+		*((uint64_t *)&atime) = 0;
+		inode_set_atime_to_ts(VFS_I(mp->m_rbmip), atime);
 		xfs_trans_log_inode(tp, mp->m_rbmip, XFS_ILOG_CORE);
 	}
 	return 0;
diff --git a/fs/xfs/libxfs/xfs_trans_inode.c b/fs/xfs/libxfs/xfs_trans_inode.c
index 6b2296ff248a..70e97ea6eee7 100644
--- a/fs/xfs/libxfs/xfs_trans_inode.c
+++ b/fs/xfs/libxfs/xfs_trans_inode.c
@@ -65,7 +65,7 @@ xfs_trans_ichgtime(
 	tv = current_time(inode);
 
 	if (flags & XFS_ICHGTIME_MOD)
-		inode->i_mtime = tv;
+		inode_set_mtime_to_ts(inode, tv);
 	if (flags & XFS_ICHGTIME_CHG)
 		inode_set_ctime_to_ts(inode, tv);
 	if (flags & XFS_ICHGTIME_CREATE)
diff --git a/fs/xfs/xfs_bmap_util.c b/fs/xfs/xfs_bmap_util.c
index fcefab687285..40e0a1f1f753 100644
--- a/fs/xfs/xfs_bmap_util.c
+++ b/fs/xfs/xfs_bmap_util.c
@@ -1644,7 +1644,7 @@ xfs_swap_extents(
 	uint64_t		f;
 	int			resblks = 0;
 	unsigned int		flags = 0;
-	struct timespec64	ctime;
+	struct timespec64	ctime, mtime;
 
 	/*
 	 * Lock the inodes against other IO, page faults and truncate to
@@ -1758,10 +1758,11 @@ xfs_swap_extents(
 	 * under it.
 	 */
 	ctime = inode_get_ctime(VFS_I(ip));
+	mtime = inode_get_mtime(VFS_I(ip));
 	if ((sbp->bs_ctime.tv_sec != ctime.tv_sec) ||
 	    (sbp->bs_ctime.tv_nsec != ctime.tv_nsec) ||
-	    (sbp->bs_mtime.tv_sec != VFS_I(ip)->i_mtime.tv_sec) ||
-	    (sbp->bs_mtime.tv_nsec != VFS_I(ip)->i_mtime.tv_nsec)) {
+	    (sbp->bs_mtime.tv_sec != mtime.tv_sec) ||
+	    (sbp->bs_mtime.tv_nsec != mtime.tv_nsec)) {
 		error = -EBUSY;
 		goto out_trans_cancel;
 	}
diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c
index 4d55f58d99b7..36f5cf802c07 100644
--- a/fs/xfs/xfs_inode.c
+++ b/fs/xfs/xfs_inode.c
@@ -844,8 +844,8 @@ xfs_init_new_inode(
 	ASSERT(ip->i_nblocks == 0);
 
 	tv = inode_set_ctime_current(inode);
-	inode->i_mtime = tv;
-	inode->i_atime = tv;
+	inode_set_mtime_to_ts(inode, tv);
+	inode_set_atime_to_ts(inode, tv);
 
 	ip->i_extsize = 0;
 	ip->i_diflags = 0;
diff --git a/fs/xfs/xfs_inode_item.c b/fs/xfs/xfs_inode_item.c
index 127b2410eb20..17c51804f9c6 100644
--- a/fs/xfs/xfs_inode_item.c
+++ b/fs/xfs/xfs_inode_item.c
@@ -526,8 +526,8 @@ xfs_inode_to_log_dinode(
 	to->di_projid_hi = ip->i_projid >> 16;
 
 	memset(to->di_pad3, 0, sizeof(to->di_pad3));
-	to->di_atime = xfs_inode_to_log_dinode_ts(ip, inode->i_atime);
-	to->di_mtime = xfs_inode_to_log_dinode_ts(ip, inode->i_mtime);
+	to->di_atime = xfs_inode_to_log_dinode_ts(ip, inode_get_atime(inode));
+	to->di_mtime = xfs_inode_to_log_dinode_ts(ip, inode_get_mtime(inode));
 	to->di_ctime = xfs_inode_to_log_dinode_ts(ip, inode_get_ctime(inode));
 	to->di_nlink = inode->i_nlink;
 	to->di_gen = inode->i_generation;
diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c
index 1c1e6171209d..687eff5d9e16 100644
--- a/fs/xfs/xfs_iops.c
+++ b/fs/xfs/xfs_iops.c
@@ -572,8 +572,8 @@ xfs_vn_getattr(
 	stat->uid = vfsuid_into_kuid(vfsuid);
 	stat->gid = vfsgid_into_kgid(vfsgid);
 	stat->ino = ip->i_ino;
-	stat->atime = inode->i_atime;
-	stat->mtime = inode->i_mtime;
+	stat->atime = inode_get_atime(inode);
+	stat->mtime = inode_get_mtime(inode);
 	stat->ctime = inode_get_ctime(inode);
 	stat->blocks = XFS_FSB_TO_BB(mp, ip->i_nblocks + ip->i_delayed_blks);
 
@@ -1062,9 +1062,9 @@ xfs_vn_update_time(
 		now = current_time(inode);
 
 	if (flags & S_MTIME)
-		inode->i_mtime = now;
+		inode_set_mtime_to_ts(inode, now);
 	if (flags & S_ATIME)
-		inode->i_atime = now;
+		inode_set_atime_to_ts(inode, now);
 
 	xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL);
 	xfs_trans_log_inode(tp, ip, log_flags);
diff --git a/fs/xfs/xfs_itable.c b/fs/xfs/xfs_itable.c
index f5377ba5967a..14462614fcc8 100644
--- a/fs/xfs/xfs_itable.c
+++ b/fs/xfs/xfs_itable.c
@@ -107,12 +107,12 @@ xfs_bulkstat_one_int(
 	buf->bs_size = ip->i_disk_size;
 
 	buf->bs_nlink = inode->i_nlink;
-	buf->bs_atime = inode->i_atime.tv_sec;
-	buf->bs_atime_nsec = inode->i_atime.tv_nsec;
-	buf->bs_mtime = inode->i_mtime.tv_sec;
-	buf->bs_mtime_nsec = inode->i_mtime.tv_nsec;
-	buf->bs_ctime = inode_get_ctime(inode).tv_sec;
-	buf->bs_ctime_nsec = inode_get_ctime(inode).tv_nsec;
+	buf->bs_atime = inode_get_atime_sec(inode);
+	buf->bs_atime_nsec = inode_get_atime_nsec(inode);
+	buf->bs_mtime = inode_get_mtime_sec(inode);
+	buf->bs_mtime_nsec = inode_get_mtime_nsec(inode);
+	buf->bs_ctime = inode_get_ctime_sec(inode);
+	buf->bs_ctime_nsec = inode_get_ctime_nsec(inode);
 	buf->bs_gen = inode->i_generation;
 	buf->bs_mode = inode->i_mode;
 
diff --git a/fs/xfs/xfs_rtalloc.c b/fs/xfs/xfs_rtalloc.c
index 16534e9873f6..2e1a4e5cd03d 100644
--- a/fs/xfs/xfs_rtalloc.c
+++ b/fs/xfs/xfs_rtalloc.c
@@ -1420,25 +1420,26 @@ xfs_rtunmount_inodes(
  */
 int					/* error */
 xfs_rtpick_extent(
-	xfs_mount_t	*mp,		/* file system mount point */
-	xfs_trans_t	*tp,		/* transaction pointer */
-	xfs_extlen_t	len,		/* allocation length (rtextents) */
-	xfs_rtblock_t	*pick)		/* result rt extent */
-{
-	xfs_rtblock_t	b;		/* result block */
-	int		log2;		/* log of sequence number */
-	uint64_t	resid;		/* residual after log removed */
-	uint64_t	seq;		/* sequence number of file creation */
-	uint64_t	*seqp;		/* pointer to seqno in inode */
+	xfs_mount_t		*mp,		/* file system mount point */
+	xfs_trans_t		*tp,		/* transaction pointer */
+	xfs_extlen_t		len,		/* allocation length (rtextents) */
+	xfs_rtblock_t		*pick)		/* result rt extent */
+	{
+	xfs_rtblock_t		b;		/* result block */
+	int			log2;		/* log of sequence number */
+	uint64_t		resid;		/* residual after log removed */
+	uint64_t		seq;		/* sequence number of file creation */
+	struct timespec64	ts;		/* temporary timespec64 storage */
 
 	ASSERT(xfs_isilocked(mp->m_rbmip, XFS_ILOCK_EXCL));
 
-	seqp = (uint64_t *)&VFS_I(mp->m_rbmip)->i_atime;
 	if (!(mp->m_rbmip->i_diflags & XFS_DIFLAG_NEWRTBM)) {
 		mp->m_rbmip->i_diflags |= XFS_DIFLAG_NEWRTBM;
-		*seqp = 0;
+		seq = 0;
+	} else {
+		ts = inode_get_atime(VFS_I(mp->m_rbmip));
+		seq = (uint64_t)ts.tv_sec;
 	}
-	seq = *seqp;
 	if ((log2 = xfs_highbit64(seq)) == -1)
 		b = 0;
 	else {
@@ -1450,7 +1451,8 @@ xfs_rtpick_extent(
 		if (b + len > mp->m_sb.sb_rextents)
 			b = mp->m_sb.sb_rextents - len;
 	}
-	*seqp = seq + 1;
+	ts.tv_sec = (time64_t)seq + 1;
+	inode_set_atime_to_ts(VFS_I(mp->m_rbmip), ts);
 	xfs_trans_log_inode(tp, mp->m_rbmip, XFS_ILOG_CORE);
 	*pick = b;
 	return 0;
-- 
2.41.0


  parent reply	other threads:[~2023-10-04 19:08 UTC|newest]

Thread overview: 92+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-04 18:52 [PATCH v2 00/89] fs: new accessor methods for inode atime and mtime Jeff Layton
2023-10-04 18:51 ` [PATCH v2 03/89] spufs: convert to new timestamp accessors Jeff Layton
2023-10-04 18:51   ` [PATCH v2 04/89] hypfs: " Jeff Layton
2023-10-04 18:51   ` [PATCH v2 05/89] android: " Jeff Layton
2023-10-04 18:51   ` [PATCH v2 06/89] char: " Jeff Layton
2023-10-04 18:51   ` [PATCH v2 07/89] qib: " Jeff Layton
2023-10-04 18:51   ` [PATCH v2 08/89] ibmasm: " Jeff Layton
2023-10-04 18:51   ` [PATCH v2 09/89] misc: " Jeff Layton
2023-10-04 18:51   ` [PATCH v2 10/89] x86: " Jeff Layton
2023-10-04 18:51   ` [PATCH v2 11/89] tty: " Jeff Layton
2023-10-04 18:51   ` [PATCH v2 12/89] function: " Jeff Layton
2023-10-04 18:51   ` [PATCH v2 13/89] legacy: " Jeff Layton
2023-10-04 18:51   ` [PATCH v2 14/89] usb: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 15/89] 9p: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 16/89] adfs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 17/89] affs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 18/89] afs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 19/89] autofs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 20/89] bcachefs: " Jeff Layton
2023-10-05 12:08     ` Brian Foster
2023-10-04 18:52   ` [PATCH v2 21/89] befs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 22/89] bfs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 23/89] btrfs: " Jeff Layton
2023-10-09 16:53     ` David Sterba
2023-10-04 18:52   ` [PATCH v2 24/89] ceph: " Jeff Layton
2023-10-07  1:25     ` Xiubo Li
2023-10-04 18:52   ` [PATCH v2 25/89] coda: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 26/89] configfs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 27/89] cramfs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 28/89] debugfs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 29/89] devpts: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 30/89] efivarfs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 31/89] efs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 32/89] erofs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 33/89] exfat: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 34/89] ext2: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 35/89] ext4: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 36/89] f2fs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 37/89] fat: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 38/89] freevxfs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 39/89] fuse: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 40/89] gfs2: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 41/89] hfs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 42/89] hfsplus: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 43/89] hostfs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 44/89] hpfs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 45/89] hugetlbfs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 46/89] isofs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 47/89] jffs2: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 48/89] jfs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 49/89] kernfs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 50/89] minix: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 51/89] nfs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 52/89] nfsd: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 53/89] nilfs2: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 54/89] ntfs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 55/89] ntfs3: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 56/89] ocfs2: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 57/89] omfs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 58/89] openpromfs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 59/89] orangefs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 60/89] overlayfs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 61/89] proc: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 62/89] pstore: " Jeff Layton
2023-10-04 19:07     ` Kees Cook
2023-10-04 18:52   ` [PATCH v2 63/89] qnx4: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 64/89] qnx6: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 65/89] ramfs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 66/89] reiserfs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 67/89] romfs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 68/89] client: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 69/89] server: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 70/89] squashfs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 71/89] sysv: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 72/89] tracefs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 73/89] ubifs: " Jeff Layton
2023-10-04 18:52   ` [PATCH v2 74/89] udf: " Jeff Layton
2023-10-04 18:53   ` [PATCH v2 75/89] ufs: " Jeff Layton
2023-10-04 18:53   ` [PATCH v2 76/89] vboxsf: " Jeff Layton
2023-10-04 18:53   ` Jeff Layton [this message]
2023-10-04 18:53   ` [PATCH v2 78/89] zonefs: " Jeff Layton
2023-10-04 18:53   ` [PATCH v2 79/89] linux: " Jeff Layton
2023-10-04 18:53   ` [PATCH v2 80/89] ipc: " Jeff Layton
2023-10-04 18:53   ` [PATCH v2 81/89] bpf: " Jeff Layton
2023-10-04 18:53   ` [PATCH v2 82/89] mm: " Jeff Layton
2023-10-04 18:53   ` [PATCH v2 83/89] sunrpc: " Jeff Layton
2023-10-04 18:53   ` [PATCH v2 84/89] apparmor: " Jeff Layton
2023-10-04 18:53   ` [PATCH v2 85/89] selinux: " Jeff Layton
2023-10-04 18:53   ` [PATCH v2 86/89] security: " Jeff Layton
2023-10-04 18:52 ` [PATCH v2 01/89] fs: new accessor methods for atime and mtime Jeff Layton
2023-10-04 18:52   ` [PATCH v2 02/89] fs: convert core infrastructure to new timestamp accessors Jeff Layton
2023-10-09 16:09 ` [PATCH v2 00/89] fs: new accessor methods for inode atime and mtime Christian Brauner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231004185347.80880-75-jlayton@kernel.org \
    --to=jlayton@kernel.org \
    --cc=brauner@kernel.org \
    --cc=djwong@kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-xfs@vger.kernel.org \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox