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
Subject: [PATCH 32/87] fs/exfat: convert to new inode {a,m}time accessors
Date: Thu, 28 Sep 2023 07:02:41 -0400 [thread overview]
Message-ID: <20230928110413.33032-31-jlayton@kernel.org> (raw)
In-Reply-To: <20230928110413.33032-1-jlayton@kernel.org>
Signed-off-by: Jeff Layton <jlayton@kernel.org>
---
fs/exfat/exfat_fs.h | 1 +
fs/exfat/file.c | 7 +++----
fs/exfat/inode.c | 31 +++++++++++++++++--------------
fs/exfat/misc.c | 8 ++++++++
fs/exfat/namei.c | 31 ++++++++++++++++---------------
fs/exfat/super.c | 4 ++--
6 files changed, 47 insertions(+), 35 deletions(-)
diff --git a/fs/exfat/exfat_fs.h b/fs/exfat/exfat_fs.h
index f55498e5c23d..f78b614f44dc 100644
--- a/fs/exfat/exfat_fs.h
+++ b/fs/exfat/exfat_fs.h
@@ -549,6 +549,7 @@ void __exfat_fs_error(struct super_block *sb, int report, const char *fmt, ...)
void exfat_get_entry_time(struct exfat_sb_info *sbi, struct timespec64 *ts,
u8 tz, __le16 time, __le16 date, u8 time_cs);
void exfat_truncate_atime(struct timespec64 *ts);
+void exfat_truncate_inode_atime(struct inode *inode);
void exfat_set_entry_time(struct exfat_sb_info *sbi, struct timespec64 *ts,
u8 *tz, __le16 *time, __le16 *date, u8 *time_cs);
u16 exfat_calc_chksum16(void *data, int len, u16 chksum, int type);
diff --git a/fs/exfat/file.c b/fs/exfat/file.c
index 32395ef686a2..30ee2c8d36a5 100644
--- a/fs/exfat/file.c
+++ b/fs/exfat/file.c
@@ -22,7 +22,7 @@ static int exfat_cont_expand(struct inode *inode, loff_t size)
if (err)
return err;
- inode->i_mtime = inode_set_ctime_current(inode);
+ inode_set_mtime_to_ts(inode, inode_set_ctime_current(inode));
mark_inode_dirty(inode);
if (!IS_SYNC(inode))
@@ -290,10 +290,9 @@ int exfat_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
}
if (attr->ia_valid & ATTR_SIZE)
- inode->i_mtime = inode_set_ctime_current(inode);
+ inode_set_mtime_to_ts(inode, inode_set_ctime_current(inode));
- setattr_copy(&nop_mnt_idmap, inode, attr);
- exfat_truncate_atime(&inode->i_atime);
+ exfat_truncate_inode_atime(inode);
if (attr->ia_valid & ATTR_SIZE) {
error = exfat_block_truncate_page(inode, attr->ia_size);
diff --git a/fs/exfat/inode.c b/fs/exfat/inode.c
index 13329baeafbc..a2185e6f0548 100644
--- a/fs/exfat/inode.c
+++ b/fs/exfat/inode.c
@@ -26,6 +26,7 @@ int __exfat_write_inode(struct inode *inode, int sync)
struct exfat_sb_info *sbi = EXFAT_SB(sb);
struct exfat_inode_info *ei = EXFAT_I(inode);
bool is_dir = (ei->type == TYPE_DIR) ? true : false;
+ struct timespec64 ts;
if (inode->i_ino == EXFAT_ROOT_INO)
return 0;
@@ -55,16 +56,18 @@ int __exfat_write_inode(struct inode *inode, int sync)
&ep->dentry.file.create_time,
&ep->dentry.file.create_date,
&ep->dentry.file.create_time_cs);
- exfat_set_entry_time(sbi, &inode->i_mtime,
- &ep->dentry.file.modify_tz,
- &ep->dentry.file.modify_time,
- &ep->dentry.file.modify_date,
- &ep->dentry.file.modify_time_cs);
- exfat_set_entry_time(sbi, &inode->i_atime,
- &ep->dentry.file.access_tz,
- &ep->dentry.file.access_time,
- &ep->dentry.file.access_date,
- NULL);
+ exfat_set_entry_time(sbi, &ts,
+ &ep->dentry.file.modify_tz,
+ &ep->dentry.file.modify_time,
+ &ep->dentry.file.modify_date,
+ &ep->dentry.file.modify_time_cs);
+ inode_set_mtime_to_ts(inode, ts);
+ exfat_set_entry_time(sbi, &ts,
+ &ep->dentry.file.access_tz,
+ &ep->dentry.file.access_time,
+ &ep->dentry.file.access_date,
+ NULL);
+ inode_set_atime_to_ts(inode, ts);
/* File size should be zero if there is no cluster allocated */
on_disk_size = i_size_read(inode);
@@ -355,7 +358,7 @@ static void exfat_write_failed(struct address_space *mapping, loff_t to)
if (to > i_size_read(inode)) {
truncate_pagecache(inode, i_size_read(inode));
- inode->i_mtime = inode_set_ctime_current(inode);
+ inode_set_mtime_to_ts(inode, inode_set_ctime_current(inode));
exfat_truncate(inode);
}
}
@@ -398,7 +401,7 @@ static int exfat_write_end(struct file *file, struct address_space *mapping,
exfat_write_failed(mapping, pos+len);
if (!(err < 0) && !(ei->attr & ATTR_ARCHIVE)) {
- inode->i_mtime = inode_set_ctime_current(inode);
+ inode_set_mtime_to_ts(inode, inode_set_ctime_current(inode));
ei->attr |= ATTR_ARCHIVE;
mark_inode_dirty(inode);
}
@@ -576,10 +579,10 @@ static int exfat_fill_inode(struct inode *inode, struct exfat_dir_entry *info)
exfat_save_attr(inode, info->attr);
inode->i_blocks = round_up(i_size_read(inode), sbi->cluster_size) >> 9;
- inode->i_mtime = info->mtime;
+ inode_set_mtime_to_ts(inode, info->mtime);
inode_set_ctime_to_ts(inode, info->mtime);
ei->i_crtime = info->crtime;
- inode->i_atime = info->atime;
+ inode_set_atime_to_ts(inode, info->atime);
return 0;
}
diff --git a/fs/exfat/misc.c b/fs/exfat/misc.c
index 2e1a1a6b1021..fa8459828046 100644
--- a/fs/exfat/misc.c
+++ b/fs/exfat/misc.c
@@ -126,6 +126,14 @@ void exfat_truncate_atime(struct timespec64 *ts)
ts->tv_nsec = 0;
}
+void exfat_truncate_inode_atime(struct inode *inode)
+{
+ struct timespec64 atime = inode_get_atime(inode);
+
+ exfat_truncate_atime(&atime);
+ inode_set_atime_to_ts(inode, atime);
+}
+
u16 exfat_calc_chksum16(void *data, int len, u16 chksum, int type)
{
int i;
diff --git a/fs/exfat/namei.c b/fs/exfat/namei.c
index 1b9f587f6cca..b92e46916dea 100644
--- a/fs/exfat/namei.c
+++ b/fs/exfat/namei.c
@@ -569,7 +569,7 @@ static int exfat_create(struct mnt_idmap *idmap, struct inode *dir,
goto unlock;
inode_inc_iversion(dir);
- dir->i_mtime = inode_set_ctime_current(dir);
+ inode_set_mtime_to_ts(dir, inode_set_ctime_current(dir));
if (IS_DIRSYNC(dir))
exfat_sync_inode(dir);
else
@@ -582,8 +582,9 @@ static int exfat_create(struct mnt_idmap *idmap, struct inode *dir,
goto unlock;
inode_inc_iversion(inode);
- inode->i_mtime = inode->i_atime = EXFAT_I(inode)->i_crtime = inode_set_ctime_current(inode);
- exfat_truncate_atime(&inode->i_atime);
+ EXFAT_I(inode)->i_crtime = simple_inode_init_ts(inode);
+ exfat_truncate_inode_atime(inode);
+
/* timestamp is already written, so mark_inode_dirty() is unneeded. */
d_instantiate(dentry, inode);
@@ -816,16 +817,16 @@ static int exfat_unlink(struct inode *dir, struct dentry *dentry)
ei->dir.dir = DIR_DELETED;
inode_inc_iversion(dir);
- dir->i_mtime = dir->i_atime = inode_set_ctime_current(dir);
- exfat_truncate_atime(&dir->i_atime);
+ simple_inode_init_ts(dir);
+ exfat_truncate_inode_atime(dir);
if (IS_DIRSYNC(dir))
exfat_sync_inode(dir);
else
mark_inode_dirty(dir);
clear_nlink(inode);
- inode->i_mtime = inode->i_atime = inode_set_ctime_current(inode);
- exfat_truncate_atime(&inode->i_atime);
+ simple_inode_init_ts(inode);
+ exfat_truncate_inode_atime(inode);
exfat_unhash_inode(inode);
exfat_d_version_set(dentry, inode_query_iversion(dir));
unlock:
@@ -851,7 +852,7 @@ static int exfat_mkdir(struct mnt_idmap *idmap, struct inode *dir,
goto unlock;
inode_inc_iversion(dir);
- dir->i_mtime = inode_set_ctime_current(dir);
+ inode_set_mtime_to_ts(dir, inode_set_ctime_current(dir));
if (IS_DIRSYNC(dir))
exfat_sync_inode(dir);
else
@@ -865,8 +866,8 @@ static int exfat_mkdir(struct mnt_idmap *idmap, struct inode *dir,
goto unlock;
inode_inc_iversion(inode);
- inode->i_mtime = inode->i_atime = EXFAT_I(inode)->i_crtime = inode_set_ctime_current(inode);
- exfat_truncate_atime(&inode->i_atime);
+ EXFAT_I(inode)->i_crtime = simple_inode_init_ts(inode);
+ exfat_truncate_inode_atime(inode);
/* timestamp is already written, so mark_inode_dirty() is unneeded. */
d_instantiate(dentry, inode);
@@ -977,8 +978,8 @@ static int exfat_rmdir(struct inode *dir, struct dentry *dentry)
ei->dir.dir = DIR_DELETED;
inode_inc_iversion(dir);
- dir->i_mtime = dir->i_atime = inode_set_ctime_current(dir);
- exfat_truncate_atime(&dir->i_atime);
+ simple_inode_init_ts(dir);
+ exfat_truncate_inode_atime(dir);
if (IS_DIRSYNC(dir))
exfat_sync_inode(dir);
else
@@ -986,8 +987,8 @@ static int exfat_rmdir(struct inode *dir, struct dentry *dentry)
drop_nlink(dir);
clear_nlink(inode);
- inode->i_mtime = inode->i_atime = inode_set_ctime_current(inode);
- exfat_truncate_atime(&inode->i_atime);
+ simple_inode_init_ts(inode);
+ exfat_truncate_inode_atime(inode);
exfat_unhash_inode(inode);
exfat_d_version_set(dentry, inode_query_iversion(dir));
unlock:
@@ -1312,7 +1313,7 @@ static int exfat_rename(struct mnt_idmap *idmap,
inode_inc_iversion(new_dir);
simple_rename_timestamp(old_dir, old_dentry, new_dir, new_dentry);
EXFAT_I(new_dir)->i_crtime = current_time(new_dir);
- exfat_truncate_atime(&new_dir->i_atime);
+ exfat_truncate_inode_atime(new_dir);
if (IS_DIRSYNC(new_dir))
exfat_sync_inode(new_dir);
else
diff --git a/fs/exfat/super.c b/fs/exfat/super.c
index 2778bd9b631e..e919a68bf4a1 100644
--- a/fs/exfat/super.c
+++ b/fs/exfat/super.c
@@ -370,8 +370,8 @@ static int exfat_read_root(struct inode *inode)
ei->i_size_ondisk = i_size_read(inode);
exfat_save_attr(inode, ATTR_SUBDIR);
- inode->i_mtime = inode->i_atime = ei->i_crtime = inode_set_ctime_current(inode);
- exfat_truncate_atime(&inode->i_atime);
+ ei->i_crtime = simple_inode_init_ts(inode);
+ exfat_truncate_inode_atime(inode);
return 0;
}
--
2.41.0
next prev parent reply other threads:[~2023-09-28 11:06 UTC|newest]
Thread overview: 112+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-28 11:02 [PATCH 00/87] fs: new accessor methods for atime and mtime Jeff Layton
2023-09-28 11:02 ` Jeff Layton
2023-09-28 11:02 ` Jeff Layton
2023-09-28 11:02 ` Jeff Layton
2023-09-28 11:02 ` [f2fs-dev] " Jeff Layton
2023-09-28 11:02 ` Jeff Layton
2023-09-28 11:02 ` [PATCH 02/87] fs: convert core infrastructure to new {a,m}time accessors Jeff Layton
2023-09-28 11:02 ` [PATCH 03/87] arch/powerpc/platforms/cell/spufs: convert to new inode " Jeff Layton
2023-09-28 11:02 ` Jeff Layton
2023-09-28 11:02 ` [PATCH 04/87] arch/s390/hypfs: " Jeff Layton
2023-09-28 11:02 ` [PATCH 05/87] drivers/android: " Jeff Layton
2023-09-28 11:02 ` [PATCH 06/87] drivers/char: " Jeff Layton
2023-09-28 11:02 ` [PATCH 07/87] drivers/infiniband/hw/qib: " Jeff Layton
2023-09-28 11:02 ` [PATCH 08/87] drivers/misc/ibmasm: " Jeff Layton
2023-09-28 11:02 ` [PATCH 09/87] drivers/misc: " Jeff Layton
2023-09-28 11:02 ` [PATCH 10/87] drivers/platform/x86: " Jeff Layton
2023-09-28 12:34 ` Hans de Goede
2023-09-28 11:02 ` [PATCH 11/87] drivers/tty: " Jeff Layton
2023-09-28 12:13 ` Greg KH
2023-09-28 12:23 ` Jeff Layton
2023-09-28 11:02 ` [PATCH 12/87] drivers/usb/core: " Jeff Layton
2023-09-28 11:02 ` [PATCH 13/87] drivers/usb/gadget/function: " Jeff Layton
2023-09-28 11:02 ` [PATCH 14/87] drivers/usb/gadget/legacy: " Jeff Layton
2023-09-28 11:02 ` [PATCH 15/87] fs/9p: " Jeff Layton
2023-09-28 11:02 ` [PATCH 16/87] fs/adfs: " Jeff Layton
2023-09-28 11:02 ` [PATCH 17/87] fs/affs: " Jeff Layton
2023-09-28 11:02 ` [PATCH 18/87] fs/afs: " Jeff Layton
2023-09-28 11:02 ` [PATCH 19/87] fs/autofs: " Jeff Layton
2023-09-28 11:02 ` [PATCH 20/87] fs/befs: " Jeff Layton
2023-09-28 11:02 ` [PATCH 21/87] fs/bfs: " Jeff Layton
2023-09-28 11:02 ` [PATCH 22/87] fs/btrfs: " Jeff Layton
2023-09-28 11:02 ` [PATCH 23/87] fs/ceph: " Jeff Layton
2023-09-28 11:02 ` [PATCH 24/87] fs/coda: " Jeff Layton
2023-09-28 11:02 ` [PATCH 25/87] fs/configfs: " Jeff Layton
2023-09-28 11:02 ` [PATCH 26/87] fs/cramfs: " Jeff Layton
2023-09-28 11:02 ` [PATCH 27/87] fs/debugfs: " Jeff Layton
2023-09-28 11:02 ` [PATCH 28/87] fs/devpts: " Jeff Layton
2023-09-28 11:02 ` [PATCH 29/87] fs/efivarfs: " Jeff Layton
2023-09-28 11:02 ` [PATCH 30/87] fs/efs: " Jeff Layton
2023-09-28 11:02 ` [PATCH 31/87] fs/erofs: " Jeff Layton
2023-09-28 11:02 ` Jeff Layton
2023-09-28 11:02 ` Jeff Layton [this message]
2023-09-28 11:02 ` [PATCH 33/87] fs/ext2: " Jeff Layton
2023-09-28 11:02 ` [PATCH 34/87] fs/ext4: " Jeff Layton
2023-09-28 11:02 ` [f2fs-dev] [PATCH 35/87] fs/f2fs: convert to new inode {a, m}time accessors Jeff Layton
2023-09-28 11:02 ` [PATCH 35/87] fs/f2fs: convert to new inode {a,m}time accessors Jeff Layton
2023-09-28 11:02 ` [PATCH 36/87] fs/fat: " Jeff Layton
2023-09-28 11:02 ` [PATCH 37/87] fs/freevxfs: " Jeff Layton
2023-09-28 11:02 ` [PATCH 38/87] fs/fuse: " Jeff Layton
2023-09-28 11:02 ` [PATCH 39/87] fs/gfs2: " Jeff Layton
2023-09-28 11:02 ` [PATCH 40/87] fs/hfs: " Jeff Layton
2023-09-28 11:02 ` [PATCH 41/87] fs/hfsplus: " Jeff Layton
2023-09-28 11:02 ` [PATCH 42/87] fs/hostfs: " Jeff Layton
2023-09-28 11:02 ` Jeff Layton
2023-09-28 11:02 ` [PATCH 43/87] fs/hpfs: " Jeff Layton
2023-09-28 11:02 ` [PATCH 44/87] fs/hugetlbfs: " Jeff Layton
2023-09-28 11:02 ` [PATCH 45/87] fs/isofs: " Jeff Layton
2023-09-28 11:02 ` [PATCH 46/87] fs/jffs2: " Jeff Layton
2023-09-28 11:02 ` Jeff Layton
2023-09-28 11:02 ` [PATCH 47/87] fs/jfs: " Jeff Layton
2023-10-03 16:33 ` [Jfs-discussion] [PATCH 47/87] fs/jfs: convert to new inode {a, m}time accessors Dave Kleikamp
2023-09-28 11:02 ` [PATCH 48/87] fs/kernfs: convert to new inode {a,m}time accessors Jeff Layton
2023-09-28 11:02 ` [PATCH 49/87] fs/minix: " Jeff Layton
2023-09-28 11:02 ` [PATCH 50/87] fs/nfs: " Jeff Layton
2023-09-28 11:03 ` [PATCH 51/87] fs/nfsd: " Jeff Layton
2023-09-28 13:56 ` Chuck Lever
2023-09-28 14:09 ` Jeff Layton
2023-09-28 14:33 ` Chuck Lever
[not found] ` <20230928110413.33032-1-jlayton-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2023-09-28 11:03 ` [PATCH 52/87] fs/nilfs2: " Jeff Layton
2023-09-28 11:03 ` Jeff Layton
2023-09-28 11:03 ` [PATCH 53/87] fs/ntfs: " Jeff Layton
2023-09-28 11:03 ` [PATCH 54/87] fs/ntfs3: " Jeff Layton
2023-09-28 11:03 ` [PATCH 55/87] fs/ocfs2: " Jeff Layton
2023-09-28 11:03 ` [PATCH 56/87] fs/omfs: " Jeff Layton
2023-09-28 11:03 ` [PATCH 57/87] fs/openpromfs: " Jeff Layton
2023-09-28 11:03 ` [PATCH 58/87] fs/orangefs: " Jeff Layton
2023-09-28 11:03 ` [PATCH 59/87] fs/overlayfs: " Jeff Layton
2023-09-28 11:03 ` [PATCH 60/87] fs/proc: " Jeff Layton
2023-09-28 11:03 ` [PATCH 61/87] fs/pstore: " Jeff Layton
2023-09-28 11:03 ` [PATCH 62/87] fs/qnx4: " Jeff Layton
2023-09-28 12:41 ` Anders Larsen
2023-09-28 11:03 ` [PATCH 63/87] fs/qnx6: " Jeff Layton
2023-09-28 11:03 ` [PATCH 64/87] fs/ramfs: " Jeff Layton
2023-09-28 11:03 ` [PATCH 65/87] fs/reiserfs: " Jeff Layton
2023-09-28 11:03 ` [PATCH 66/87] fs/romfs: " Jeff Layton
2023-09-28 11:03 ` [PATCH 67/87] fs/smb/client: " Jeff Layton
2023-09-28 11:03 ` [PATCH 68/87] fs/smb/server: " Jeff Layton
2023-09-28 11:03 ` [PATCH 69/87] fs/squashfs: " Jeff Layton
2023-09-28 11:03 ` [PATCH 70/87] fs/sysv: " Jeff Layton
2023-09-28 11:03 ` [PATCH 71/87] fs/tracefs: " Jeff Layton
2023-09-28 11:03 ` [PATCH 72/87] fs/ubifs: " Jeff Layton
2023-09-28 11:03 ` Jeff Layton
2023-09-28 11:03 ` [PATCH 73/87] fs/udf: " Jeff Layton
2023-09-28 11:03 ` [PATCH 74/87] fs/ufs: " Jeff Layton
2023-09-28 11:03 ` [PATCH 75/87] fs/vboxsf: " Jeff Layton
2023-09-28 11:03 ` [PATCH 76/87] fs/xfs: " Jeff Layton
2023-09-28 11:03 ` [PATCH 77/87] fs/zonefs: " Jeff Layton
2023-09-28 11:03 ` [PATCH 78/87] ipc: " Jeff Layton
2023-09-28 11:03 ` [PATCH 79/87] kernel/bpf: " Jeff Layton
2023-09-28 11:03 ` [PATCH 80/87] mm: " Jeff Layton
2023-09-28 11:03 ` [PATCH 81/87] net/sunrpc: " Jeff Layton
2023-09-28 11:03 ` [PATCH 82/87] security/apparmor: " Jeff Layton
2023-09-28 11:03 ` [PATCH 83/87] security/selinux: " Jeff Layton
2023-10-03 19:53 ` Paul Moore
2023-09-28 11:03 ` [PATCH 84/87] security: " Jeff Layton
2023-10-03 23:41 ` Paul Moore
2023-09-28 11:03 ` [PATCH 01/87] fs: new accessor methods for atime and mtime Jeff Layton
2023-09-28 11:03 ` Jeff Layton
2023-09-28 11:03 ` Jeff Layton
2023-09-28 11:03 ` Jeff Layton
2023-09-28 11:03 ` [f2fs-dev] " Jeff Layton
2023-09-28 11:03 ` Jeff Layton
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=20230928110413.33032-31-jlayton@kernel.org \
--to=jlayton@kernel.org \
--cc=brauner@kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.