fs: new accessor methods for inode atime and mtime
Subsystems (77)
Jeff Layton
maintainerv2 cover fs: new accessor methods for inode atime and mtime
v2:
- bugfix in mtime handling
- incorporate _sec and _nsec accessor functions (Chuck Lever)
- move i_generation to plug hole after changing timestamps (Amir Goldstein)
While working on the multigrain timestamp changes, Linus suggested adding some similar wrappers for accessing the atime and mtime that we have for the ctime. With that, we could then move to using discrete integers instead of struct timespec64 in struct inode and shrink it.
This patch implements this. Linus suggested using macros for the new accessors, but the existing ctime wrappers were static inlines and since there are only 3 different timestamps, I didn't see that trying to fiddle with macros would gain us anything (other than less verbosity in fs.h).
The second to last patch makes the conversion to discrete integers, which shaves 8 bytes off of struct inode on my x86_64 kernel. The last patch reshuffles things a little to keep the i_lock in the same cacheline as the fields it protects.
About 75% of this conversion was done with coccinelle, with the rest done by hand.
I think we probably ought to try to get everything but the last two patches into v6.7 (though we could consider those too if we're feeling lucky).
Jeff Layton (89):
fs: new accessor methods for atime and mtime
fs: convert core infrastructure to new timestamp accessors
spufs: convert to new timestamp accessors
hypfs: convert to new timestamp accessors
android: convert to new timestamp accessors
char: convert to new timestamp accessors
qib: convert to new timestamp accessors
ibmasm: convert to new timestamp accessors
misc: convert to new timestamp accessors
x86: convert to new timestamp accessors
tty: convert to new timestamp accessors
function: convert to new timestamp accessors
legacy: convert to new timestamp accessors
usb: convert to new timestamp accessors
9p: convert to new timestamp accessors
adfs: convert to new timestamp accessors
affs: convert to new timestamp accessors
afs: convert to new timestamp accessors
autofs: convert to new timestamp accessors
bcachefs: convert to new timestamp accessors
befs: convert to new timestamp accessors
bfs: convert to new timestamp accessors
btrfs: convert to new timestamp accessors
ceph: convert to new timestamp accessors
coda: convert to new timestamp accessors
configfs: convert to new timestamp accessors
cramfs: convert to new timestamp accessors
debugfs: convert to new timestamp accessors
devpts: convert to new timestamp accessors
efivarfs: convert to new timestamp accessors
efs: convert to new timestamp accessors
erofs: convert to new timestamp accessors
exfat: convert to new timestamp accessors
ext2: convert to new timestamp accessors
ext4: convert to new timestamp accessors
f2fs: convert to new timestamp accessors
fat: convert to new timestamp accessors
freevxfs: convert to new timestamp accessors
fuse: convert to new timestamp accessors
gfs2: convert to new timestamp accessors
hfs: convert to new timestamp accessors
hfsplus: convert to new timestamp accessors
hostfs: convert to new timestamp accessors
hpfs: convert to new timestamp accessors
hugetlbfs: convert to new timestamp accessors
isofs: convert to new timestamp accessors
jffs2: convert to new timestamp accessors
jfs: convert to new timestamp accessors
kernfs: convert to new timestamp accessors
minix: convert to new timestamp accessors
nfs: convert to new timestamp accessors
nfsd: convert to new timestamp accessors
nilfs2: convert to new timestamp accessors
ntfs: convert to new timestamp accessors
ntfs3: convert to new timestamp accessors
ocfs2: convert to new timestamp accessors
omfs: convert to new timestamp accessors
openpromfs: convert to new timestamp accessors
orangefs: convert to new timestamp accessors
overlayfs: convert to new timestamp accessors
proc: convert to new timestamp accessors
pstore: convert to new timestamp accessors
qnx4: convert to new timestamp accessors
qnx6: convert to new timestamp accessors
ramfs: convert to new timestamp accessors
reiserfs: convert to new timestamp accessors
romfs: convert to new timestamp accessors
client: convert to new timestamp accessors
server: convert to new timestamp accessors
squashfs: convert to new timestamp accessors
sysv: convert to new timestamp accessors
tracefs: convert to new timestamp accessors
ubifs: convert to new timestamp accessors
udf: convert to new timestamp accessors
ufs: convert to new timestamp accessors
vboxsf: convert to new timestamp accessors
xfs: convert to new timestamp accessors
zonefs: convert to new timestamp accessors
linux: convert to new timestamp accessors
ipc: convert to new timestamp accessors
bpf: convert to new timestamp accessors
mm: convert to new timestamp accessors
sunrpc: convert to new timestamp accessors
apparmor: convert to new timestamp accessors
selinux: convert to new timestamp accessors
security: convert to new timestamp accessors
fs: rename inode i_atime and i_mtime fields
fs: switch timespec64 fields in inode to discrete integers
fs: move i_generation into new hole created after timestamp conversion
arch/powerpc/platforms/cell/spufs/inode.c | 2 +- arch/s390/hypfs/inode.c | 4 +- drivers/android/binderfs.c | 8 +- drivers/char/sonypi.c | 2 +- drivers/infiniband/hw/qib/qib_fs.c | 4 +- drivers/misc/ibmasm/ibmasmfs.c | 2 +- drivers/misc/ibmvmc.c | 2 +- drivers/platform/x86/sony-laptop.c | 2 +- drivers/tty/tty_io.c | 10 +- drivers/usb/core/devio.c | 26 +++-- drivers/usb/gadget/function/f_fs.c | 4 +- drivers/usb/gadget/legacy/inode.c | 2 +- fs/9p/vfs_inode.c | 6 +- fs/9p/vfs_inode_dotl.c | 16 +-- fs/adfs/inode.c | 13 ++- fs/affs/amigaffs.c | 4 +- fs/affs/inode.c | 17 ++- fs/afs/dynroot.c | 2 +- fs/afs/inode.c | 8 +- fs/afs/write.c | 2 +- fs/attr.c | 4 +- fs/autofs/inode.c | 2 +- fs/autofs/root.c | 6 +- fs/bad_inode.c | 2 +- fs/bcachefs/fs.c | 12 +-- fs/befs/linuxvfs.c | 10 +- fs/bfs/dir.c | 9 +- fs/bfs/inode.c | 12 +-- fs/binfmt_misc.c | 2 +- fs/btrfs/delayed-inode.c | 20 ++-- fs/btrfs/file.c | 18 ++-- fs/btrfs/inode.c | 43 ++++---- fs/btrfs/reflink.c | 2 +- fs/btrfs/transaction.c | 3 +- fs/btrfs/tree-log.c | 12 +-- fs/ceph/addr.c | 10 +- fs/ceph/caps.c | 4 +- fs/ceph/file.c | 2 +- fs/ceph/inode.c | 64 ++++++------ fs/ceph/mds_client.c | 8 +- fs/ceph/snap.c | 4 +- fs/coda/coda_linux.c | 6 +- fs/coda/dir.c | 2 +- fs/coda/file.c | 2 +- fs/configfs/inode.c | 8 +- fs/cramfs/inode.c | 4 +- fs/debugfs/inode.c | 2 +- fs/devpts/inode.c | 6 +- fs/efivarfs/file.c | 2 +- fs/efivarfs/inode.c | 2 +- fs/efs/inode.c | 5 +- fs/erofs/inode.c | 3 +- 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 +- fs/ext2/dir.c | 6 +- fs/ext2/ialloc.c | 2 +- fs/ext2/inode.c | 13 ++- fs/ext2/super.c | 2 +- fs/ext4/ext4.h | 20 +++- fs/ext4/extents.c | 11 +- fs/ext4/ialloc.c | 4 +- fs/ext4/inline.c | 4 +- fs/ext4/inode.c | 19 ++-- fs/ext4/ioctl.c | 13 ++- fs/ext4/namei.c | 10 +- fs/ext4/super.c | 2 +- fs/ext4/xattr.c | 8 +- fs/f2fs/dir.c | 6 +- fs/f2fs/f2fs.h | 10 +- fs/f2fs/file.c | 14 +-- fs/f2fs/inline.c | 2 +- fs/f2fs/inode.c | 24 ++--- fs/f2fs/namei.c | 4 +- fs/f2fs/recovery.c | 8 +- fs/f2fs/super.c | 2 +- fs/fat/inode.c | 25 +++-- fs/fat/misc.c | 6 +- fs/freevxfs/vxfs_inode.c | 6 +- fs/fuse/control.c | 2 +- fs/fuse/dir.c | 10 +- fs/fuse/inode.c | 29 +++--- fs/fuse/readdir.c | 6 +- fs/gfs2/bmap.c | 10 +- fs/gfs2/dir.c | 10 +- fs/gfs2/glops.c | 11 +- fs/gfs2/inode.c | 7 +- fs/gfs2/quota.c | 2 +- fs/gfs2/super.c | 12 +-- fs/hfs/catalog.c | 8 +- fs/hfs/inode.c | 16 +-- fs/hfs/sysdep.c | 10 +- fs/hfsplus/catalog.c | 8 +- fs/hfsplus/inode.c | 22 ++-- fs/hostfs/hostfs_kern.c | 12 ++- fs/hpfs/dir.c | 12 ++- fs/hpfs/inode.c | 16 +-- fs/hpfs/namei.c | 22 ++-- fs/hpfs/super.c | 10 +- fs/hugetlbfs/inode.c | 10 +- fs/inode.c | 35 ++++--- fs/isofs/inode.c | 4 +- fs/isofs/rock.c | 18 ++-- fs/jffs2/dir.c | 35 ++++--- fs/jffs2/file.c | 4 +- fs/jffs2/fs.c | 20 ++-- fs/jffs2/os-linux.h | 4 +- fs/jfs/inode.c | 2 +- fs/jfs/jfs_imap.c | 20 ++-- fs/jfs/jfs_inode.c | 4 +- fs/jfs/namei.c | 20 ++-- fs/jfs/super.c | 2 +- fs/kernfs/inode.c | 6 +- fs/libfs.c | 41 ++++++-- fs/minix/bitmap.c | 2 +- fs/minix/dir.c | 6 +- fs/minix/inode.c | 17 ++- fs/minix/itree_common.c | 2 +- fs/nfs/callback_proc.c | 2 +- fs/nfs/fscache.h | 4 +- fs/nfs/inode.c | 30 +++--- fs/nfsd/blocklayout.c | 3 +- fs/nfsd/nfs3proc.c | 4 +- fs/nfsd/nfs4proc.c | 8 +- fs/nfsd/nfsctl.c | 2 +- fs/nfsd/vfs.c | 2 +- fs/nilfs2/dir.c | 6 +- fs/nilfs2/inode.c | 20 ++-- fs/nsfs.c | 2 +- fs/ntfs/inode.c | 25 ++--- fs/ntfs/mft.c | 2 +- fs/ntfs3/file.c | 6 +- fs/ntfs3/frecord.c | 11 +- fs/ntfs3/inode.c | 25 +++-- fs/ntfs3/namei.c | 4 +- fs/ocfs2/acl.c | 4 +- fs/ocfs2/alloc.c | 6 +- fs/ocfs2/aops.c | 6 +- fs/ocfs2/dir.c | 9 +- fs/ocfs2/dlmfs/dlmfs.c | 4 +- fs/ocfs2/dlmglue.c | 29 +++--- fs/ocfs2/file.c | 30 +++--- fs/ocfs2/inode.c | 28 ++--- fs/ocfs2/move_extents.c | 4 +- fs/ocfs2/namei.c | 16 +-- fs/ocfs2/refcounttree.c | 12 +-- fs/ocfs2/xattr.c | 4 +- fs/omfs/inode.c | 12 +-- fs/openpromfs/inode.c | 4 +- fs/orangefs/orangefs-utils.c | 16 +-- fs/overlayfs/file.c | 9 +- fs/overlayfs/inode.c | 3 +- fs/overlayfs/util.c | 4 +- fs/pipe.c | 2 +- fs/proc/base.c | 2 +- fs/proc/inode.c | 2 +- fs/proc/proc_sysctl.c | 2 +- fs/proc/self.c | 2 +- fs/proc/thread_self.c | 2 +- fs/pstore/inode.c | 5 +- fs/qnx4/inode.c | 6 +- fs/qnx6/inode.c | 6 +- fs/ramfs/inode.c | 7 +- fs/reiserfs/inode.c | 26 ++--- fs/reiserfs/namei.c | 8 +- fs/reiserfs/stree.c | 5 +- fs/reiserfs/super.c | 2 +- fs/romfs/super.c | 3 +- fs/smb/client/file.c | 18 ++-- fs/smb/client/fscache.h | 6 +- fs/smb/client/inode.c | 17 ++- fs/smb/client/smb2ops.c | 6 +- fs/smb/server/smb2pdu.c | 8 +- fs/squashfs/inode.c | 6 +- fs/stack.c | 4 +- fs/stat.c | 4 +- fs/sysv/dir.c | 6 +- fs/sysv/ialloc.c | 2 +- fs/sysv/inode.c | 12 +-- fs/sysv/itree.c | 2 +- fs/tracefs/inode.c | 2 +- fs/ubifs/debug.c | 12 +-- fs/ubifs/dir.c | 23 +++-- fs/ubifs/file.c | 16 +-- fs/ubifs/journal.c | 12 +-- fs/ubifs/super.c | 8 +- fs/udf/ialloc.c | 4 +- fs/udf/inode.c | 38 ++++--- fs/udf/namei.c | 16 +-- fs/ufs/dir.c | 6 +- fs/ufs/ialloc.c | 2 +- fs/ufs/inode.c | 42 ++++---- fs/vboxsf/utils.c | 15 +-- 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 +++--- fs/zonefs/super.c | 10 +- include/linux/fs.h | 120 +++++++++++++++++----- include/linux/fs_stack.h | 6 +- ipc/mqueue.c | 19 ++-- kernel/bpf/inode.c | 5 +- mm/shmem.c | 20 ++-- net/sunrpc/rpc_pipe.c | 2 +- security/apparmor/apparmorfs.c | 7 +- security/apparmor/policy_unpack.c | 4 +- security/inode.c | 2 +- security/selinux/selinuxfs.c | 2 +- 216 files changed, 1220 insertions(+), 1000 deletions(-)
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 1/89 fs: new accessor methods for atime and mtime
Recently, we converted the ctime accesses in the kernel to use new accessor functions. Linus recently pointed out though that if we add accessors for the atime and mtime, then that would allow us to seamlessly change how these timestamps are stored in the inode.
Add new accessor functions for the atime and mtime that mirror the accessors for the ctime.
--- fs/libfs.c | 41 ++++++++++++++++------ include/linux/fs.h | 85 +++++++++++++++++++++++++++++++++++++++------- 2 files changed, 102 insertions(+), 24 deletions(-)
fs/libfs.c +30 -11
@@ -541,7 +541,8 @@ void simple_recursive_removal(struct dentry *dentry,dput (victim);// unpin it }if (victim == dentry) { - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode, +inode_set_ctime_current (inode));if (d_is_dir (dentry))drop_nlink (inode);inode_unlock (inode);
@@ -582,7 +583,7 @@ static int pseudo_fs_fill_super(struct super_block *s, struct fs_context *fc)*/ root->i_ino =1 ; root->i_mode =S_IFDIR |S_IRUSR |S_IWUSR ; - root->i_atime = root->i_mtime =inode_set_ctime_current (root); +simple_inode_init_ts (root); s->s_root =d_make_root (root);if (!s->s_root)return -ENOMEM ;
@@ -638,8 +639,8 @@ int simple_link(struct dentry *old_dentry, struct inode *dir, struct dentry *den {struct inode *inode =d_inode (old_dentry); - dir->i_mtime =inode_set_ctime_to_ts (dir, -inode_set_ctime_current (inode)); +inode_set_mtime_to_ts (dir, +inode_set_ctime_to_ts (dir,inode_set_ctime_current (inode)));inc_nlink (inode);ihold (inode);dget (dentry);
@@ -673,8 +674,8 @@ int simple_unlink(struct inode *dir, struct dentry *dentry) {struct inode *inode =d_inode (dentry); - dir->i_mtime =inode_set_ctime_to_ts (dir, -inode_set_ctime_current (inode)); +inode_set_mtime_to_ts (dir, +inode_set_ctime_to_ts (dir,inode_set_ctime_current (inode)));drop_nlink (inode);dput (dentry);return 0 ;
@@ -709,9 +710,10 @@ void simple_rename_timestamp(struct inode *old_dir, struct dentry *old_dentry, {struct inode *newino =d_inode (new_dentry); - old_dir->i_mtime =inode_set_ctime_current (old_dir); +inode_set_mtime_to_ts (old_dir,inode_set_ctime_current (old_dir));if (new_dir != old_dir) - new_dir->i_mtime =inode_set_ctime_current (new_dir); +inode_set_mtime_to_ts (new_dir, +inode_set_ctime_current (new_dir));inode_set_ctime_current (d_inode (old_dentry));if (newino)inode_set_ctime_current (newino);
@@ -926,7 +928,7 @@ int simple_fill_super(struct super_block *s, unsigned long magic,*/ inode->i_ino =1 ; inode->i_mode =S_IFDIR |0755 ; - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); inode->i_op = &simple_dir_inode_operations; inode->i_fop = &simple_dir_operations;set_nlink (inode,2 );
@@ -952,7 +954,7 @@ int simple_fill_super(struct super_block *s, unsigned long magic, goto out; } inode->i_mode =S_IFREG | files->mode; - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); inode->i_fop = files->ops; inode->i_ino = i;d_add (dentry, inode);
@@ -1520,7 +1522,7 @@ struct inode *alloc_anon_inode(struct super_block *s) inode->i_uid =current_fsuid (); inode->i_gid =current_fsgid (); inode->i_flags |=S_PRIVATE ; - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode);return inode; }EXPORT_SYMBOL (alloc_anon_inode);
@@ -1912,3 +1914,20 @@ ssize_t direct_write_fallback(struct kiocb *iocb, struct iov_iter *iter,return direct_written + buffered_written; }EXPORT_SYMBOL_GPL (direct_write_fallback); + +/** +* simple_inode_init_ts - initialize the timestamps for a new inode +* @inode: inode to be initialized +* +* When a new inode is created, most filesystems set the timestamps to the +* current time. Add a helper to do this. +*/ +struct timespec64 simple_inode_init_ts (struct inode *inode) +{ +struct timespec64 ts =inode_set_ctime_current (inode); + +inode_set_atime_to_ts (inode, ts); +inode_set_mtime_to_ts (inode, ts); +return ts; +} +EXPORT_SYMBOL (simple_inode_init_ts);
include/linux/fs.h +72 -13
102 lines not on this page · raw message
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 2/89 fs: convert core infrastructure to new timestamp accessors
Convert the core vfs code to use the new timestamp accessor functions.
--- fs/attr.c | 4 ++-- fs/bad_inode.c | 2 +- fs/binfmt_misc.c | 2 +- fs/inode.c | 35 +++++++++++++++++++++-------------- fs/nsfs.c | 2 +- fs/pipe.c | 2 +- fs/stack.c | 4 ++-- fs/stat.c | 4 ++-- 8 files changed, 31 insertions(+), 24 deletions(-)
fs/attr.c +2 -2
@@ -308,9 +308,9 @@ void setattr_copy(struct mnt_idmap *idmap, struct inode *inode,i_uid_update (idmap, attr, inode);i_gid_update (idmap, attr, inode);if (ia_valid &ATTR_ATIME ) - inode->i_atime = attr->ia_atime; +inode_set_atime_to_ts (inode, attr->ia_atime);if (ia_valid &ATTR_MTIME ) - inode->i_mtime = attr->ia_mtime; +inode_set_mtime_to_ts (inode, attr->ia_mtime);if (ia_valid &ATTR_CTIME )inode_set_ctime_to_ts (inode, attr->ia_ctime);if (ia_valid &ATTR_MODE ) {
fs/bad_inode.c +1 -1
@@ -208,7 +208,7 @@ void make_bad_inode(struct inode *inode)remove_inode_hash (inode); inode->i_mode =S_IFREG ; - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); inode->i_op = &bad_inode_ops; inode->i_opflags &= ~IOP_XATTR ; inode->i_fop = &bad_file_ops;
fs/binfmt_misc.c +1 -1
@@ -547,7 +547,7 @@ static struct inode *bm_get_inode(struct super_block *sb, int mode)if (inode) { inode->i_ino =get_next_ino (); inode->i_mode = mode; - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); }return inode; }
fs/inode.c +21 -14
@@ -1837,27 +1837,29 @@ EXPORT_SYMBOL(bmap);static int relatime_need_update (struct vfsmount *mnt,struct inode *inode,struct timespec64 now) { -struct timespec64 ctime; +struct timespec64 atime, mtime, ctime;if (!(mnt->mnt_flags &MNT_RELATIME ))return 1 ;/* * Is mtime younger than or equal to atime? If yes, update atime: */ -if (timespec64_compare (&inode->i_mtime, &inode->i_atime) >=0 ) + atime =inode_get_atime (inode); + mtime =inode_get_mtime (inode); +if (timespec64_compare (&mtime, &atime) >=0 )return 1 ;/* * Is ctime younger than or equal to atime? If yes, update atime: */ ctime =inode_get_ctime (inode); -if (timespec64_compare (&ctime, &inode->i_atime) >=0 ) +if (timespec64_compare (&ctime, &atime) >=0 )return 1 ;/* * Is the previous atime value older than a day? If yes, * update atime: */ -if ((long )(now.tv_sec - inode->i_atime.tv_sec) >=24 *60 *60 ) +if ((long )(now.tv_sec - atime.tv_sec) >=24 *60 *60 )return 1 ;/* * Good, we can skip the atime update:
@@ -1888,12 +1890,13 @@ int inode_update_timestamps(struct inode *inode, int flags)if (flags & (S_MTIME |S_CTIME |S_VERSION )) {struct timespec64 ctime =inode_get_ctime (inode); +struct timespec64 mtime =inode_get_mtime (inode); now =inode_set_ctime_current (inode);if (!timespec64_equal (&now, &ctime)) updated |=S_CTIME ; -if (!timespec64_equal (&now, &inode->i_mtime)) { - inode->i_mtime = now; +if (!timespec64_equal (&now, &mtime)) { +inode_set_mtime_to_ts (inode, now); updated |=S_MTIME ; }if (IS_I_VERSION (inode) &&inode_maybe_inc_iversion (inode, updated))
@@ -1903,8 +1906,10 @@ int inode_update_timestamps(struct inode *inode, int flags) }if (flags &S_ATIME ) { -if (!timespec64_equal (&now, &inode->i_atime)) { - inode->i_atime = now; +struct timespec64 atime =inode_get_atime (inode); + +if (!timespec64_equal (&now, &atime)) { +inode_set_atime_to_ts (inode, now); updated |=S_ATIME ; } }
@@ -1963,7 +1968,7 @@ EXPORT_SYMBOL(inode_update_time);bool atime_needs_update (const struct path *path,struct inode *inode) {struct vfsmount *mnt = path->mnt; -struct timespec64 now; +struct timespec64 now, atime;if (inode->i_flags &S_NOATIME )return false;
@@ -1989,7 +1994,8 @@ bool atime_needs_update(const struct path *path, struct inode *inode)if (!relatime_need_update (mnt, inode, now))return false; -if (timespec64_equal (&inode->i_atime, &now)) + atime =inode_get_atime (inode); +if (timespec64_equal (&atime, &now))return false;return true;
@@ -2106,17 +2112,18 @@ static int inode_needs_update_time(struct inode *inode) {int sync_it =0 ;struct timespec64 now =current_time (inode); -struct timespec64 ctime; +struct timespec64 ts;/* First try to exhaust all avenues to not sync */ if (IS_NOCMTIME (inode))return 0 ; -if (!timespec64_equal (&inode->i_mtime, &now)) + ts =inode_get_mtime (inode); +if (!timespec64_equal (&ts, &now)) sync_it =S_MTIME ; - ctime =inode_get_ctime (inode); -if (!timespec64_equal (&ctime, &now)) + ts =inode_get_ctime (inode); +if (!timespec64_equal (&ts, &now)) sync_it |=S_CTIME ;if (IS_I_VERSION (inode) &&inode_iversion_need_inc (inode))
fs/nsfs.c +1 -1
@@ -84,7 +84,7 @@ static int __ns_get_path(struct path *path, struct ns_common *ns)return -ENOMEM ; } inode->i_ino = ns->inum; - inode->i_mtime = inode->i_atime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); inode->i_flags |=S_IMMUTABLE ; inode->i_mode =S_IFREG |S_IRUGO ; inode->i_fop = &ns_file_operations;
fs/pipe.c +1 -1
@@ -908,7 +908,7 @@ static struct inode * get_pipe_inode(void) inode->i_mode =S_IFIFO |S_IRUSR |S_IWUSR ; inode->i_uid =current_fsuid (); inode->i_gid =current_fsgid (); - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode);return inode;
fs/stack.c +2 -2
@@ -66,8 +66,8 @@ void fsstack_copy_attr_all(struct inode *dest, const struct inode *src) dest->i_uid = src->i_uid; dest->i_gid = src->i_gid; dest->i_rdev = src->i_rdev; - dest->i_atime = src->i_atime; - dest->i_mtime = src->i_mtime; +inode_set_atime_to_ts (dest,inode_get_atime (src)); +inode_set_mtime_to_ts (dest,inode_get_mtime (src));inode_set_ctime_to_ts (dest,inode_get_ctime (src)); dest->i_blkbits = src->i_blkbits; dest->i_flags = src->i_flags;
fs/stat.c +2 -2
@@ -57,8 +57,8 @@ void generic_fillattr(struct mnt_idmap *idmap, u32 request_mask, stat->gid =vfsgid_into_kgid (vfsgid); stat->rdev = inode->i_rdev; stat->size =i_size_read (inode); - 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->blksize =i_blocksize (inode); stat->blocks = inode->i_blocks;
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 3/89 spufs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- arch/powerpc/platforms/cell/spufs/inode.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/powerpc/platforms/cell/spufs/inode.c +1 -1
@@ -86,7 +86,7 @@ spufs_new_inode(struct super_block *sb, umode_t mode) inode->i_mode = mode; inode->i_uid =current_fsuid (); inode->i_gid =current_fsgid (); - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); out:return inode; }
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 4/89 hypfs: convert to new timestamp accessors
Convert to using the new inode timestamp accessor functions.
--- arch/s390/hypfs/inode.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
arch/s390/hypfs/inode.c +2 -2
@@ -53,7 +53,7 @@ static void hypfs_update_update(struct super_block *sb)struct inode *inode =d_inode (sb_info->update_file); sb_info->last_update =ktime_get_seconds (); - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); }/* directory tree removal functions */
@@ -101,7 +101,7 @@ static struct inode *hypfs_make_inode(struct super_block *sb, umode_t mode) ret->i_mode = mode; ret->i_uid = hypfs_info->uid; ret->i_gid = hypfs_info->gid; - ret->i_atime = ret->i_mtime =inode_set_ctime_current (ret); +simple_inode_init_ts (ret);if (S_ISDIR (mode))set_nlink (ret,2 ); }
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 5/89 android: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- drivers/android/binderfs.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
drivers/android/binderfs.c +4 -4
@@ -152,7 +152,7 @@ static int binderfs_binder_device_create(struct inode *ref_inode, goto err; inode->i_ino = minor +INODE_OFFSET ; - inode->i_mtime = inode->i_atime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode);init_special_inode (inode,S_IFCHR |0600 ,MKDEV (MAJOR (binderfs_dev), minor)); inode->i_fop = &binder_fops;
@@ -431,7 +431,7 @@ static int binderfs_binder_ctl_create(struct super_block *sb) } inode->i_ino =SECOND_INODE ; - inode->i_mtime = inode->i_atime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode);init_special_inode (inode,S_IFCHR |0600 ,MKDEV (MAJOR (binderfs_dev), minor)); inode->i_fop = &binder_ctl_fops;
@@ -473,7 +473,7 @@ static struct inode *binderfs_make_inode(struct super_block *sb, int mode)if (ret) { ret->i_ino =iunique (sb,BINDERFS_MAX_MINOR +INODE_OFFSET ); ret->i_mode = mode; - ret->i_atime = ret->i_mtime =inode_set_ctime_current (ret); +simple_inode_init_ts (ret); }return ret; }
@@ -702,7 +702,7 @@ static int binderfs_fill_super(struct super_block *sb, struct fs_context *fc) inode->i_ino =FIRST_INODE ; inode->i_fop = &simple_dir_operations; inode->i_mode =S_IFDIR |0755 ; - inode->i_mtime = inode->i_atime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); inode->i_op = &binderfs_dir_inode_operations;set_nlink (inode,2 );
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 6/89 char: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- drivers/char/sonypi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/char/sonypi.c +1 -1
@@ -920,7 +920,7 @@ static ssize_t sonypi_misc_read(struct file *file, char __user *buf,if (ret >0 ) {struct inode *inode =file_inode (file); - inode->i_atime =current_time (inode); +inode_set_atime_to_ts (inode,current_time (inode)); }return ret;
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 7/89 qib: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- drivers/infiniband/hw/qib/qib_fs.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/infiniband/hw/qib/qib_fs.c +2 -2
@@ -64,8 +64,8 @@ static int qibfs_mknod(struct inode *dir, struct dentry *dentry, inode->i_uid =GLOBAL_ROOT_UID ; inode->i_gid =GLOBAL_ROOT_GID ; inode->i_blocks =0 ; - inode->i_atime =inode_set_ctime_current (inode); - inode->i_mtime = inode->i_atime; +simple_inode_init_ts (inode); + inode->i_private = data;if (S_ISDIR (mode)) { inode->i_op = &simple_dir_inode_operations;
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 8/89 ibmasm: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- drivers/misc/ibmasm/ibmasmfs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/misc/ibmasm/ibmasmfs.c +1 -1
@@ -139,7 +139,7 @@ static struct inode *ibmasmfs_make_inode(struct super_block *sb, int mode)if (ret) { ret->i_ino =get_next_ino (); ret->i_mode = mode; - ret->i_atime = ret->i_mtime =inode_set_ctime_current (ret); +simple_inode_init_ts (ret); }return ret; }
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 9/89 misc: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- drivers/misc/ibmvmc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/misc/ibmvmc.c +1 -1
@@ -1124,7 +1124,7 @@ static ssize_t ibmvmc_write(struct file *file, const char *buffer, goto out; inode =file_inode (file); - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode));mark_inode_dirty (inode); dev_dbg(adapter->dev, "write: file = 0x%lx, count = 0x%lx\n",
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 10/89 x86: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- drivers/platform/x86/sony-laptop.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/platform/x86/sony-laptop.c +1 -1
@@ -4092,7 +4092,7 @@ static ssize_t sonypi_misc_read(struct file *file, char __user *buf,if (ret >0 ) {struct inode *inode =file_inode (file); - inode->i_atime =current_time (inode); +inode_set_atime_to_ts (inode,current_time (inode)); }return ret;
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 11/89 tty: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- drivers/tty/tty_io.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)
drivers/tty/tty_io.c +7 -3
@@ -818,7 +818,7 @@ static void tty_update_time(struct tty_struct *tty, bool mtime)spin_lock (&tty->files_lock);list_for_each_entry (priv, &tty->tty_files, list) {struct inode *inode =file_inode (priv->file); -struct timespec64 *time = mtime ? &inode->i_mtime : &inode->i_atime; +struct timespec64 time = mtime ?inode_get_mtime (inode) :inode_get_atime (inode);/* * We only care if the two values differ in anything other than the
@@ -826,8 +826,12 @@ static void tty_update_time(struct tty_struct *tty, bool mtime)* the time of the tty device, otherwise it could be construded as a * security leak to let userspace know the exact timing of the tty. */ -if ((sec ^ time->tv_sec) & ~7 ) - time->tv_sec = sec; +if ((sec ^ time.tv_sec) & ~7 ) { +if (mtime) +inode_set_mtime (inode, sec,0 ); +else +inode_set_atime (inode, sec,0 ); + } }spin_unlock (&tty->files_lock); }
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 12/89 function: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- drivers/usb/gadget/function/f_fs.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/usb/gadget/function/f_fs.c +2 -2
@@ -1383,8 +1383,8 @@ ffs_sb_make_inode(struct super_block *sb, void *data, inode->i_mode = perms->mode; inode->i_uid = perms->uid; inode->i_gid = perms->gid; - inode->i_atime = ts; - inode->i_mtime = ts; +inode_set_atime_to_ts (inode, ts); +inode_set_mtime_to_ts (inode, ts); inode->i_private = data;if (fops) inode->i_fop = fops;
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 13/89 legacy: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- drivers/usb/gadget/legacy/inode.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/usb/gadget/legacy/inode.c +1 -1
@@ -1969,7 +1969,7 @@ gadgetfs_make_inode (struct super_block *sb, inode->i_mode = mode; inode->i_uid =make_kuid (&init_user_ns, default_uid); inode->i_gid =make_kgid (&init_user_ns, default_gid); - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); inode->i_private = data; inode->i_fop = fops; }
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 14/89 usb: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- drivers/usb/core/devio.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-)
drivers/usb/core/devio.c +17 -9
@@ -2642,21 +2642,24 @@ static long usbdev_do_ioctl(struct file *file, unsigned int cmd,snoop (&dev->dev,"%s: CONTROL\n" , __func__); ret =proc_control (ps, p);if (ret >=0 ) - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode, +inode_set_ctime_current (inode));break ;case USBDEVFS_BULK :snoop (&dev->dev,"%s: BULK\n" , __func__); ret =proc_bulk (ps, p);if (ret >=0 ) - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode, +inode_set_ctime_current (inode));break ;case USBDEVFS_RESETEP :snoop (&dev->dev,"%s: RESETEP\n" , __func__); ret =proc_resetep (ps, p);if (ret >=0 ) - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode, +inode_set_ctime_current (inode));break ;case USBDEVFS_RESET :
@@ -2668,7 +2671,8 @@ static long usbdev_do_ioctl(struct file *file, unsigned int cmd,snoop (&dev->dev,"%s: CLEAR_HALT\n" , __func__); ret =proc_clearhalt (ps, p);if (ret >=0 ) - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode, +inode_set_ctime_current (inode));break ;case USBDEVFS_GETDRIVER :
@@ -2695,7 +2699,8 @@ static long usbdev_do_ioctl(struct file *file, unsigned int cmd,snoop (&dev->dev,"%s: SUBMITURB\n" , __func__); ret =proc_submiturb (ps, p);if (ret >=0 ) - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode, +inode_set_ctime_current (inode));break ;#ifdef CONFIG_COMPAT
@@ -2703,14 +2708,16 @@ static long usbdev_do_ioctl(struct file *file, unsigned int cmd,snoop (&dev->dev,"%s: CONTROL32\n" , __func__); ret =proc_control_compat (ps, p);if (ret >=0 ) - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode, +inode_set_ctime_current (inode));break ;case USBDEVFS_BULK32 :snoop (&dev->dev,"%s: BULK32\n" , __func__); ret =proc_bulk_compat (ps, p);if (ret >=0 ) - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode, +inode_set_ctime_current (inode));break ;case USBDEVFS_DISCSIGNAL32 :
@@ -2722,7 +2729,8 @@ static long usbdev_do_ioctl(struct file *file, unsigned int cmd,snoop (&dev->dev,"%s: SUBMITURB32\n" , __func__); ret =proc_submiturb_compat (ps, p);if (ret >=0 ) - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode, +inode_set_ctime_current (inode));break ;case USBDEVFS_IOCTL32 :
@@ -2804,7 +2812,7 @@ static long usbdev_do_ioctl(struct file *file, unsigned int cmd, done:usb_unlock_device (dev);if (ret >=0 ) - inode->i_atime =current_time (inode); +inode_set_atime_to_ts (inode,current_time (inode));return ret; }
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 15/89 9p: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/9p/vfs_inode.c | 6 +++--- fs/9p/vfs_inode_dotl.c | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-)
fs/9p/vfs_inode.c +3 -3
@@ -260,7 +260,7 @@ int v9fs_init_inode(struct v9fs_session_info *v9ses,inode_init_owner (&nop_mnt_idmap, inode,NULL , mode); inode->i_blocks =0 ; inode->i_rdev = rdev; - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); inode->i_mapping->a_ops = &v9fs_addr_operations; inode->i_private =NULL ;
@@ -1150,8 +1150,8 @@ v9fs_stat2inode(struct p9_wstat *stat, struct inode *inode,set_nlink (inode,1 ); - inode->i_atime.tv_sec = stat->atime; - inode->i_mtime.tv_sec = stat->mtime; +inode_set_atime (inode, stat->atime,0 ); +inode_set_mtime (inode, stat->mtime,0 );inode_set_ctime (inode, stat->mtime,0 ); inode->i_uid = v9ses->dfltuid;
fs/9p/vfs_inode_dotl.c +8 -8
@@ -641,10 +641,10 @@ v9fs_stat2inode_dotl(struct p9_stat_dotl *stat, struct inode *inode,struct v9fs_inode *v9inode =V9FS_I (inode);if ((stat->st_result_mask &P9_STATS_BASIC ) ==P9_STATS_BASIC ) { - inode->i_atime.tv_sec = stat->st_atime_sec; - inode->i_atime.tv_nsec = stat->st_atime_nsec; - inode->i_mtime.tv_sec = stat->st_mtime_sec; - inode->i_mtime.tv_nsec = stat->st_mtime_nsec; +inode_set_atime (inode, stat->st_atime_sec, + stat->st_atime_nsec); +inode_set_mtime (inode, stat->st_mtime_sec, + stat->st_mtime_nsec);inode_set_ctime (inode, stat->st_ctime_sec, stat->st_ctime_nsec); inode->i_uid = stat->st_uid;
@@ -660,12 +660,12 @@ v9fs_stat2inode_dotl(struct p9_stat_dotl *stat, struct inode *inode, inode->i_blocks = stat->st_blocks; }else {if (stat->st_result_mask &P9_STATS_ATIME ) { - inode->i_atime.tv_sec = stat->st_atime_sec; - inode->i_atime.tv_nsec = stat->st_atime_nsec; +inode_set_atime (inode, stat->st_atime_sec, + stat->st_atime_nsec); }if (stat->st_result_mask &P9_STATS_MTIME ) { - inode->i_mtime.tv_sec = stat->st_mtime_sec; - inode->i_mtime.tv_nsec = stat->st_mtime_nsec; +inode_set_mtime (inode, stat->st_mtime_sec, + stat->st_mtime_nsec); }if (stat->st_result_mask &P9_STATS_CTIME ) { inode_set_ctime(inode, stat->st_ctime_sec,
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 16/89 adfs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/adfs/inode.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-)
fs/adfs/inode.c +8 -5
@@ -242,6 +242,7 @@ struct inode * adfs_iget(struct super_block *sb, struct object_info *obj) { struct inode *inode; +struct timespec64 ts; inode =new_inode (sb);if (!inode)
@@ -268,9 +269,10 @@ adfs_iget(struct super_block *sb, struct object_info *obj)ADFS_I (inode)->attr = obj->attr; inode->i_mode =adfs_atts2mode (sb, inode); -adfs_adfs2unix_time (&inode->i_mtime, inode); - inode->i_atime = inode->i_mtime; -inode_set_ctime_to_ts (inode, inode->i_mtime); +adfs_adfs2unix_time (&ts, inode); +inode_set_atime_to_ts (inode, ts); +inode_set_mtime_to_ts (inode, ts); +inode_set_ctime_to_ts (inode, ts);if (S_ISDIR (inode->i_mode)) { inode->i_op = &adfs_dir_inode_operations;
@@ -321,7 +323,8 @@ adfs_notify_change(struct mnt_idmap *idmap, struct dentry *dentry,if (ia_valid &ATTR_MTIME &&adfs_inode_is_stamped (inode)) {adfs_unix2adfs_time (inode, &attr->ia_mtime); -adfs_adfs2unix_time (&inode->i_mtime, inode); +adfs_adfs2unix_time (&attr->ia_mtime, inode); +inode_set_mtime_to_ts (inode, attr->ia_mtime); }/*
@@ -329,7 +332,7 @@ adfs_notify_change(struct mnt_idmap *idmap, struct dentry *dentry,* have the ability to represent them in our filesystem? */ if (ia_valid &ATTR_ATIME ) - inode->i_atime = attr->ia_atime; +inode_set_atime_to_ts (inode, attr->ia_atime);if (ia_valid &ATTR_CTIME )inode_set_ctime_to_ts (inode, attr->ia_ctime);if (ia_valid &ATTR_MODE ) {
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 17/89 affs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/affs/amigaffs.c | 4 ++-- fs/affs/inode.c | 17 +++++++---------- 2 files changed, 9 insertions(+), 12 deletions(-)
fs/affs/amigaffs.c +2 -2
@@ -60,7 +60,7 @@ affs_insert_hash(struct inode *dir, struct buffer_head *bh)mark_buffer_dirty_inode (dir_bh, dir);affs_brelse (dir_bh); - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));inode_inc_iversion (dir);mark_inode_dirty (dir);
@@ -114,7 +114,7 @@ affs_remove_hash(struct inode *dir, struct buffer_head *rem_bh)affs_brelse (bh); - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));inode_inc_iversion (dir);mark_inode_dirty (dir);
fs/affs/inode.c +7 -10
@@ -149,13 +149,9 @@ struct inode *affs_iget(struct super_block *sb, unsigned long ino)break ; } - inode->i_mtime.tv_sec = inode->i_atime.tv_sec = -inode_set_ctime (inode, - (be32_to_cpu (tail->change.days) *86400LL + -be32_to_cpu (tail->change.mins) *60 + -be32_to_cpu (tail->change.ticks) /50 +AFFS_EPOCH_DELTA ) - + sys_tz.tz_minuteswest *60 ,0 ).tv_sec; - inode->i_mtime.tv_nsec = inode->i_atime.tv_nsec =0 ; +inode_set_mtime (inode, +inode_set_atime (inode,inode_set_ctime (inode, (be32_to_cpu (tail->change.days) *86400LL +be32_to_cpu (tail->change.mins) *60 +be32_to_cpu (tail->change.ticks) /50 +AFFS_EPOCH_DELTA ) + sys_tz.tz_minuteswest *60 ,0 ).tv_sec,0 ).tv_sec, +0 );affs_brelse (bh);unlock_new_inode (inode);return inode;
@@ -187,12 +183,13 @@ affs_write_inode(struct inode *inode, struct writeback_control *wbc) } tail =AFFS_TAIL (sb, bh);if (tail->stype ==cpu_to_be32 (ST_ROOT )) { -affs_secs_to_datestamp (inode->i_mtime.tv_sec, +affs_secs_to_datestamp (inode_get_mtime_sec (inode), &AFFS_ROOT_TAIL (sb, bh)->root_change); }else { tail->protect =cpu_to_be32 (AFFS_I (inode)->i_protect); tail->size =cpu_to_be32 (inode->i_size); -affs_secs_to_datestamp (inode->i_mtime.tv_sec, &tail->change); +affs_secs_to_datestamp (inode_get_mtime_sec (inode), + &tail->change);if (!(inode->i_ino ==AFFS_SB (sb)->s_root_block)) { uid =i_uid_read (inode); gid =i_gid_read (inode);
@@ -314,7 +311,7 @@ affs_new_inode(struct inode *dir) inode->i_gid =current_fsgid (); inode->i_ino = block;set_nlink (inode,1 ); - inode->i_mtime = inode->i_atime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode);atomic_set (&AFFS_I (inode)->i_opencnt,0 );AFFS_I (inode)->i_blkcnt =0 ;AFFS_I (inode)->i_lc =NULL ;
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 18/89 afs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/afs/dynroot.c | 2 +- fs/afs/inode.c | 8 ++++---- fs/afs/write.c | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-)
fs/afs/dynroot.c +1 -1
@@ -88,7 +88,7 @@ struct inode *afs_iget_pseudo_dir(struct super_block *sb, bool root)set_nlink (inode,2 ); inode->i_uid =GLOBAL_ROOT_UID ; inode->i_gid =GLOBAL_ROOT_GID ; - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); inode->i_blocks =0 ; inode->i_generation =0 ;
fs/afs/inode.c +4 -4
@@ -91,8 +91,8 @@ static int afs_inode_init_from_status(struct afs_operation *op, t = status->mtime_client;inode_set_ctime_to_ts (inode, t); - inode->i_mtime = t; - inode->i_atime = t; +inode_set_mtime_to_ts (inode, t); +inode_set_atime_to_ts (inode, t); inode->i_flags |=S_NOATIME ; inode->i_uid =make_kuid (&init_user_ns, status->owner); inode->i_gid =make_kgid (&init_user_ns, status->group);
@@ -204,7 +204,7 @@ static void afs_apply_status(struct afs_operation *op, } t = status->mtime_client; - inode->i_mtime = t; +inode_set_mtime_to_ts (inode, t);if (vp->update_ctime)inode_set_ctime_to_ts (inode, op->ctime);
@@ -253,7 +253,7 @@ static void afs_apply_status(struct afs_operation *op,if (change_size) {afs_set_i_size (vnode, status->size);inode_set_ctime_to_ts (inode, t); - inode->i_atime = t; +inode_set_atime_to_ts (inode, t); } } }
fs/afs/write.c +1 -1
@@ -424,7 +424,7 @@ static int afs_store_data(struct afs_vnode *vnode, struct iov_iter *iter, loff_t op->store.write_iter = iter; op->store.i_size =max (pos + size, vnode->netfs.remote_i_size); - op->mtime = vnode->netfs.inode.i_mtime; + op->mtime =inode_get_mtime (&vnode->netfs.inode);afs_wait_for_operation (op);
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 19/89 autofs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/autofs/inode.c | 2 +- fs/autofs/root.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-)
fs/autofs/inode.c +1 -1
@@ -457,7 +457,7 @@ struct inode *autofs_get_inode(struct super_block *sb, umode_t mode) inode->i_uid =d_inode (sb->s_root)->i_uid; inode->i_gid =d_inode (sb->s_root)->i_gid; } - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); inode->i_ino =get_next_ino ();if (S_ISDIR (mode)) {
fs/autofs/root.c +3 -3
@@ -600,7 +600,7 @@ static int autofs_dir_symlink(struct mnt_idmap *idmap, p_ino =autofs_dentry_ino (dentry->d_parent); p_ino->count++; - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));return 0 ; }
@@ -633,7 +633,7 @@ static int autofs_dir_unlink(struct inode *dir, struct dentry *dentry)d_inode (dentry)->i_size =0 ;clear_nlink (d_inode (dentry)); - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));spin_lock (&sbi->lookup_lock);__autofs_add_expiring (dentry);
@@ -749,7 +749,7 @@ static int autofs_dir_mkdir(struct mnt_idmap *idmap, p_ino =autofs_dentry_ino (dentry->d_parent); p_ino->count++;inc_nlink (dir); - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));return 0 ; }
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 20/89 bcachefs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/bcachefs/fs.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)
fs/bcachefs/fs.c +6 -6
@@ -66,9 +66,9 @@ void bch2_inode_update_after_write(struct btree_trans *trans, inode->v.i_mode = bi->bi_mode;if (fields &ATTR_ATIME ) - inode->v.i_atime =bch2_time_to_timespec (c, bi->bi_atime); +inode_set_atime_to_ts (&inode->v,bch2_time_to_timespec (c, bi->bi_atime));if (fields &ATTR_MTIME ) - inode->v.i_mtime =bch2_time_to_timespec (c, bi->bi_mtime); +inode_set_mtime_to_ts (&inode->v,bch2_time_to_timespec (c, bi->bi_mtime));if (fields &ATTR_CTIME )inode_set_ctime_to_ts (&inode->v,bch2_time_to_timespec (c, bi->bi_ctime));
@@ -753,8 +753,8 @@ static int bch2_getattr(struct mnt_idmap *idmap, stat->gid = inode->v.i_gid; stat->rdev = inode->v.i_rdev; stat->size =i_size_read (&inode->v); - stat->atime = inode->v.i_atime; - stat->mtime = inode->v.i_mtime; + stat->atime =inode_get_atime (&inode->v); + stat->mtime =inode_get_mtime (&inode->v); stat->ctime =inode_get_ctime (&inode->v); stat->blksize =block_bytes (c); stat->blocks = inode->v.i_blocks;
@@ -1418,8 +1418,8 @@ static int inode_update_times_fn(struct btree_trans *trans, {struct bch_fs *c = inode->v.i_sb->s_fs_info; - bi->bi_atime =timespec_to_bch2_time (c, inode->v.i_atime); - bi->bi_mtime =timespec_to_bch2_time (c, inode->v.i_mtime); + bi->bi_atime =timespec_to_bch2_time (c,inode_get_atime (&inode->v)); + bi->bi_mtime =timespec_to_bch2_time (c,inode_get_mtime (&inode->v)); bi->bi_ctime =timespec_to_bch2_time (c,inode_get_ctime (&inode->v));return 0 ;
Signature · 1 line
2.41.0
Re: [PATCH v2 20/89] bcachefs: convert to new timestamp accessors
Quoted 4 lines · Jeff Layton
Convert to using the new inode timestamp accessor functions.
Signed-off-by Jeff Layton <[email protected]>---
Quoted 44 lines
fs/bcachefs/fs.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)fs/bcachefs/fs.c +6
-6@@ -66,9 +66,9 @@ void bch2_inode_update_after_write(struct btree_trans *trans, inode->v.i_mode = bi->bi_mode;if (fields &ATTR_ATIME ) - inode->v.i_atime =bch2_time_to_timespec (c, bi->bi_atime); +inode_set_atime_to_ts (&inode->v,bch2_time_to_timespec (c, bi->bi_atime));if (fields &ATTR_MTIME ) - inode->v.i_mtime =bch2_time_to_timespec (c, bi->bi_mtime); +inode_set_mtime_to_ts (&inode->v,bch2_time_to_timespec (c, bi->bi_mtime));if (fields &ATTR_CTIME )inode_set_ctime_to_ts (&inode->v,bch2_time_to_timespec (c, bi->bi_ctime));@@ -753,8 +753,8 @@ static int bch2_getattr(struct mnt_idmap *idmap, stat->gid = inode->v.i_gid; stat->rdev = inode->v.i_rdev; stat->size =i_size_read (&inode->v); - stat->atime = inode->v.i_atime; - stat->mtime = inode->v.i_mtime; + stat->atime =inode_get_atime (&inode->v); + stat->mtime =inode_get_mtime (&inode->v); stat->ctime =inode_get_ctime (&inode->v); stat->blksize =block_bytes (c); stat->blocks = inode->v.i_blocks;@@ -1418,8 +1418,8 @@ static int inode_update_times_fn(struct btree_trans *trans, {struct bch_fs *c = inode->v.i_sb->s_fs_info; - bi->bi_atime =timespec_to_bch2_time (c, inode->v.i_atime); - bi->bi_mtime =timespec_to_bch2_time (c, inode->v.i_mtime); + bi->bi_atime =timespec_to_bch2_time (c,inode_get_atime (&inode->v)); + bi->bi_mtime =timespec_to_bch2_time (c,inode_get_mtime (&inode->v)); bi->bi_ctime =timespec_to_bch2_time (c,inode_get_ctime (&inode->v));return 0 ;Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 21/89 befs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/befs/linuxvfs.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
fs/befs/linuxvfs.c +5 -5
@@ -360,11 +360,11 @@ static struct inode *befs_iget(struct super_block *sb, unsigned long ino)* for indexing purposes. (PFD, page 54) */ - inode->i_mtime.tv_sec = -fs64_to_cpu (sb, raw_inode->last_modified_time) >>16 ; - inode->i_mtime.tv_nsec =0 ;/* lower 16 bits are not a time */ -inode_set_ctime_to_ts (inode, inode->i_mtime); - inode->i_atime = inode->i_mtime; +inode_set_mtime (inode, +fs64_to_cpu (sb, raw_inode->last_modified_time) >>16 , +0 );/* lower 16 bits are not a time */ +inode_set_ctime_to_ts (inode,inode_get_mtime (inode)); +inode_set_atime_to_ts (inode,inode_get_mtime (inode)); befs_ino->i_inode_num =fsrun_to_cpu (sb, raw_inode->inode_num); befs_ino->i_parent =fsrun_to_cpu (sb, raw_inode->parent);
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 22/89 bfs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/bfs/dir.c | 9 +++++---- fs/bfs/inode.c | 12 +++++------- 2 files changed, 10 insertions(+), 11 deletions(-)
fs/bfs/dir.c +5 -4
@@ -97,7 +97,7 @@ static int bfs_create(struct mnt_idmap *idmap, struct inode *dir,set_bit (ino, info->si_imap); info->si_freei--;inode_init_owner (&nop_mnt_idmap, inode, dir, mode); - inode->i_mtime = inode->i_atime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); inode->i_blocks =0 ; inode->i_op = &bfs_file_inops; inode->i_fop = &bfs_file_operations;
@@ -187,7 +187,7 @@ static int bfs_unlink(struct inode *dir, struct dentry *dentry) } de->ino =0 ;mark_buffer_dirty_inode (bh, dir); - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));mark_inode_dirty (dir);inode_set_ctime_to_ts (inode,inode_get_ctime (dir));inode_dec_link_count (inode);
@@ -240,7 +240,7 @@ static int bfs_rename(struct mnt_idmap *idmap, struct inode *old_dir, goto end_rename; } old_de->ino =0 ; - old_dir->i_mtime =inode_set_ctime_current (old_dir); +inode_set_mtime_to_ts (old_dir,inode_set_ctime_current (old_dir));mark_inode_dirty (old_dir);if (new_inode) {inode_set_ctime_current (new_inode);
@@ -294,7 +294,8 @@ static int bfs_add_entry(struct inode *dir, const struct qstr *child, int ino) dir->i_size +=BFS_DIRENT_SIZE ;inode_set_ctime_current (dir); } - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir, +inode_set_ctime_current (dir));mark_inode_dirty (dir); de->ino =cpu_to_le16 ((u16 )ino);for (i =0 ; i <BFS_NAMELEN ; i++)
fs/bfs/inode.c +5 -7
@@ -80,11 +80,9 @@ struct inode *bfs_iget(struct super_block *sb, unsigned long ino)set_nlink (inode,le32_to_cpu (di->i_nlink)); inode->i_size =BFS_FILESIZE (di); inode->i_blocks =BFS_FILEBLOCKS (di); - inode->i_atime.tv_sec =le32_to_cpu (di->i_atime); - inode->i_mtime.tv_sec =le32_to_cpu (di->i_mtime); +inode_set_atime (inode,le32_to_cpu (di->i_atime),0 ); +inode_set_mtime (inode,le32_to_cpu (di->i_mtime),0 );inode_set_ctime (inode,le32_to_cpu (di->i_ctime),0 ); - inode->i_atime.tv_nsec =0 ; - inode->i_mtime.tv_nsec =0 ;brelse (bh);unlock_new_inode (inode);
@@ -140,9 +138,9 @@ static int bfs_write_inode(struct inode *inode, struct writeback_control *wbc) di->i_uid =cpu_to_le32 (i_uid_read (inode)); di->i_gid =cpu_to_le32 (i_gid_read (inode)); di->i_nlink =cpu_to_le32 (inode->i_nlink); - di->i_atime =cpu_to_le32 (inode->i_atime.tv_sec); - di->i_mtime =cpu_to_le32 (inode->i_mtime.tv_sec); - di->i_ctime =cpu_to_le32 (inode_get_ctime (inode).tv_sec); + di->i_atime =cpu_to_le32 (inode_get_atime_sec (inode)); + di->i_mtime =cpu_to_le32 (inode_get_mtime_sec (inode)); + di->i_ctime =cpu_to_le32 (inode_get_ctime_sec (inode)); i_sblock =BFS_I (inode)->i_sblock; di->i_sblock =cpu_to_le32 (i_sblock); di->i_eblock =cpu_to_le32 (BFS_I (inode)->i_eblock);
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 23/89 btrfs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/btrfs/delayed-inode.c | 20 +++++++++---------- fs/btrfs/file.c | 18 +++++++++-------- fs/btrfs/inode.c | 43 ++++++++++++++++++++-------------------- fs/btrfs/reflink.c | 2 +- fs/btrfs/transaction.c | 3 ++- fs/btrfs/tree-log.c | 12 +++++------ 6 files changed, 51 insertions(+), 47 deletions(-)
fs/btrfs/delayed-inode.c +10 -10
@@ -1833,19 +1833,19 @@ static void fill_stack_inode_item(struct btrfs_trans_handle *trans,btrfs_set_stack_inode_block_group (inode_item,0 );btrfs_set_stack_timespec_sec (&inode_item->atime, - inode->i_atime.tv_sec); +inode_get_atime_sec (inode));btrfs_set_stack_timespec_nsec (&inode_item->atime, - inode->i_atime.tv_nsec); +inode_get_atime_nsec (inode));btrfs_set_stack_timespec_sec (&inode_item->mtime, - inode->i_mtime.tv_sec); +inode_get_mtime_sec (inode));btrfs_set_stack_timespec_nsec (&inode_item->mtime, - inode->i_mtime.tv_nsec); +inode_get_mtime_nsec (inode));btrfs_set_stack_timespec_sec (&inode_item->ctime, -inode_get_ctime (inode).tv_sec); +inode_get_ctime_sec (inode));btrfs_set_stack_timespec_nsec (&inode_item->ctime, -inode_get_ctime (inode).tv_nsec); +inode_get_ctime_nsec (inode));btrfs_set_stack_timespec_sec (&inode_item->otime,BTRFS_I (inode)->i_otime.tv_sec);
@@ -1890,11 +1890,11 @@ int btrfs_fill_inode(struct inode *inode, u32 *rdev)btrfs_inode_split_flags (btrfs_stack_inode_flags (inode_item), &BTRFS_I (inode)->flags, &BTRFS_I (inode)->ro_flags); - inode->i_atime.tv_sec =btrfs_stack_timespec_sec (&inode_item->atime); - inode->i_atime.tv_nsec =btrfs_stack_timespec_nsec (&inode_item->atime); +inode_set_atime (inode,btrfs_stack_timespec_sec (&inode_item->atime), +btrfs_stack_timespec_nsec (&inode_item->atime)); - inode->i_mtime.tv_sec =btrfs_stack_timespec_sec (&inode_item->mtime); - inode->i_mtime.tv_nsec =btrfs_stack_timespec_nsec (&inode_item->mtime); +inode_set_mtime (inode,btrfs_stack_timespec_sec (&inode_item->mtime), +btrfs_stack_timespec_nsec (&inode_item->mtime));inode_set_ctime (inode,btrfs_stack_timespec_sec (&inode_item->ctime),btrfs_stack_timespec_nsec (&inode_item->ctime));
fs/btrfs/file.c +10 -8
@@ -1111,17 +1111,18 @@ void btrfs_check_nocow_unlock(struct btrfs_inode *inode)static void update_time_for_write (struct inode *inode) { -struct timespec64 now, ctime; +struct timespec64 now, ts;if (IS_NOCMTIME (inode))return ; now =current_time (inode); -if (!timespec64_equal (&inode->i_mtime, &now)) - inode->i_mtime = now; + ts =inode_get_mtime (inode); +if (!timespec64_equal (&ts, &now)) +inode_set_mtime_to_ts (inode, now); - ctime =inode_get_ctime (inode); -if (!timespec64_equal (&ctime, &now)) + ts =inode_get_ctime (inode); +if (!timespec64_equal (&ts, &now))inode_set_ctime_to_ts (inode, now);if (IS_I_VERSION (inode))
@@ -2477,7 +2478,8 @@ int btrfs_replace_file_extents(struct btrfs_inode *inode,inode_inc_iversion (&inode->vfs_inode);if (!extent_info || extent_info->update_times) - inode->vfs_inode.i_mtime =inode_set_ctime_current (&inode->vfs_inode); +inode_set_mtime_to_ts (&inode->vfs_inode, +inode_set_ctime_current (&inode->vfs_inode)); ret =btrfs_update_inode (trans, inode);if (ret)
@@ -2718,7 +2720,7 @@ static int btrfs_punch_hole(struct file *file, loff_t offset, loff_t len)ASSERT (trans !=NULL );inode_inc_iversion (inode); - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode)); ret =btrfs_update_inode (trans,BTRFS_I (inode)); updated_inode = true;btrfs_end_transaction (trans);
@@ -2738,7 +2740,7 @@ static int btrfs_punch_hole(struct file *file, loff_t offset, loff_t len)struct timespec64 now =inode_set_ctime_current (inode);inode_inc_iversion (inode); - inode->i_mtime = now; +inode_set_mtime_to_ts (inode, now); trans =btrfs_start_transaction (root,1 );if (IS_ERR (trans)) { ret =PTR_ERR (trans);
fs/btrfs/inode.c +22 -21
99 lines not on this page · raw message
fs/btrfs/reflink.c +1 -1
@@ -29,7 +29,7 @@ static int clone_finish_inode_update(struct btrfs_trans_handle *trans,inode_inc_iversion (inode);if (!no_time_update) { - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode)); }/* * We round up to the block size at eof when determining which
fs/btrfs/transaction.c +2 -1
@@ -1911,7 +1911,8 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,btrfs_i_size_write (BTRFS_I (parent_inode), parent_inode->i_size + fname.disk_name.len *2 ); - parent_inode->i_mtime =inode_set_ctime_current (parent_inode); +inode_set_mtime_to_ts (parent_inode, +inode_set_ctime_current (parent_inode)); ret =btrfs_update_inode_fallback (trans,BTRFS_I (parent_inode));if (ret) {btrfs_abort_transaction (trans, ret);
fs/btrfs/tree-log.c +6 -6
@@ -4134,19 +4134,19 @@ static void fill_inode_item(struct btrfs_trans_handle *trans,btrfs_set_token_inode_nlink (&token, item, inode->i_nlink);btrfs_set_token_timespec_sec (&token, &item->atime, - inode->i_atime.tv_sec); +inode_get_atime_sec (inode));btrfs_set_token_timespec_nsec (&token, &item->atime, - inode->i_atime.tv_nsec); +inode_get_atime_nsec (inode));btrfs_set_token_timespec_sec (&token, &item->mtime, - inode->i_mtime.tv_sec); +inode_get_mtime_sec (inode));btrfs_set_token_timespec_nsec (&token, &item->mtime, - inode->i_mtime.tv_nsec); +inode_get_mtime_nsec (inode));btrfs_set_token_timespec_sec (&token, &item->ctime, -inode_get_ctime (inode).tv_sec); +inode_get_ctime_sec (inode));btrfs_set_token_timespec_nsec (&token, &item->ctime, -inode_get_ctime (inode).tv_nsec); +inode_get_ctime_nsec (inode));/* * We do not need to set the nbytes field, in fact during a fast fsync
Signature · 1 line
2.41.0
Re: [PATCH v2 23/89] btrfs: convert to new timestamp accessors
Quoted 3 lines · Jeff Layton
Convert to using the new inode timestamp accessor functions.
Signed-off-by Jeff Layton <[email protected]>
Jeff Layton
maintainerPATCH v2 24/89 ceph: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/ceph/addr.c | 10 +++---- fs/ceph/caps.c | 4 +-- fs/ceph/file.c | 2 +- fs/ceph/inode.c | 64 ++++++++++++++++++++++++-------------------- fs/ceph/mds_client.c | 8 ++++-- fs/ceph/snap.c | 4 +-- 6 files changed, 51 insertions(+), 41 deletions(-)
fs/ceph/addr.c +5 -5
@@ -750,7 +750,7 @@ static int writepage_nounlock(struct page *page, struct writeback_control *wbc)dout ("writepage %llu~%llu (%llu bytes, %sencrypted)\n" , page_off, len, wlen,IS_ENCRYPTED (inode) ?"" :"not " ); - req->r_mtime = inode->i_mtime; + req->r_mtime =inode_get_mtime (inode);ceph_osdc_start_request (osdc, req); err =ceph_osdc_wait_request (osdc, req);
@@ -1327,7 +1327,7 @@ static int ceph_writepages_start(struct address_space *mapping, pages =NULL ; } - req->r_mtime = inode->i_mtime; + req->r_mtime =inode_get_mtime (inode);ceph_osdc_start_request (&fsc->client->osdc, req); req =NULL ;
@@ -1875,7 +1875,7 @@ int ceph_uninline_data(struct file *file) goto out_unlock; } - req->r_mtime = inode->i_mtime; + req->r_mtime =inode_get_mtime (inode);ceph_osdc_start_request (&fsc->client->osdc, req); err =ceph_osdc_wait_request (&fsc->client->osdc, req);ceph_osdc_put_request (req);
@@ -1917,7 +1917,7 @@ int ceph_uninline_data(struct file *file) goto out_put_req; } - req->r_mtime = inode->i_mtime; + req->r_mtime =inode_get_mtime (inode);ceph_osdc_start_request (&fsc->client->osdc, req); err =ceph_osdc_wait_request (&fsc->client->osdc, req);
@@ -2092,7 +2092,7 @@ static int __ceph_pool_perm_get(struct ceph_inode_info *ci, 0, false, true);ceph_osdc_start_request (&fsc->client->osdc, rd_req); - wr_req->r_mtime = ci->netfs.inode.i_mtime; + wr_req->r_mtime =inode_get_mtime (&ci->netfs.inode);ceph_osdc_start_request (&fsc->client->osdc, wr_req); err =ceph_osdc_wait_request (&fsc->client->osdc, rd_req);
fs/ceph/caps.c +2 -2
@@ -1421,8 +1421,8 @@ static void __prep_cap(struct cap_msg_args *arg, struct ceph_cap *cap, arg->old_xattr_buf =NULL ; } - arg->mtime = inode->i_mtime; - arg->atime = inode->i_atime; + arg->mtime =inode_get_mtime (inode); + arg->atime =inode_get_atime (inode); arg->ctime =inode_get_ctime (inode); arg->btime = ci->i_btime; arg->change_attr =inode_peek_iversion_raw (inode);
fs/ceph/file.c +1 -1
@@ -2489,7 +2489,7 @@ static int ceph_zero_partial_object(struct inode *inode, goto out; } - req->r_mtime = inode->i_mtime; + req->r_mtime =inode_get_mtime (inode);ceph_osdc_start_request (&fsc->client->osdc, req); ret =ceph_osdc_wait_request (&fsc->client->osdc, req);if (ret == -ENOENT )
fs/ceph/inode.c +35 -29
128 lines not on this page · raw message
fs/ceph/mds_client.c +6 -2
@@ -4353,12 +4353,16 @@ static int reconnect_caps_cb(struct inode *inode, int mds, void *arg) rec.v2.flock_len = (__force __le32) ((ci->i_ceph_flags &CEPH_I_ERROR_FILELOCK ) ?0 :1 ); }else { +struct timespec64 ts; + rec.v1.cap_id =cpu_to_le64 (cap->cap_id); rec.v1.wanted =cpu_to_le32 (__ceph_caps_wanted (ci)); rec.v1.issued =cpu_to_le32 (cap->issued); rec.v1.size =cpu_to_le64 (i_size_read (inode)); -ceph_encode_timespec64 (&rec.v1.mtime, &inode->i_mtime); -ceph_encode_timespec64 (&rec.v1.atime, &inode->i_atime); + ts =inode_get_mtime (inode); +ceph_encode_timespec64 (&rec.v1.mtime, &ts); + ts =inode_get_atime (inode); +ceph_encode_timespec64 (&rec.v1.atime, &ts); rec.v1.snaprealm =cpu_to_le64 (ci->i_snap_realm->ino); rec.v1.pathbase =cpu_to_le64 (pathbase); }
fs/ceph/snap.c +2 -2
@@ -658,8 +658,8 @@ int __ceph_finish_cap_snap(struct ceph_inode_info *ci,BUG_ON (capsnap->writing); capsnap->size =i_size_read (inode); - capsnap->mtime = inode->i_mtime; - capsnap->atime = inode->i_atime; + capsnap->mtime =inode_get_mtime (inode); + capsnap->atime =inode_get_atime (inode); capsnap->ctime =inode_get_ctime (inode); capsnap->btime = ci->i_btime; capsnap->change_attr =inode_peek_iversion_raw (inode);
Signature · 1 line
2.41.0
Re: [PATCH v2 24/89] ceph: convert to new timestamp accessors
Quoted 255 lines · Jeff Layton
Convert to using the new inode timestamp accessor functions.
Signed-off-by Jeff Layton <[email protected]>--- fs/ceph/addr.c | 10 +++---- fs/ceph/caps.c | 4 +-- fs/ceph/file.c | 2 +- fs/ceph/inode.c | 64 ++++++++++++++++++++++++-------------------- fs/ceph/mds_client.c | 8 ++++-- fs/ceph/snap.c | 4 +-- 6 files changed, 51 insertions(+), 41 deletions(-)fs/ceph/addr.c +5
-5@@ -750,7 +750,7 @@ static int writepage_nounlock(struct page *page, struct writeback_control *wbc)dout ("writepage %llu~%llu (%llu bytes, %sencrypted)\n" , page_off, len, wlen,IS_ENCRYPTED (inode) ?"" :"not " ); - req->r_mtime = inode->i_mtime; + req->r_mtime =inode_get_mtime (inode);ceph_osdc_start_request (osdc, req); err =ceph_osdc_wait_request (osdc, req);@@ -1327,7 +1327,7 @@ static int ceph_writepages_start(struct address_space *mapping, pages =NULL ; } - req->r_mtime = inode->i_mtime; + req->r_mtime =inode_get_mtime (inode);ceph_osdc_start_request (&fsc->client->osdc, req); req =NULL ;@@ -1875,7 +1875,7 @@ int ceph_uninline_data(struct file *file) goto out_unlock; } - req->r_mtime = inode->i_mtime; + req->r_mtime =inode_get_mtime (inode);ceph_osdc_start_request (&fsc->client->osdc, req); err =ceph_osdc_wait_request (&fsc->client->osdc, req);ceph_osdc_put_request (req);@@ -1917,7 +1917,7 @@ int ceph_uninline_data(struct file *file) goto out_put_req; } - req->r_mtime = inode->i_mtime; + req->r_mtime =inode_get_mtime (inode);ceph_osdc_start_request (&fsc->client->osdc, req); err =ceph_osdc_wait_request (&fsc->client->osdc, req);@@ -2092,7 +2092,7 @@ static int __ceph_pool_perm_get(struct ceph_inode_info *ci, 0, false, true);ceph_osdc_start_request (&fsc->client->osdc, rd_req); - wr_req->r_mtime = ci->netfs.inode.i_mtime; + wr_req->r_mtime =inode_get_mtime (&ci->netfs.inode);ceph_osdc_start_request (&fsc->client->osdc, wr_req); err =ceph_osdc_wait_request (&fsc->client->osdc, rd_req);fs/ceph/caps.c +2
-2@@ -1421,8 +1421,8 @@ static void __prep_cap(struct cap_msg_args *arg, struct ceph_cap *cap, arg->old_xattr_buf =NULL ; } - arg->mtime = inode->i_mtime; - arg->atime = inode->i_atime; + arg->mtime =inode_get_mtime (inode); + arg->atime =inode_get_atime (inode); arg->ctime =inode_get_ctime (inode); arg->btime = ci->i_btime; arg->change_attr =inode_peek_iversion_raw (inode);fs/ceph/file.c +1
-1@@ -2489,7 +2489,7 @@ static int ceph_zero_partial_object(struct inode *inode, goto out; } - req->r_mtime = inode->i_mtime; + req->r_mtime =inode_get_mtime (inode);ceph_osdc_start_request (&fsc->client->osdc, req); ret =ceph_osdc_wait_request (&fsc->client->osdc, req);if (ret == -ENOENT )fs/ceph/inode.c +35
-29@@ -185,9 +185,9 @@ struct inode *ceph_get_snapdir(struct inode *parent) inode->i_mode = parent->i_mode; inode->i_uid = parent->i_uid; inode->i_gid = parent->i_gid; - inode->i_mtime = parent->i_mtime; +inode_set_mtime_to_ts (inode,inode_get_mtime (parent));inode_set_ctime_to_ts (inode,inode_get_ctime (parent)); - inode->i_atime = parent->i_atime; +inode_set_atime_to_ts (inode,inode_get_atime (parent)); ci->i_rbytes =0 ; ci->i_btime =ceph_inode (parent)->i_btime;@@ -837,28 +837,31 @@ void ceph_fill_file_time(struct inode *inode, int issued,/* the MDS did a utimes() */ dout ("mtime %lld.%09ld -> %lld.%09ld " "tw %d -> %d\n" , - inode->i_mtime.tv_sec, inode->i_mtime.tv_nsec, +inode_get_mtime_sec (inode), +inode_get_mtime_nsec (inode), mtime->tv_sec, mtime->tv_nsec, ci->i_time_warp_seq, (int )time_warp_seq); - inode->i_mtime = *mtime; - inode->i_atime = *atime; +inode_set_mtime_to_ts (inode, *mtime); +inode_set_atime_to_ts (inode, *atime); ci->i_time_warp_seq = time_warp_seq; }else if (time_warp_seq == ci->i_time_warp_seq) { +struct timespec64 ts; +/* nobody did utimes(); take the max */ -if (timespec64_compare (mtime, &inode->i_mtime) >0 ) { + ts =inode_get_mtime (inode); +if (timespec64_compare (mtime, &ts) >0 ) {dout ("mtime %lld.%09ld -> %lld.%09ld inc\n" , - inode->i_mtime.tv_sec, - inode->i_mtime.tv_nsec, + ts.tv_sec, ts.tv_nsec, mtime->tv_sec, mtime->tv_nsec); - inode->i_mtime = *mtime; +inode_set_mtime_to_ts (inode, *mtime); } -if (timespec64_compare (atime, &inode->i_atime) >0 ) { + ts =inode_get_atime (inode); +if (timespec64_compare (atime, &ts) >0 ) {dout ("atime %lld.%09ld -> %lld.%09ld inc\n" , - inode->i_atime.tv_sec, - inode->i_atime.tv_nsec, + ts.tv_sec, ts.tv_nsec, atime->tv_sec, atime->tv_nsec); - inode->i_atime = *atime; +inode_set_atime_to_ts (inode, *atime); } }else if (issued &CEPH_CAP_FILE_EXCL ) {/* we did a utimes(); ignore mds values */ @@ -869,8 +872,8 @@ void ceph_fill_file_time(struct inode *inode, int issued,/* we have no write|excl caps; whatever the MDS says is true */ if (ceph_seq_cmp (time_warp_seq, ci->i_time_warp_seq) >=0 ) {inode_set_ctime_to_ts (inode, *ctime); - inode->i_mtime = *mtime; - inode->i_atime = *atime; +inode_set_mtime_to_ts (inode, *mtime); +inode_set_atime_to_ts (inode, *atime); ci->i_time_warp_seq = time_warp_seq; }else { warn =1 ;@@ -2553,20 +2556,22 @@ int __ceph_setattr(struct inode *inode, struct iattr *attr, }if (ia_valid &ATTR_ATIME ) { +struct timespec64 atime =inode_get_atime (inode); +dout ("setattr %p atime %lld.%ld -> %lld.%ld\n" , inode, - inode->i_atime.tv_sec, inode->i_atime.tv_nsec, + atime.tv_sec, atime.tv_nsec, attr->ia_atime.tv_sec, attr->ia_atime.tv_nsec);if (issued &CEPH_CAP_FILE_EXCL ) { ci->i_time_warp_seq++; - inode->i_atime = attr->ia_atime; +inode_set_atime_to_ts (inode, attr->ia_atime); dirtied |=CEPH_CAP_FILE_EXCL ; }else if ((issued &CEPH_CAP_FILE_WR ) && -timespec64_compare (&inode->i_atime, - &attr->ia_atime) <0 ) { - inode->i_atime = attr->ia_atime; +timespec64_compare (&atime, + &attr->ia_atime) <0 ) { +inode_set_atime_to_ts (inode, attr->ia_atime); dirtied |=CEPH_CAP_FILE_WR ; }else if ((issued &CEPH_CAP_FILE_SHARED ) ==0 || - !timespec64_equal (&inode->i_atime, &attr->ia_atime)) { + !timespec64_equal (&atime, &attr->ia_atime)) {ceph_encode_timespec64 (&req->r_args.setattr.atime, &attr->ia_atime); mask |=CEPH_SETATTR_ATIME ;@@ -2626,20 +2631,21 @@ int __ceph_setattr(struct inode *inode, struct iattr *attr, } }if (ia_valid &ATTR_MTIME ) { +struct timespec64 mtime =inode_get_mtime (inode); +dout ("setattr %p mtime %lld.%ld -> %lld.%ld\n" , inode, - inode->i_mtime.tv_sec, inode->i_mtime.tv_nsec, + mtime.tv_sec, mtime.tv_nsec, attr->ia_mtime.tv_sec, attr->ia_mtime.tv_nsec);if (issued &CEPH_CAP_FILE_EXCL ) { ci->i_time_warp_seq++; - inode->i_mtime = attr->ia_mtime; +inode_set_mtime_to_ts (inode, attr->ia_mtime); dirtied |=CEPH_CAP_FILE_EXCL ; }else if ((issued &CEPH_CAP_FILE_WR ) && -timespec64_compare (&inode->i_mtime, - &attr->ia_mtime) <0 ) { - inode->i_mtime = attr->ia_mtime; +timespec64_compare (&mtime, &attr->ia_mtime) <0 ) { +inode_set_mtime_to_ts (inode, attr->ia_mtime); dirtied |=CEPH_CAP_FILE_WR ; }else if ((issued &CEPH_CAP_FILE_SHARED ) ==0 || - !timespec64_equal (&inode->i_mtime, &attr->ia_mtime)) { + !timespec64_equal (&mtime, &attr->ia_mtime)) {ceph_encode_timespec64 (&req->r_args.setattr.mtime, &attr->ia_mtime); mask |=CEPH_SETATTR_MTIME ;@@ -2653,8 +2659,8 @@ int __ceph_setattr(struct inode *inode, struct iattr *attr,bool only = (ia_valid & (ATTR_SIZE |ATTR_MTIME |ATTR_ATIME |ATTR_MODE |ATTR_UID |ATTR_GID )) ==0 ;dout ("setattr %p ctime %lld.%ld -> %lld.%ld (%s)\n" , inode, -inode_get_ctime (inode).tv_sec, -inode_get_ctime (inode).tv_nsec, +inode_get_ctime_sec (inode), +inode_get_ctime_nsec (inode), attr->ia_ctime.tv_sec, attr->ia_ctime.tv_nsec, only ?"ctime only" :"ignored" );if (only) {fs/ceph/mds_client.c +6
-2@@ -4353,12 +4353,16 @@ static int reconnect_caps_cb(struct inode *inode, int mds, void *arg) rec.v2.flock_len = (__force __le32) ((ci->i_ceph_flags &CEPH_I_ERROR_FILELOCK ) ?0 :1 ); }else { +struct timespec64 ts; + rec.v1.cap_id =cpu_to_le64 (cap->cap_id); rec.v1.wanted =cpu_to_le32 (__ceph_caps_wanted (ci)); rec.v1.issued =cpu_to_le32 (cap->issued); rec.v1.size =cpu_to_le64 (i_size_read (inode)); -ceph_encode_timespec64 (&rec.v1.mtime, &inode->i_mtime); -ceph_encode_timespec64 (&rec.v1.atime, &inode->i_atime); + ts =inode_get_mtime (inode); +ceph_encode_timespec64 (&rec.v1.mtime, &ts); + ts =inode_get_atime (inode); +ceph_encode_timespec64 (&rec.v1.atime, &ts); rec.v1.snaprealm =cpu_to_le64 (ci->i_snap_realm->ino); rec.v1.pathbase =cpu_to_le64 (pathbase); }fs/ceph/snap.c +0
-0
fs/ceph/snap.c int __ceph_finish_cap_snap(struct ceph_inode_info *ci, · line 665
Quoted 10 lines
fs/ceph/snap.c +2
-2@@ -658,8 +658,8 @@ int __ceph_finish_cap_snap(struct ceph_inode_info *ci,BUG_ON (capsnap->writing); capsnap->size =i_size_read (inode); - capsnap->mtime = inode->i_mtime; - capsnap->atime = inode->i_atime; + capsnap->mtime =inode_get_mtime (inode); + capsnap->atime =inode_get_atime (inode); capsnap->ctime =inode_get_ctime (inode); capsnap->btime = ci->i_btime; capsnap->change_attr =inode_peek_iversion_raw (inode);
LGTM.
Thanks Jeff.
- Xiubo
Jeff Layton
maintainerPATCH v2 25/89 coda: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/coda/coda_linux.c | 6 ++++-- fs/coda/dir.c | 2 +- fs/coda/file.c | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-)
fs/coda/coda_linux.c +4 -2
@@ -123,9 +123,11 @@ void coda_vattr_to_iattr(struct inode *inode, struct coda_vattr *attr)if (attr->va_size !=-1 ) inode->i_blocks = (attr->va_size +511 ) >>9 ;if (attr->va_atime.tv_sec !=-1 ) - inode->i_atime =coda_to_timespec64 (attr->va_atime); +inode_set_atime_to_ts (inode, +coda_to_timespec64 (attr->va_atime));if (attr->va_mtime.tv_sec !=-1 ) - inode->i_mtime =coda_to_timespec64 (attr->va_mtime); +inode_set_mtime_to_ts (inode, +coda_to_timespec64 (attr->va_mtime));if (attr->va_ctime.tv_sec !=-1 )inode_set_ctime_to_ts (inode,coda_to_timespec64 (attr->va_ctime));
fs/coda/dir.c +1 -1
@@ -111,7 +111,7 @@ static inline void coda_dir_update_mtime(struct inode *dir)/* optimistically we can also act as if our nose bleeds. The * granularity of the mtime is coarse anyways so we might actually be * right most of the time. Note: we only do this for directories. */ - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));#endif }
fs/coda/file.c +1 -1
@@ -84,7 +84,7 @@ coda_file_write_iter(struct kiocb *iocb, struct iov_iter *to) ret =vfs_iter_write (cfi->cfi_container, to, &iocb->ki_pos,0 ); coda_inode->i_size =file_inode (host_file)->i_size; coda_inode->i_blocks = (coda_inode->i_size +511 ) >>9 ; - coda_inode->i_mtime =inode_set_ctime_current (coda_inode); +inode_set_mtime_to_ts (coda_inode,inode_set_ctime_current (coda_inode));inode_unlock (coda_inode);file_end_write (host_file);
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 26/89 configfs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/configfs/inode.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
fs/configfs/inode.c +4 -4
@@ -88,7 +88,7 @@ int configfs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,static inline void set_default_inode_attr (struct inode * inode,umode_t mode) { inode->i_mode = mode; - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); }static inline void set_inode_attr (struct inode * inode,struct iattr * iattr)
@@ -96,8 +96,8 @@ static inline void set_inode_attr(struct inode * inode, struct iattr * iattr) inode->i_mode = iattr->ia_mode; inode->i_uid = iattr->ia_uid; inode->i_gid = iattr->ia_gid; - inode->i_atime = iattr->ia_atime; - inode->i_mtime = iattr->ia_mtime; +inode_set_atime_to_ts (inode, iattr->ia_atime); +inode_set_mtime_to_ts (inode, iattr->ia_mtime);inode_set_ctime_to_ts (inode, iattr->ia_ctime); }
@@ -171,7 +171,7 @@ struct inode *configfs_create(struct dentry *dentry, umode_t mode)return ERR_PTR (-ENOMEM ); p_inode =d_inode (dentry->d_parent); - p_inode->i_mtime =inode_set_ctime_current (p_inode); +inode_set_mtime_to_ts (p_inode,inode_set_ctime_current (p_inode));configfs_set_inode_lock_class (sd, inode);return inode; }
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 27/89 cramfs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/cramfs/inode.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
fs/cramfs/inode.c +2 -2
@@ -133,8 +133,8 @@ static struct inode *get_cramfs_inode(struct super_block *sb, }/* Struct copy intentional */ - inode->i_mtime = inode->i_atime =inode_set_ctime_to_ts (inode, - zerotime); +inode_set_mtime_to_ts (inode, +inode_set_atime_to_ts (inode,inode_set_ctime_to_ts (inode, zerotime)));/* inode->i_nlink is left 1 - arguably wrong for directories, but it's the best we can do without reading the directory contents. 1 yields the right result in GNU find, even
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 28/89 debugfs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/debugfs/inode.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
fs/debugfs/inode.c +1 -1
@@ -72,7 +72,7 @@ static struct inode *debugfs_get_inode(struct super_block *sb)struct inode *inode =new_inode (sb);if (inode) { inode->i_ino =get_next_ino (); - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); }return inode; }
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 29/89 devpts: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/devpts/inode.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
fs/devpts/inode.c +3 -3
@@ -338,7 +338,7 @@ static int mknod_ptmx(struct super_block *sb) } inode->i_ino =2 ; - inode->i_mtime = inode->i_atime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); mode =S_IFCHR |opts->ptmxmode;init_special_inode (inode, mode,MKDEV (TTYAUX_MAJOR ,2 ));
@@ -451,7 +451,7 @@ devpts_fill_super(struct super_block *s, void *data, int silent)if (!inode) goto fail; inode->i_ino =1 ; - inode->i_mtime = inode->i_atime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); inode->i_mode =S_IFDIR |S_IRUGO |S_IXUGO |S_IWUSR ; inode->i_op = &simple_dir_inode_operations; inode->i_fop = &simple_dir_operations;
@@ -560,7 +560,7 @@ struct dentry *devpts_pty_new(struct pts_fs_info *fsi, int index, void *priv) inode->i_ino = index +3 ; inode->i_uid = opts->setuid ? opts->uid :current_fsuid (); inode->i_gid = opts->setgid ? opts->gid :current_fsgid (); - inode->i_mtime = inode->i_atime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode);init_special_inode (inode,S_IFCHR |opts->mode,MKDEV (UNIX98_PTY_SLAVE_MAJOR , index));sprintf (s,"%d" , index);
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 30/89 efivarfs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/efivarfs/file.c | 2 +- fs/efivarfs/inode.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
fs/efivarfs/file.c +1 -1
@@ -51,7 +51,7 @@ static ssize_t efivarfs_file_write(struct file *file, }else {inode_lock (inode);i_size_write (inode, datasize +sizeof (attributes)); - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode));inode_unlock (inode); }
fs/efivarfs/inode.c +1 -1
@@ -25,7 +25,7 @@ struct inode *efivarfs_get_inode(struct super_block *sb,if (inode) { inode->i_ino =get_next_ino (); inode->i_mode = mode; - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); inode->i_flags = is_removable ?0 :S_IMMUTABLE ;switch (mode &S_IFMT ) {case S_IFREG :
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 31/89 efs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/efs/inode.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
fs/efs/inode.c +2 -3
@@ -103,10 +103,9 @@ struct inode *efs_iget(struct super_block *super, unsigned long ino)i_uid_write (inode, (uid_t )be16_to_cpu (efs_inode->di_uid));i_gid_write (inode, (gid_t )be16_to_cpu (efs_inode->di_gid)); inode->i_size =be32_to_cpu (efs_inode->di_size); - inode->i_atime.tv_sec =be32_to_cpu (efs_inode->di_atime); - inode->i_mtime.tv_sec =be32_to_cpu (efs_inode->di_mtime); +inode_set_atime (inode,be32_to_cpu (efs_inode->di_atime),0 ); +inode_set_mtime (inode,be32_to_cpu (efs_inode->di_mtime),0 );inode_set_ctime (inode,be32_to_cpu (efs_inode->di_ctime),0 ); - inode->i_atime.tv_nsec = inode->i_mtime.tv_nsec =0 ;/* this is the number of blocks in the file */ if (inode->i_size ==0 ) {
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 32/89 erofs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/erofs/inode.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
fs/erofs/inode.c +2 -1
@@ -175,7 +175,8 @@ static void *erofs_read_inode(struct erofs_buf *buf, vi->chunkbits = sb->s_blocksize_bits + (vi->chunkformat &EROFS_CHUNK_FORMAT_BLKBITS_MASK ); } - inode->i_mtime = inode->i_atime =inode_get_ctime (inode); +inode_set_mtime_to_ts (inode, +inode_set_atime_to_ts (inode,inode_get_ctime (inode))); inode->i_flags &= ~S_DAX ; if (test_opt(&sbi->opt, DAX_ALWAYS) && S_ISREG(inode->i_mode) &&
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 33/89 exfat: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- 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(-)
fs/exfat/exfat_fs.h +1 -0
@@ -557,6 +557,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);
fs/exfat/file.c +3 -4
@@ -24,7 +24,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))
@@ -292,10 +292,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);
fs/exfat/inode.c +17 -14
@@ -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 ; }
fs/exfat/misc.c +8 -0
@@ -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;
fs/exfat/namei.c +16 -15
@@ -583,7 +583,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
@@ -596,8 +596,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);
@@ -830,16 +831,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:
@@ -865,7 +866,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
@@ -879,8 +880,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);
@@ -994,8 +995,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
@@ -1003,8 +1004,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:
@@ -1330,7 +1331,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
fs/exfat/super.c +2 -2
@@ -377,8 +377,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 ; }
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 34/89 ext2: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/ext2/dir.c | 6 +++--- fs/ext2/ialloc.c | 2 +- fs/ext2/inode.c | 13 ++++++------- fs/ext2/super.c | 2 +- 4 files changed, 11 insertions(+), 12 deletions(-)
fs/ext2/dir.c +3 -3
@@ -468,7 +468,7 @@ int ext2_set_link(struct inode *dir, struct ext2_dir_entry_2 *de,ext2_set_de_type (de, inode);ext2_commit_chunk (page, pos, len);if (update_times) - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));EXT2_I (dir)->i_flags &= ~EXT2_BTREE_FL ;mark_inode_dirty (dir);return ext2_handle_dirsync (dir);
@@ -555,7 +555,7 @@ int ext2_add_link (struct dentry *dentry, struct inode *inode) de->inode =cpu_to_le32 (inode->i_ino);ext2_set_de_type (de, inode);ext2_commit_chunk (page, pos, rec_len); - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));EXT2_I (dir)->i_flags &= ~EXT2_BTREE_FL ;mark_inode_dirty (dir); err =ext2_handle_dirsync (dir);
@@ -606,7 +606,7 @@ int ext2_delete_entry(struct ext2_dir_entry_2 *dir, struct page *page) pde->rec_len =ext2_rec_len_to_disk (to - from); dir->inode =0 ;ext2_commit_chunk (page, pos, to - from); - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode));EXT2_I (inode)->i_flags &= ~EXT2_BTREE_FL ;mark_inode_dirty (inode);return ext2_handle_dirsync (inode);
fs/ext2/ialloc.c +1 -1
@@ -546,7 +546,7 @@ struct inode *ext2_new_inode(struct inode *dir, umode_t mode, inode->i_ino = ino; inode->i_blocks =0 ; - inode->i_mtime = inode->i_atime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode);memset (ei->i_data,0 ,sizeof (ei->i_data)); ei->i_flags =ext2_mask_flags (mode,EXT2_I (dir)->i_flags &EXT2_FL_INHERITED );
fs/ext2/inode.c +6 -7
@@ -1291,7 +1291,7 @@ static int ext2_setsize(struct inode *inode, loff_t newsize)__ext2_truncate_blocks (inode, newsize);filemap_invalidate_unlock (inode->i_mapping); - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode));if (inode_needs_sync (inode)) {sync_mapping_buffers (inode->i_mapping);sync_inode_metadata (inode,1 );
@@ -1412,10 +1412,9 @@ struct inode *ext2_iget (struct super_block *sb, unsigned long ino)i_gid_write (inode, i_gid);set_nlink (inode,le16_to_cpu (raw_inode->i_links_count)); inode->i_size =le32_to_cpu (raw_inode->i_size); - inode->i_atime.tv_sec = (signed )le32_to_cpu (raw_inode->i_atime); +inode_set_atime (inode, (signed )le32_to_cpu (raw_inode->i_atime),0 );inode_set_ctime (inode, (signed )le32_to_cpu (raw_inode->i_ctime),0 ); - inode->i_mtime.tv_sec = (signed )le32_to_cpu (raw_inode->i_mtime); - inode->i_atime.tv_nsec = inode->i_mtime.tv_nsec =0 ; +inode_set_mtime (inode, (signed )le32_to_cpu (raw_inode->i_mtime),0 ); ei->i_dtime =le32_to_cpu (raw_inode->i_dtime);/* We now have enough fields to check if the inode was active or not. * This is needed because nfsd might try to access dead inodes
@@ -1544,9 +1543,9 @@ static int __ext2_write_inode(struct inode *inode, int do_sync) } raw_inode->i_links_count =cpu_to_le16 (inode->i_nlink); raw_inode->i_size =cpu_to_le32 (inode->i_size); - raw_inode->i_atime =cpu_to_le32 (inode->i_atime.tv_sec); - raw_inode->i_ctime =cpu_to_le32 (inode_get_ctime (inode).tv_sec); - raw_inode->i_mtime =cpu_to_le32 (inode->i_mtime.tv_sec); + raw_inode->i_atime =cpu_to_le32 (inode_get_atime_sec (inode)); + raw_inode->i_ctime =cpu_to_le32 (inode_get_ctime_sec (inode)); + raw_inode->i_mtime =cpu_to_le32 (inode_get_mtime_sec (inode)); raw_inode->i_blocks =cpu_to_le32 (inode->i_blocks); raw_inode->i_dtime =cpu_to_le32 (ei->i_dtime);
fs/ext2/super.c +1 -1
@@ -1572,7 +1572,7 @@ static ssize_t ext2_quota_write(struct super_block *sb, int type,if (inode->i_size < off+len-towrite)i_size_write (inode, off+len-towrite);inode_inc_iversion (inode); - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode));mark_inode_dirty (inode);return len - towrite; }
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 35/89 ext4: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/ext4/ext4.h | 20 +++++++++++++++----- fs/ext4/extents.c | 11 ++++++----- fs/ext4/ialloc.c | 4 ++-- fs/ext4/inline.c | 4 ++-- fs/ext4/inode.c | 19 ++++++++++--------- fs/ext4/ioctl.c | 13 +++++++++++-- fs/ext4/namei.c | 10 +++++----- fs/ext4/super.c | 2 +- fs/ext4/xattr.c | 8 ++++---- 9 files changed, 56 insertions(+), 35 deletions(-)
fs/ext4/ext4.h +15 -5
@@ -891,10 +891,13 @@ do { \ (raw_inode)->xtime =cpu_to_le32 (clamp_t (int32_t, (ts).tv_sec,S32_MIN ,S32_MAX )); \ } while (0) -#define EXT4_INODE_SET_XTIME (xtime, inode, raw_inode) \ - EXT4_INODE_SET_XTIME_VAL(xtime, inode, raw_inode, (inode)->xtime) +#define EXT4_INODE_SET_ATIME (inode, raw_inode) \ + EXT4_INODE_SET_XTIME_VAL(i_atime, inode, raw_inode, inode_get_atime(inode)) -#define EXT4_INODE_SET_CTIME (inode, raw_inode) \ +#define EXT4_INODE_SET_MTIME (inode, raw_inode) \ + EXT4_INODE_SET_XTIME_VAL(i_mtime, inode, raw_inode, inode_get_mtime(inode)) + +#define EXT4_INODE_SET_CTIME (inode, raw_inode) \ EXT4_INODE_SET_XTIME_VAL(i_ctime, inode, raw_inode, inode_get_ctime(inode))#define EXT4_EINODE_SET_XTIME (xtime, einode, raw_inode) \
@@ -910,9 +913,16 @@ do { \ .tv_sec = (signed)le32_to_cpu((raw_inode)->xtime) \ }) -#define EXT4_INODE_GET_XTIME (xtime, inode, raw_inode) \ +#define EXT4_INODE_GET_ATIME (inode, raw_inode) \ +do { \ + inode_set_atime_to_ts(inode, \ + EXT4_INODE_GET_XTIME_VAL(i_atime, inode, raw_inode)); \ +} while (0) + +#define EXT4_INODE_GET_MTIME (inode, raw_inode) \ do { \ - (inode)->xtime = EXT4_INODE_GET_XTIME_VAL(xtime, inode, raw_inode); \ + inode_set_mtime_to_ts(inode, \ + EXT4_INODE_GET_XTIME_VAL(i_mtime, inode, raw_inode)); \ } while (0)#define EXT4_INODE_GET_CTIME (inode, raw_inode) \
fs/ext4/extents.c +6 -5
@@ -4481,7 +4481,8 @@ static int ext4_alloc_file_blocks(struct file *file, ext4_lblk_t offset,if (epos > new_size) epos = new_size;if (ext4_update_inode_size (inode, epos) &0x1 ) - inode->i_mtime =inode_get_ctime (inode); +inode_set_mtime_to_ts (inode, +inode_get_ctime (inode)); } ret2 =ext4_mark_inode_dirty (handle, inode);ext4_update_inode_fsync_trans (handle, inode,1 );
@@ -4617,7 +4618,7 @@ static long ext4_zero_range(struct file *file, loff_t offset,/* Now release the pages and zero block aligned part of pages */ truncate_pagecache_range (inode, start, end -1 ); - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode)); ret =ext4_alloc_file_blocks (file, lblk, max_blocks, new_size, flags);
@@ -4642,7 +4643,7 @@ static long ext4_zero_range(struct file *file, loff_t offset, goto out_mutex; } - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode));if (new_size)ext4_update_inode_size (inode, new_size); ret =ext4_mark_inode_dirty (handle, inode);
@@ -5378,7 +5379,7 @@ static int ext4_collapse_range(struct file *file, loff_t offset, loff_t len)up_write (&EXT4_I (inode)->i_data_sem);if (IS_SYNC (inode))ext4_handle_sync (handle); - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode)); ret =ext4_mark_inode_dirty (handle, inode);ext4_update_inode_fsync_trans (handle, inode,1 );
@@ -5488,7 +5489,7 @@ static int ext4_insert_range(struct file *file, loff_t offset, loff_t len)/* Expand file to avoid data loss if there is error while shifting */ inode->i_size += len;EXT4_I (inode)->i_disksize += len; - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode)); ret =ext4_mark_inode_dirty (handle, inode);if (ret) goto out_stop;
fs/ext4/ialloc.c +2 -2
@@ -1250,8 +1250,8 @@ struct inode *__ext4_new_inode(struct mnt_idmap *idmap, inode->i_ino = ino + group *EXT4_INODES_PER_GROUP (sb);/* This is the optimal IO size (for stat), not the fs block size */ inode->i_blocks =0 ; - inode->i_mtime = inode->i_atime =inode_set_ctime_current (inode); - ei->i_crtime = inode->i_mtime; +simple_inode_init_ts (inode); + ei->i_crtime =inode_get_mtime (inode);memset (ei->i_data,0 ,sizeof (ei->i_data)); ei->i_dir_start_lookup =0 ;
fs/ext4/inline.c +2 -2
@@ -1037,7 +1037,7 @@ static int ext4_add_dirent_to_inline(handle_t *handle,* happen is that the times are slightly out of date * and/or different from the directory change time. */ - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));ext4_update_dx_flag (dir);inode_inc_iversion (dir);return 1 ;
@@ -1991,7 +1991,7 @@ int ext4_inline_data_truncate(struct inode *inode, int *has_inline)ext4_orphan_del (handle, inode);if (err ==0 ) { - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode)); err =ext4_mark_inode_dirty (handle, inode);if (IS_SYNC (inode))ext4_handle_sync (handle);
fs/ext4/inode.c +10 -9
@@ -4020,7 +4020,7 @@ int ext4_punch_hole(struct file *file, loff_t offset, loff_t length)if (IS_SYNC (inode))ext4_handle_sync (handle); - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode)); ret2 =ext4_mark_inode_dirty (handle, inode);if (unlikely (ret2)) ret = ret2;
@@ -4180,7 +4180,7 @@ int ext4_truncate(struct inode *inode)if (inode->i_nlink)ext4_orphan_del (handle, inode); - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode)); err2 =ext4_mark_inode_dirty (handle, inode);if (unlikely (err2 && !err)) err = err2;
@@ -4284,8 +4284,8 @@ static int ext4_fill_raw_inode(struct inode *inode, struct ext4_inode *raw_inode raw_inode->i_links_count =cpu_to_le16 (inode->i_nlink);EXT4_INODE_SET_CTIME (inode, raw_inode); -EXT4_INODE_SET_XTIME (i_mtime, inode, raw_inode); -EXT4_INODE_SET_XTIME (i_atime, inode, raw_inode); +EXT4_INODE_SET_MTIME (inode, raw_inode); +EXT4_INODE_SET_ATIME (inode, raw_inode);EXT4_EINODE_SET_XTIME (i_crtime, ei, raw_inode); raw_inode->i_dtime =cpu_to_le32 (ei->i_dtime);
@@ -4893,8 +4893,8 @@ struct inode *__ext4_iget(struct super_block *sb, unsigned long ino, }EXT4_INODE_GET_CTIME (inode, raw_inode); -EXT4_INODE_GET_XTIME (i_mtime, inode, raw_inode); -EXT4_INODE_GET_XTIME (i_atime, inode, raw_inode); +EXT4_INODE_GET_ATIME (inode, raw_inode); +EXT4_INODE_GET_MTIME (inode, raw_inode);EXT4_EINODE_GET_XTIME (i_crtime, ei, raw_inode);if (likely (!test_opt2 (inode->i_sb,HURD_COMPAT ))) {
@@ -5019,8 +5019,8 @@ static void __ext4_update_other_inode_time(struct super_block *sb,spin_lock (&ei->i_raw_lock);EXT4_INODE_SET_CTIME (inode, raw_inode); -EXT4_INODE_SET_XTIME (i_mtime, inode, raw_inode); -EXT4_INODE_SET_XTIME (i_atime, inode, raw_inode); +EXT4_INODE_SET_MTIME (inode, raw_inode); +EXT4_INODE_SET_ATIME (inode, raw_inode);ext4_inode_csum_set (inode, raw_inode, ei);spin_unlock (&ei->i_raw_lock);trace_ext4_other_inode_update_time (inode, orig_ino);
@@ -5413,7 +5413,8 @@ int ext4_setattr(struct mnt_idmap *idmap, struct dentry *dentry,* update c/mtime in shrink case below */ if (!shrink) - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode, +inode_set_ctime_current (inode));if (shrink) ext4_fc_track_range(handle, inode,
fs/ext4/ioctl.c +11 -2
@@ -312,13 +312,22 @@ static void swap_inode_data(struct inode *inode1, struct inode *inode2)struct ext4_inode_info *ei1;struct ext4_inode_info *ei2;unsigned long tmp; +struct timespec64 ts1, ts2; ei1 =EXT4_I (inode1); ei2 =EXT4_I (inode2);swap (inode1->i_version, inode2->i_version); -swap (inode1->i_atime, inode2->i_atime); -swap (inode1->i_mtime, inode2->i_mtime); + + ts1 =inode_get_atime (inode1); + ts2 =inode_get_atime (inode2); +inode_set_atime_to_ts (inode1, ts2); +inode_set_atime_to_ts (inode2, ts1); + + ts1 =inode_get_mtime (inode1); + ts2 =inode_get_mtime (inode2); +inode_set_mtime_to_ts (inode1, ts2); +inode_set_mtime_to_ts (inode2, ts1);memswap (ei1->i_data, ei2->i_data,sizeof (ei1->i_data)); tmp = ei1->i_flags &EXT4_FL_SHOULD_SWAP ;
fs/ext4/namei.c +5 -5
@@ -2207,7 +2207,7 @@ static int add_dirent_to_buf(handle_t *handle, struct ext4_filename *fname,* happen is that the times are slightly out of date * and/or different from the directory change time. */ - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));ext4_update_dx_flag (dir);inode_inc_iversion (dir); err2 =ext4_mark_inode_dirty (handle, dir);
@@ -3202,7 +3202,7 @@ static int ext4_rmdir(struct inode *dir, struct dentry *dentry)* recovery. */ inode->i_size =0 ;ext4_orphan_add (handle, inode); - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));inode_set_ctime_current (inode); retval =ext4_mark_inode_dirty (handle, inode);if (retval)
@@ -3277,7 +3277,7 @@ int __ext4_unlink(struct inode *dir, const struct qstr *d_name, retval =ext4_delete_entry (handle, dir, de, bh);if (retval) goto out_handle; - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));ext4_update_dx_flag (dir); retval =ext4_mark_inode_dirty (handle, dir);if (retval)
@@ -3648,7 +3648,7 @@ static int ext4_setent(handle_t *handle, struct ext4_renament *ent,if (ext4_has_feature_filetype (ent->dir->i_sb)) ent->de->file_type = file_type;inode_inc_iversion (ent->dir); - ent->dir->i_mtime =inode_set_ctime_current (ent->dir); +inode_set_mtime_to_ts (ent->dir,inode_set_ctime_current (ent->dir)); retval =ext4_mark_inode_dirty (handle, ent->dir);BUFFER_TRACE (ent->bh,"call ext4_handle_dirty_metadata" );if (!ent->inlined) {
@@ -3963,7 +3963,7 @@ static int ext4_rename(struct mnt_idmap *idmap, struct inode *old_dir,ext4_dec_count (new.inode);inode_set_ctime_current (new.inode); } - old.dir->i_mtime =inode_set_ctime_current (old.dir); +inode_set_mtime_to_ts (old.dir,inode_set_ctime_current (old.dir));ext4_update_dx_flag (old.dir);if (old.dir_bh) { retval =ext4_rename_dir_finish (handle, &old, new.dir->i_ino);
fs/ext4/super.c +1 -1
@@ -7136,7 +7136,7 @@ static int ext4_quota_off(struct super_block *sb, int type) }EXT4_I (inode)->i_flags &= ~(EXT4_NOATIME_FL |EXT4_IMMUTABLE_FL );inode_set_flags (inode,0 ,S_NOATIME |S_IMMUTABLE ); - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode)); err =ext4_mark_inode_dirty (handle, inode);ext4_journal_stop (handle); out_unlock:
fs/ext4/xattr.c +4 -4
@@ -356,7 +356,7 @@ ext4_xattr_inode_hash(struct ext4_sb_info *sbi, const void *buffer, size_t size)static u64 ext4_xattr_inode_get_ref (struct inode *ea_inode) { -return ((u64 )inode_get_ctime (ea_inode).tv_sec <<32 ) | +return ((u64 )inode_get_ctime_sec (ea_inode) <<32 ) | (u32 )inode_peek_iversion_raw (ea_inode); }
@@ -368,12 +368,12 @@ static void ext4_xattr_inode_set_ref(struct inode *ea_inode, u64 ref_count)static u32 ext4_xattr_inode_get_hash (struct inode *ea_inode) { -return (u32 )ea_inode->i_atime.tv_sec; +return (u32 )inode_get_atime_sec (ea_inode); }static void ext4_xattr_inode_set_hash (struct inode *ea_inode,u32 hash) { - ea_inode->i_atime.tv_sec = hash; +inode_set_atime (ea_inode, hash,0 ); }/*
@@ -418,7 +418,7 @@ static int ext4_xattr_inode_read(struct inode *ea_inode, void *buf, size_t size)return ret; } -#define EXT4_XATTR_INODE_GET_PARENT (inode) ((__u32)(inode)->i_mtime.tv_sec) +#define EXT4_XATTR_INODE_GET_PARENT (inode) ((__u32)(inode_get_mtime_sec(inode)))static int ext4_xattr_inode_iget (struct inode *parent,unsigned long ea_ino,u32 ea_inode_hash,struct inode **ea_inode)
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 36/89 f2fs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/f2fs/dir.c | 6 +++--- fs/f2fs/f2fs.h | 10 ++++++---- fs/f2fs/file.c | 14 +++++++------- fs/f2fs/inline.c | 2 +- fs/f2fs/inode.c | 24 ++++++++++++------------ fs/f2fs/namei.c | 4 ++-- fs/f2fs/recovery.c | 8 ++++---- fs/f2fs/super.c | 2 +- 8 files changed, 36 insertions(+), 34 deletions(-)
fs/f2fs/dir.c +3 -3
@@ -455,7 +455,7 @@ void f2fs_set_link(struct inode *dir, struct f2fs_dir_entry *de, de->file_type =fs_umode_to_ftype (inode->i_mode);set_page_dirty (page); - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));f2fs_mark_inode_dirty_sync (dir, false);f2fs_put_page (page,1 ); }
@@ -609,7 +609,7 @@ void f2fs_update_parent_metadata(struct inode *dir, struct inode *inode,f2fs_i_links_write (dir, true);clear_inode_flag (inode,FI_NEW_INODE ); } - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));f2fs_mark_inode_dirty_sync (dir, false);if (F2FS_I (dir)->i_current_depth != current_depth)
@@ -919,7 +919,7 @@ void f2fs_delete_entry(struct f2fs_dir_entry *dentry, struct page *page, }f2fs_put_page (page,1 ); - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));f2fs_mark_inode_dirty_sync (dir, false);if (inode)
fs/f2fs/f2fs.h +6 -4
@@ -3318,13 +3318,15 @@ static inline void clear_file(struct inode *inode, int type)static inline bool f2fs_is_time_consistent (struct inode *inode) { -struct timespec64 ctime =inode_get_ctime (inode); +struct timespec64 ts =inode_get_atime (inode); -if (!timespec64_equal (F2FS_I (inode)->i_disk_time, &inode->i_atime)) +if (!timespec64_equal (F2FS_I (inode)->i_disk_time, &ts))return false; -if (!timespec64_equal (F2FS_I (inode)->i_disk_time +1 , &ctime)) + ts =inode_get_ctime (inode); +if (!timespec64_equal (F2FS_I (inode)->i_disk_time +1 , &ts))return false; -if (!timespec64_equal (F2FS_I (inode)->i_disk_time +2 , &inode->i_mtime)) + ts =inode_get_mtime (inode); +if (!timespec64_equal (F2FS_I (inode)->i_disk_time +2 , &ts))return false;return true; }
fs/f2fs/file.c +7 -7
@@ -798,7 +798,7 @@ int f2fs_truncate(struct inode *inode)if (err)return err; - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode));f2fs_mark_inode_dirty_sync (inode, false);return 0 ; }
@@ -905,9 +905,9 @@ static void __setattr_copy(struct mnt_idmap *idmap,i_uid_update (idmap, attr, inode);i_gid_update (idmap, attr, inode);if (ia_valid &ATTR_ATIME ) - inode->i_atime = attr->ia_atime; +inode_set_atime_to_ts (inode, attr->ia_atime);if (ia_valid &ATTR_MTIME ) - inode->i_mtime = attr->ia_mtime; +inode_set_mtime_to_ts (inode, attr->ia_mtime);if (ia_valid &ATTR_CTIME )inode_set_ctime_to_ts (inode, attr->ia_ctime);if (ia_valid &ATTR_MODE ) {
@@ -1012,7 +1012,7 @@ int f2fs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,return err;spin_lock (&F2FS_I (inode)->i_size_lock); - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode));F2FS_I (inode)->last_disk_size =i_size_read (inode);spin_unlock (&F2FS_I (inode)->i_size_lock); }
@@ -1840,7 +1840,7 @@ static long f2fs_fallocate(struct file *file, int mode, }if (!ret) { - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode));f2fs_mark_inode_dirty_sync (inode, false);f2fs_update_time (F2FS_I_SB (inode),REQ_TIME ); }
@@ -2888,10 +2888,10 @@ static int f2fs_move_file_range(struct file *file_in, loff_t pos_in,if (ret) goto out_unlock; - src->i_mtime =inode_set_ctime_current (src); +inode_set_mtime_to_ts (src,inode_set_ctime_current (src));f2fs_mark_inode_dirty_sync (src, false);if (src != dst) { - dst->i_mtime =inode_set_ctime_current (dst); +inode_set_mtime_to_ts (dst,inode_set_ctime_current (dst));f2fs_mark_inode_dirty_sync (dst, false); }f2fs_update_time (sbi,REQ_TIME );
fs/f2fs/inline.c +1 -1
@@ -699,7 +699,7 @@ void f2fs_delete_inline_entry(struct f2fs_dir_entry *dentry, struct page *page,set_page_dirty (page);f2fs_put_page (page,1 ); - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));f2fs_mark_inode_dirty_sync (dir, false);if (inode)
fs/f2fs/inode.c +12 -12
@@ -386,9 +386,9 @@ static void init_idisk_time(struct inode *inode) {struct f2fs_inode_info *fi =F2FS_I (inode); - fi->i_disk_time[0 ] = inode->i_atime; + fi->i_disk_time[0 ] =inode_get_atime (inode); fi->i_disk_time[1 ] =inode_get_ctime (inode); - fi->i_disk_time[2 ] = inode->i_mtime; + fi->i_disk_time[2 ] =inode_get_mtime (inode); }static int do_read_inode (struct inode *inode)
@@ -417,12 +417,12 @@ static int do_read_inode(struct inode *inode) inode->i_size =le64_to_cpu (ri->i_size); inode->i_blocks =SECTOR_FROM_BLOCK (le64_to_cpu (ri->i_blocks) -1 ); - inode->i_atime.tv_sec =le64_to_cpu (ri->i_atime); +inode_set_atime (inode,le64_to_cpu (ri->i_atime), +le32_to_cpu (ri->i_atime_nsec));inode_set_ctime (inode,le64_to_cpu (ri->i_ctime),le32_to_cpu (ri->i_ctime_nsec)); - inode->i_mtime.tv_sec =le64_to_cpu (ri->i_mtime); - inode->i_atime.tv_nsec =le32_to_cpu (ri->i_atime_nsec); - inode->i_mtime.tv_nsec =le32_to_cpu (ri->i_mtime_nsec); +inode_set_mtime (inode,le64_to_cpu (ri->i_mtime), +le32_to_cpu (ri->i_mtime_nsec)); inode->i_generation =le32_to_cpu (ri->i_generation);if (S_ISDIR (inode->i_mode)) fi->i_current_depth =le32_to_cpu (ri->i_current_depth);
@@ -698,12 +698,12 @@ void f2fs_update_inode(struct inode *inode, struct page *node_page) }set_raw_inline (inode, ri); - ri->i_atime =cpu_to_le64 (inode->i_atime.tv_sec); - ri->i_ctime =cpu_to_le64 (inode_get_ctime (inode).tv_sec); - ri->i_mtime =cpu_to_le64 (inode->i_mtime.tv_sec); - ri->i_atime_nsec =cpu_to_le32 (inode->i_atime.tv_nsec); - ri->i_ctime_nsec =cpu_to_le32 (inode_get_ctime (inode).tv_nsec); - ri->i_mtime_nsec =cpu_to_le32 (inode->i_mtime.tv_nsec); + ri->i_atime =cpu_to_le64 (inode_get_atime_sec (inode)); + ri->i_ctime =cpu_to_le64 (inode_get_ctime_sec (inode)); + ri->i_mtime =cpu_to_le64 (inode_get_mtime_sec (inode)); + ri->i_atime_nsec =cpu_to_le32 (inode_get_atime_nsec (inode)); + ri->i_ctime_nsec =cpu_to_le32 (inode_get_ctime_nsec (inode)); + ri->i_mtime_nsec =cpu_to_le32 (inode_get_mtime_nsec (inode));if (S_ISDIR (inode->i_mode)) ri->i_current_depth =cpu_to_le32 (F2FS_I (inode)->i_current_depth);
fs/f2fs/namei.c +2 -2
@@ -243,8 +243,8 @@ static struct inode *f2fs_new_inode(struct mnt_idmap *idmap, inode->i_ino = ino; inode->i_blocks =0 ; - inode->i_mtime = inode->i_atime =inode_set_ctime_current (inode); -F2FS_I (inode)->i_crtime = inode->i_mtime; +simple_inode_init_ts (inode); +F2FS_I (inode)->i_crtime =inode_get_mtime (inode); inode->i_generation =get_random_u32 ();if (S_ISDIR (inode->i_mode))
fs/f2fs/recovery.c +4 -4
@@ -320,12 +320,12 @@ static int recover_inode(struct inode *inode, struct page *page) }f2fs_i_size_write (inode,le64_to_cpu (raw->i_size)); - inode->i_atime.tv_sec =le64_to_cpu (raw->i_atime); +inode_set_atime (inode,le64_to_cpu (raw->i_atime), +le32_to_cpu (raw->i_atime_nsec));inode_set_ctime (inode,le64_to_cpu (raw->i_ctime),le32_to_cpu (raw->i_ctime_nsec)); - inode->i_mtime.tv_sec =le64_to_cpu (raw->i_mtime); - inode->i_atime.tv_nsec =le32_to_cpu (raw->i_atime_nsec); - inode->i_mtime.tv_nsec =le32_to_cpu (raw->i_mtime_nsec); +inode_set_mtime (inode,le64_to_cpu (raw->i_mtime), +le32_to_cpu (raw->i_mtime_nsec));F2FS_I (inode)->i_advise = raw->i_advise;F2FS_I (inode)->i_flags =le32_to_cpu (raw->i_flags);
fs/f2fs/super.c +1 -1
@@ -2758,7 +2758,7 @@ static ssize_t f2fs_quota_write(struct super_block *sb, int type,if (len == towrite)return err; - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode));f2fs_mark_inode_dirty_sync (inode, false);return len - towrite; }
Signature · 8 lines
2.41.0 _______________________________________________ Linux-f2fs-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
Jeff Layton
maintainerPATCH v2 37/89 fat: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/fat/inode.c | 25 +++++++++++++++++-------- fs/fat/misc.c | 6 +++--- 2 files changed, 20 insertions(+), 11 deletions(-)
fs/fat/inode.c +17 -8
@@ -512,6 +512,7 @@ static int fat_validate_dir(struct inode *dir)int fat_fill_inode (struct inode *inode,struct msdos_dir_entry *de) {struct msdos_sb_info *sbi =MSDOS_SB (inode->i_sb); +struct timespec64 mtime;int error;MSDOS_I (inode)->i_pos =0 ;
@@ -561,14 +562,18 @@ int fat_fill_inode(struct inode *inode, struct msdos_dir_entry *de) inode->i_blocks = ((inode->i_size + (sbi->cluster_size -1 )) & ~((loff_t )sbi->cluster_size -1 )) >>9 ; -fat_time_fat2unix (sbi, &inode->i_mtime, de->time, de->date,0 ); -inode_set_ctime_to_ts (inode, inode->i_mtime); +fat_time_fat2unix (sbi, &mtime, de->time, de->date,0 ); +inode_set_mtime_to_ts (inode, mtime); +inode_set_ctime_to_ts (inode, mtime);if (sbi->options.isvfat) { -fat_time_fat2unix (sbi, &inode->i_atime,0 , de->adate,0 ); +struct timespec64 atime; + +fat_time_fat2unix (sbi, &atime,0 , de->adate,0 ); +inode_set_atime_to_ts (inode, atime);fat_time_fat2unix (sbi, &MSDOS_I (inode)->i_crtime, de->ctime, de->cdate, de->ctime_cs); }else - inode->i_atime =fat_truncate_atime (sbi, &inode->i_mtime); +inode_set_atime_to_ts (inode,fat_truncate_atime (sbi, &mtime));return 0 ; }
@@ -849,6 +854,7 @@ static int __fat_write_inode(struct inode *inode, int wait)struct msdos_sb_info *sbi =MSDOS_SB (sb);struct buffer_head *bh;struct msdos_dir_entry *raw_entry; +struct timespec64 mtime;loff_t i_pos;sector_t blocknr;int err, offset;
@@ -882,12 +888,14 @@ static int __fat_write_inode(struct inode *inode, int wait) raw_entry->size =cpu_to_le32 (inode->i_size); raw_entry->attr =fat_make_attrs (inode);fat_set_start (raw_entry,MSDOS_I (inode)->i_logstart); -fat_time_unix2fat (sbi, &inode->i_mtime, &raw_entry->time, +fat_time_unix2fat (sbi, &mtime, &raw_entry->time, &raw_entry->date,NULL ); +inode_set_mtime_to_ts (inode, mtime);if (sbi->options.isvfat) { +struct timespec64 ts =inode_get_atime (inode);__le16 atime; -fat_time_unix2fat (sbi, &inode->i_atime, &atime, - &raw_entry->adate,NULL ); + +fat_time_unix2fat (sbi, &ts, &atime, &raw_entry->adate,NULL );fat_time_unix2fat (sbi, &MSDOS_I (inode)->i_crtime, &raw_entry->ctime, &raw_entry->cdate, &raw_entry->ctime_cs); }
@@ -1407,7 +1415,8 @@ static int fat_read_root(struct inode *inode)MSDOS_I (inode)->mmu_private = inode->i_size;fat_save_attrs (inode,ATTR_DIR ); - inode->i_mtime = inode->i_atime =inode_set_ctime (inode,0 ,0 ); +inode_set_mtime_to_ts (inode, +inode_set_atime_to_ts (inode,inode_set_ctime (inode,0 ,0 )));set_nlink (inode,fat_subdirs (inode)+2 );return 0 ;
fs/fat/misc.c +3 -3
@@ -325,15 +325,15 @@ int fat_truncate_time(struct inode *inode, struct timespec64 *now, int flags) }if (flags &S_ATIME ) - inode->i_atime =fat_truncate_atime (sbi, now); +inode_set_atime_to_ts (inode,fat_truncate_atime (sbi, now));/* * ctime and mtime share the same on-disk field, and should be * identical in memory. all mtime updates will be applied to ctime, * but ctime updates are ignored. */ if (flags &S_MTIME ) - inode->i_mtime =inode_set_ctime_to_ts (inode, -fat_truncate_mtime (sbi, now)); +inode_set_mtime_to_ts (inode, +inode_set_ctime_to_ts (inode,fat_truncate_mtime (sbi, now)));return 0 ; }
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 38/89 freevxfs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/freevxfs/vxfs_inode.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
fs/freevxfs/vxfs_inode.c +2 -4
@@ -109,11 +109,9 @@ static inline void dip2vip_cpy(struct vxfs_sb_info *sbi,set_nlink (inode, vip->vii_nlink); inode->i_size = vip->vii_size; - inode->i_atime.tv_sec = vip->vii_atime; +inode_set_atime (inode, vip->vii_atime,0 );inode_set_ctime (inode, vip->vii_ctime,0 ); - inode->i_mtime.tv_sec = vip->vii_mtime; - inode->i_atime.tv_nsec =0 ; - inode->i_mtime.tv_nsec =0 ; +inode_set_mtime (inode, vip->vii_mtime,0 ); inode->i_blocks = vip->vii_blocks; inode->i_generation = vip->vii_gen;
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 39/89 fuse: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/fuse/control.c | 2 +- fs/fuse/dir.c | 10 +++++----- fs/fuse/inode.c | 29 ++++++++++++++--------------- fs/fuse/readdir.c | 6 ++++-- 4 files changed, 24 insertions(+), 23 deletions(-)
fs/fuse/control.c +1 -1
@@ -235,7 +235,7 @@ static struct dentry *fuse_ctl_add_dentry(struct dentry *parent, inode->i_mode = mode; inode->i_uid = fc->user_id; inode->i_gid = fc->group_id; - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode);/* setting ->i_op to NULL is not allowed */ if (iop) inode->i_op = iop;
fs/fuse/dir.c +5 -5
@@ -1812,12 +1812,12 @@ int fuse_flush_times(struct inode *inode, struct fuse_file *ff)memset (&outarg,0 ,sizeof (outarg)); inarg.valid =FATTR_MTIME ; - inarg.mtime = inode->i_mtime.tv_sec; - inarg.mtimensec = inode->i_mtime.tv_nsec; + inarg.mtime =inode_get_mtime_sec (inode); + inarg.mtimensec =inode_get_mtime_nsec (inode);if (fm->fc->minor >=23 ) { inarg.valid |=FATTR_CTIME ; - inarg.ctime =inode_get_ctime (inode).tv_sec; - inarg.ctimensec =inode_get_ctime (inode).tv_nsec; + inarg.ctime =inode_get_ctime_sec (inode); + inarg.ctimensec =inode_get_ctime_nsec (inode); }if (ff) { inarg.valid |=FATTR_FH ;
@@ -1956,7 +1956,7 @@ int fuse_do_setattr(struct dentry *dentry, struct iattr *attr,/* the kernel maintains i_mtime locally */ if (trust_local_cmtime) {if (attr->ia_valid &ATTR_MTIME ) - inode->i_mtime = attr->ia_mtime; +inode_set_mtime_to_ts (inode, attr->ia_mtime);if (attr->ia_valid &ATTR_CTIME )inode_set_ctime_to_ts (inode, attr->ia_ctime);/* FIXME: clear I_DIRTY_SYNC? */
fs/fuse/inode.c +14 -15
@@ -188,12 +188,10 @@ void fuse_change_attributes_common(struct inode *inode, struct fuse_attr *attr, attr->mtimensec =min_t (u32, attr->mtimensec,NSEC_PER_SEC -1 ); attr->ctimensec =min_t (u32, attr->ctimensec,NSEC_PER_SEC -1 ); - inode->i_atime.tv_sec = attr->atime; - inode->i_atime.tv_nsec = attr->atimensec; +inode_set_atime (inode, attr->atime, attr->atimensec);/* mtime from server may be stale due to local buffered write */ if (!(cache_mask &STATX_MTIME )) { - inode->i_mtime.tv_sec = attr->mtime; - inode->i_mtime.tv_nsec = attr->mtimensec; +inode_set_mtime (inode, attr->mtime, attr->mtimensec); }if (!(cache_mask &STATX_CTIME )) {inode_set_ctime (inode, attr->ctime, attr->ctimensec);
@@ -276,12 +274,12 @@ void fuse_change_attributes(struct inode *inode, struct fuse_attr *attr, attr->size =i_size_read (inode);if (cache_mask &STATX_MTIME ) { - attr->mtime = inode->i_mtime.tv_sec; - attr->mtimensec = inode->i_mtime.tv_nsec; + attr->mtime =inode_get_mtime_sec (inode); + attr->mtimensec =inode_get_mtime_nsec (inode); }if (cache_mask &STATX_CTIME ) { - attr->ctime =inode_get_ctime (inode).tv_sec; - attr->ctimensec =inode_get_ctime (inode).tv_nsec; + attr->ctime =inode_get_ctime_sec (inode); + attr->ctimensec =inode_get_ctime_nsec (inode); } if ((attr_version != 0 && fi->attr_version > attr_version) ||
@@ -290,7 +288,7 @@ void fuse_change_attributes(struct inode *inode, struct fuse_attr *attr,return ; } - old_mtime = inode->i_mtime; + old_mtime =inode_get_mtime (inode);fuse_change_attributes_common (inode, attr, sx, attr_valid, cache_mask); oldsize = inode->i_size;
@@ -337,8 +335,7 @@ static void fuse_init_inode(struct inode *inode, struct fuse_attr *attr, { inode->i_mode = attr->mode &S_IFMT ; inode->i_size = attr->size; - inode->i_mtime.tv_sec = attr->mtime; - inode->i_mtime.tv_nsec = attr->mtimensec; +inode_set_mtime (inode, attr->mtime, attr->mtimensec);inode_set_ctime (inode, attr->ctime, attr->ctimensec);if (S_ISREG (inode->i_mode)) {fuse_init_common (inode);
@@ -1423,17 +1420,19 @@ EXPORT_SYMBOL_GPL(fuse_dev_free);static void fuse_fill_attr_from_inode (struct fuse_attr *attr,const struct fuse_inode *fi) { +struct timespec64 atime =inode_get_atime (&fi->inode); +struct timespec64 mtime =inode_get_mtime (&fi->inode);struct timespec64 ctime =inode_get_ctime (&fi->inode); *attr = (struct fuse_attr ){ .ino = fi->inode.i_ino, .size = fi->inode.i_size, .blocks = fi->inode.i_blocks, - .atime = fi->inode.i_atime.tv_sec, - .mtime = fi->inode.i_mtime.tv_sec, + .atime = atime.tv_sec, + .mtime = mtime.tv_sec, .ctime = ctime.tv_sec, - .atimensec = fi->inode.i_atime.tv_nsec, - .mtimensec = fi->inode.i_mtime.tv_nsec, + .atimensec = atime.tv_nsec, + .mtimensec = mtime.tv_nsec, .ctimensec = ctime.tv_nsec, .mode = fi->inode.i_mode, .nlink = fi->inode.i_nlink,
fs/fuse/readdir.c +4 -2
@@ -476,7 +476,7 @@ static int fuse_readdir_cached(struct file *file, struct dir_context *ctx)if (!fi->rdc.cached) {/* Starting cache? Set cache mtime. */ if (!ctx->pos && !fi->rdc.size) { - fi->rdc.mtime = inode->i_mtime; + fi->rdc.mtime =inode_get_mtime (inode); fi->rdc.iversion =inode_query_iversion (inode); }spin_unlock (&fi->rdc.lock);
@@ -488,8 +488,10 @@ static int fuse_readdir_cached(struct file *file, struct dir_context *ctx)* changed, and reset the cache if so. */ if (!ctx->pos) { +struct timespec64 mtime =inode_get_mtime (inode); +if (inode_peek_iversion (inode) != fi->rdc.iversion || - !timespec64_equal (&fi->rdc.mtime, &inode->i_mtime)) { + !timespec64_equal (&fi->rdc.mtime, &mtime)) {fuse_rdc_reset (inode); goto retry_locked; }
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 40/89 gfs2: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/gfs2/bmap.c | 10 +++++----- fs/gfs2/dir.c | 10 +++++----- fs/gfs2/glops.c | 11 ++++++----- fs/gfs2/inode.c | 7 ++++--- fs/gfs2/quota.c | 2 +- fs/gfs2/super.c | 12 ++++++------ 6 files changed, 27 insertions(+), 25 deletions(-)
fs/gfs2/bmap.c +5 -5
@@ -1385,7 +1385,7 @@ static int trunc_start(struct inode *inode, u64 newsize) ip->i_diskflags |=GFS2_DIF_TRUNC_IN_PROG ;i_size_write (inode, newsize); - ip->i_inode.i_mtime =inode_set_ctime_current (&ip->i_inode); +inode_set_mtime_to_ts (&ip->i_inode,inode_set_ctime_current (&ip->i_inode));gfs2_dinode_out (ip, dibh->b_data);if (journaled)
@@ -1582,7 +1582,7 @@ static int sweep_bh_for_rgrps(struct gfs2_inode *ip, struct gfs2_holder *rd_gh,/* Every transaction boundary, we rewrite the dinode to keep its di_blocks current in case of failure. */ - ip->i_inode.i_mtime =inode_set_ctime_current (&ip->i_inode); +inode_set_mtime_to_ts (&ip->i_inode,inode_set_ctime_current (&ip->i_inode));gfs2_trans_add_meta (ip->i_gl, dibh);gfs2_dinode_out (ip, dibh->b_data);brelse (dibh);
@@ -1948,7 +1948,7 @@ static int punch_hole(struct gfs2_inode *ip, u64 offset, u64 length)gfs2_statfs_change (sdp,0 , +btotal,0 );gfs2_quota_change (ip, -(s64 )btotal, ip->i_inode.i_uid, ip->i_inode.i_gid); - ip->i_inode.i_mtime =inode_set_ctime_current (&ip->i_inode); +inode_set_mtime_to_ts (&ip->i_inode,inode_set_ctime_current (&ip->i_inode));gfs2_trans_add_meta (ip->i_gl, dibh);gfs2_dinode_out (ip, dibh->b_data);up_write (&ip->i_rw_mutex);
@@ -1991,7 +1991,7 @@ static int trunc_end(struct gfs2_inode *ip)gfs2_buffer_clear_tail (dibh,sizeof (struct gfs2_dinode ));gfs2_ordered_del_inode (ip); } - ip->i_inode.i_mtime =inode_set_ctime_current (&ip->i_inode); +inode_set_mtime_to_ts (&ip->i_inode,inode_set_ctime_current (&ip->i_inode)); ip->i_diskflags &= ~GFS2_DIF_TRUNC_IN_PROG ;gfs2_trans_add_meta (ip->i_gl, dibh);
@@ -2092,7 +2092,7 @@ static int do_grow(struct inode *inode, u64 size) goto do_end_trans;truncate_setsize (inode, size); - ip->i_inode.i_mtime =inode_set_ctime_current (&ip->i_inode); +inode_set_mtime_to_ts (&ip->i_inode,inode_set_ctime_current (&ip->i_inode));gfs2_trans_add_meta (ip->i_gl, dibh);gfs2_dinode_out (ip, dibh->b_data);brelse (dibh);
fs/gfs2/dir.c +5 -5
@@ -130,7 +130,7 @@ static int gfs2_dir_write_stuffed(struct gfs2_inode *ip, const char *buf,memcpy (dibh->b_data + offset +sizeof (struct gfs2_dinode ), buf, size);if (ip->i_inode.i_size < offset + size)i_size_write (&ip->i_inode, offset + size); - ip->i_inode.i_mtime =inode_set_ctime_current (&ip->i_inode); +inode_set_mtime_to_ts (&ip->i_inode,inode_set_ctime_current (&ip->i_inode));gfs2_dinode_out (ip, dibh->b_data);brelse (dibh);
@@ -227,7 +227,7 @@ static int gfs2_dir_write_data(struct gfs2_inode *ip, const char *buf,if (ip->i_inode.i_size < offset + copied)i_size_write (&ip->i_inode, offset + copied); - ip->i_inode.i_mtime =inode_set_ctime_current (&ip->i_inode); +inode_set_mtime_to_ts (&ip->i_inode,inode_set_ctime_current (&ip->i_inode));gfs2_trans_add_meta (ip->i_gl, dibh);gfs2_dinode_out (ip, dibh->b_data);
@@ -1825,7 +1825,7 @@ int gfs2_dir_add(struct inode *inode, const struct qstr *name, da->bh =NULL ;brelse (bh); ip->i_entries++; - ip->i_inode.i_mtime = tv; +inode_set_mtime_to_ts (&ip->i_inode, tv);if (S_ISDIR (nip->i_inode.i_mode))inc_nlink (&ip->i_inode);mark_inode_dirty (inode);
@@ -1911,7 +1911,7 @@ int gfs2_dir_del(struct gfs2_inode *dip, const struct dentry *dentry)if (!dip->i_entries)gfs2_consist_inode (dip); dip->i_entries--; - dip->i_inode.i_mtime = tv; +inode_set_mtime_to_ts (&dip->i_inode, tv);if (d_is_dir (dentry))drop_nlink (&dip->i_inode);mark_inode_dirty (&dip->i_inode);
@@ -1952,7 +1952,7 @@ int gfs2_dir_mvino(struct gfs2_inode *dip, const struct qstr *filename, dent->de_type =cpu_to_be16 (new_type);brelse (bh); - dip->i_inode.i_mtime =inode_set_ctime_current (&dip->i_inode); +inode_set_mtime_to_ts (&dip->i_inode,inode_set_ctime_current (&dip->i_inode));mark_inode_dirty_sync (&dip->i_inode);return 0 ; }
fs/gfs2/glops.c +6 -5
@@ -403,7 +403,7 @@ static int gfs2_dinode_in(struct gfs2_inode *ip, const void *buf) {struct gfs2_sbd *sdp =GFS2_SB (&ip->i_inode);const struct gfs2_dinode *str = buf; -struct timespec64 atime; +struct timespec64 atime, iatime;u16 height, depth;umode_t mode =be32_to_cpu (str->di_mode);struct inode *inode = &ip->i_inode;
@@ -433,10 +433,11 @@ static int gfs2_dinode_in(struct gfs2_inode *ip, const void *buf)gfs2_set_inode_blocks (inode,be64_to_cpu (str->di_blocks)); atime.tv_sec =be64_to_cpu (str->di_atime); atime.tv_nsec =be32_to_cpu (str->di_atime_nsec); -if (timespec64_compare (&inode->i_atime, &atime) <0 ) - inode->i_atime = atime; - inode->i_mtime.tv_sec =be64_to_cpu (str->di_mtime); - inode->i_mtime.tv_nsec =be32_to_cpu (str->di_mtime_nsec); + iatime =inode_get_atime (inode); +if (timespec64_compare (&iatime, &atime) <0 ) +inode_set_atime_to_ts (inode, atime); +inode_set_mtime (inode,be64_to_cpu (str->di_mtime), +be32_to_cpu (str->di_mtime_nsec));inode_set_ctime (inode,be64_to_cpu (str->di_ctime),be32_to_cpu (str->di_ctime_nsec));
fs/gfs2/inode.c +4 -3
@@ -185,8 +185,9 @@ struct inode *gfs2_inode_lookup(struct super_block *sb, unsigned int type,set_bit (GLF_INSTANTIATE_NEEDED , &ip->i_gl->gl_flags);/* Lowest possible timestamp; will be overwritten in gfs2_dinode_in. */ - inode->i_atime.tv_sec =1LL << (8 *sizeof (inode->i_atime.tv_sec) -1 ); - inode->i_atime.tv_nsec =0 ; +inode_set_atime (inode, +1LL << (8 *sizeof (inode_get_atime_sec (inode)) -1 ), +0 );glock_set_object (ip->i_gl, ip);
@@ -696,7 +697,7 @@ static int gfs2_create_inode(struct inode *dir, struct dentry *dentry,set_nlink (inode,S_ISDIR (mode) ?2 :1 ); inode->i_rdev = dev; inode->i_size = size; - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode);munge_mode_uid_gid (dip, inode);check_and_update_goal (dip); ip->i_goal = dip->i_goal;
fs/gfs2/quota.c +1 -1
@@ -910,7 +910,7 @@ static int gfs2_adjust_quota(struct gfs2_sbd *sdp, loff_t loc, size = loc +sizeof (struct gfs2_quota );if (size > inode->i_size)i_size_write (inode, size); - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode));mark_inode_dirty (inode);set_bit (QDF_REFRESH , &qd->qd_flags); }
fs/gfs2/super.c +6 -6
@@ -410,9 +410,9 @@ void gfs2_dinode_out(const struct gfs2_inode *ip, void *buf) str->di_nlink =cpu_to_be32 (inode->i_nlink); str->di_size =cpu_to_be64 (i_size_read (inode)); str->di_blocks =cpu_to_be64 (gfs2_get_inode_blocks (inode)); - str->di_atime =cpu_to_be64 (inode->i_atime.tv_sec); - str->di_mtime =cpu_to_be64 (inode->i_mtime.tv_sec); - str->di_ctime =cpu_to_be64 (inode_get_ctime (inode).tv_sec); + str->di_atime =cpu_to_be64 (inode_get_atime_sec (inode)); + str->di_mtime =cpu_to_be64 (inode_get_mtime_sec (inode)); + str->di_ctime =cpu_to_be64 (inode_get_ctime_sec (inode)); str->di_goal_meta =cpu_to_be64 (ip->i_goal); str->di_goal_data =cpu_to_be64 (ip->i_goal);
@@ -427,9 +427,9 @@ void gfs2_dinode_out(const struct gfs2_inode *ip, void *buf) str->di_entries =cpu_to_be32 (ip->i_entries); str->di_eattr =cpu_to_be64 (ip->i_eattr); - str->di_atime_nsec =cpu_to_be32 (inode->i_atime.tv_nsec); - str->di_mtime_nsec =cpu_to_be32 (inode->i_mtime.tv_nsec); - str->di_ctime_nsec =cpu_to_be32 (inode_get_ctime (inode).tv_nsec); + str->di_atime_nsec =cpu_to_be32 (inode_get_atime_nsec (inode)); + str->di_mtime_nsec =cpu_to_be32 (inode_get_mtime_nsec (inode)); + str->di_ctime_nsec =cpu_to_be32 (inode_get_ctime_nsec (inode)); }/**
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 41/89 hfs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/hfs/catalog.c | 8 ++++---- fs/hfs/inode.c | 16 ++++++++-------- fs/hfs/sysdep.c | 10 ++++++---- 3 files changed, 18 insertions(+), 16 deletions(-)
fs/hfs/catalog.c +4 -4
@@ -133,7 +133,7 @@ int hfs_cat_create(u32 cnid, struct inode *dir, const struct qstr *str, struct i goto err1; dir->i_size++; - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));mark_inode_dirty (dir);hfs_find_exit (&fd);return 0 ;
@@ -269,7 +269,7 @@ int hfs_cat_delete(u32 cnid, struct inode *dir, const struct qstr *str) } dir->i_size--; - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));mark_inode_dirty (dir); res =0 ; out:
@@ -337,7 +337,7 @@ int hfs_cat_move(u32 cnid, struct inode *src_dir, const struct qstr *src_name,if (err) goto out; dst_dir->i_size++; - dst_dir->i_mtime =inode_set_ctime_current (dst_dir); +inode_set_mtime_to_ts (dst_dir,inode_set_ctime_current (dst_dir));mark_inode_dirty (dst_dir);/* finally remove the old entry */
@@ -349,7 +349,7 @@ int hfs_cat_move(u32 cnid, struct inode *src_dir, const struct qstr *src_name,if (err) goto out; src_dir->i_size--; - src_dir->i_mtime =inode_set_ctime_current (src_dir); +inode_set_mtime_to_ts (src_dir,inode_set_ctime_current (src_dir));mark_inode_dirty (src_dir); type = entry.type;
fs/hfs/inode.c +8 -8
@@ -200,7 +200,7 @@ struct inode *hfs_new_inode(struct inode *dir, const struct qstr *name, umode_t inode->i_uid =current_fsuid (); inode->i_gid =current_fsgid ();set_nlink (inode,1 ); - inode->i_mtime = inode->i_atime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode);HFS_I (inode)->flags =0 ;HFS_I (inode)->rsrc_inode =NULL ;HFS_I (inode)->fs_blocks =0 ;
@@ -355,8 +355,8 @@ static int hfs_read_inode(struct inode *inode, void *data) inode->i_mode |=S_IWUGO ; inode->i_mode &= ~hsb->s_file_umask; inode->i_mode |=S_IFREG ; - inode->i_atime = inode->i_mtime =inode_set_ctime_to_ts (inode, -hfs_m_to_utime (rec->file.MdDat)); +inode_set_mtime_to_ts (inode, +inode_set_atime_to_ts (inode,inode_set_ctime_to_ts (inode,hfs_m_to_utime (rec->file.MdDat)))); inode->i_op = &hfs_file_inode_operations; inode->i_fop = &hfs_file_operations; inode->i_mapping->a_ops = &hfs_aops;
@@ -366,8 +366,8 @@ static int hfs_read_inode(struct inode *inode, void *data) inode->i_size =be16_to_cpu (rec->dir.Val) +2 ;HFS_I (inode)->fs_blocks =0 ; inode->i_mode =S_IFDIR | (S_IRWXUGO & ~hsb->s_dir_umask); - inode->i_atime = inode->i_mtime =inode_set_ctime_to_ts (inode, -hfs_m_to_utime (rec->dir.MdDat)); +inode_set_mtime_to_ts (inode, +inode_set_atime_to_ts (inode,inode_set_ctime_to_ts (inode,hfs_m_to_utime (rec->dir.MdDat)))); inode->i_op = &hfs_dir_inode_operations; inode->i_fop = &hfs_dir_operations;break ;
@@ -474,7 +474,7 @@ int hfs_write_inode(struct inode *inode, struct writeback_control *wbc) be32_to_cpu(rec.dir.DirID) != inode->i_ino) { } - rec.dir.MdDat =hfs_u_to_mtime (inode->i_mtime); + rec.dir.MdDat =hfs_u_to_mtime (inode_get_mtime (inode)); rec.dir.Val =cpu_to_be16 (inode->i_size -2 ); hfs_bnode_write(fd.bnode, &rec, fd.entryoffset,
@@ -502,7 +502,7 @@ int hfs_write_inode(struct inode *inode, struct writeback_control *wbc)else rec.file.Flags |=HFS_FIL_LOCK ;hfs_inode_write_fork (inode, rec.file.ExtRec, &rec.file.LgLen, &rec.file.PyLen); - rec.file.MdDat =hfs_u_to_mtime (inode->i_mtime); + rec.file.MdDat =hfs_u_to_mtime (inode_get_mtime (inode));hfs_bnode_write (fd.bnode, &rec, fd.entryoffset,sizeof (struct hfs_cat_file ));
@@ -654,7 +654,7 @@ int hfs_inode_setattr(struct mnt_idmap *idmap, struct dentry *dentry,truncate_setsize (inode, attr->ia_size);hfs_file_truncate (inode); - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); }setattr_copy (&nop_mnt_idmap, inode, attr);
fs/hfs/sysdep.c +6 -4
@@ -28,11 +28,13 @@ static int hfs_revalidate_dentry(struct dentry *dentry, unsigned int flags)/* fix up inode on a timezone change */ diff = sys_tz.tz_minuteswest *60 -HFS_I (inode)->tz_secondswest;if (diff) { -struct timespec64 ctime =inode_get_ctime (inode); +struct timespec64 ts =inode_get_ctime (inode); -inode_set_ctime (inode, ctime.tv_sec + diff, ctime.tv_nsec); - inode->i_atime.tv_sec += diff; - inode->i_mtime.tv_sec += diff; +inode_set_ctime (inode, ts.tv_sec + diff, ts.tv_nsec); + ts =inode_get_atime (inode); +inode_set_atime (inode, ts.tv_sec + diff, ts.tv_nsec); + ts =inode_get_mtime (inode); +inode_set_mtime (inode, ts.tv_sec + diff, ts.tv_nsec);HFS_I (inode)->tz_secondswest += diff; }return 1 ;
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 42/89 hfsplus: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/hfsplus/catalog.c | 8 ++++---- fs/hfsplus/inode.c | 22 ++++++++++++---------- 2 files changed, 16 insertions(+), 14 deletions(-)
fs/hfsplus/catalog.c +4 -4
@@ -312,7 +312,7 @@ int hfsplus_create_cat(u32 cnid, struct inode *dir, dir->i_size++;if (S_ISDIR (inode->i_mode))hfsplus_subfolders_inc (dir); - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));hfsplus_mark_inode_dirty (dir,HFSPLUS_I_CAT_DIRTY );hfs_find_exit (&fd);
@@ -417,7 +417,7 @@ int hfsplus_delete_cat(u32 cnid, struct inode *dir, const struct qstr *str) dir->i_size--;if (type ==HFSPLUS_FOLDER )hfsplus_subfolders_dec (dir); - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));hfsplus_mark_inode_dirty (dir,HFSPLUS_I_CAT_DIRTY );if (type ==HFSPLUS_FILE || type ==HFSPLUS_FOLDER ) {
@@ -494,7 +494,7 @@ int hfsplus_rename_cat(u32 cnid, dst_dir->i_size++;if (type ==HFSPLUS_FOLDER )hfsplus_subfolders_inc (dst_dir); - dst_dir->i_mtime =inode_set_ctime_current (dst_dir); +inode_set_mtime_to_ts (dst_dir,inode_set_ctime_current (dst_dir));/* finally remove the old entry */ err = hfsplus_cat_build_key(sb, src_fd.search_key,
@@ -511,7 +511,7 @@ int hfsplus_rename_cat(u32 cnid, src_dir->i_size--;if (type ==HFSPLUS_FOLDER )hfsplus_subfolders_dec (src_dir); - src_dir->i_mtime =inode_set_ctime_current (src_dir); +inode_set_mtime_to_ts (src_dir,inode_set_ctime_current (src_dir));/* remove old thread entry */ hfsplus_cat_build_key_with_cnid (sb, src_fd.search_key, cnid);
fs/hfsplus/inode.c +12 -10
@@ -267,7 +267,7 @@ static int hfsplus_setattr(struct mnt_idmap *idmap, }truncate_setsize (inode, attr->ia_size);hfsplus_file_truncate (inode); - 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);
@@ -392,7 +392,7 @@ struct inode *hfsplus_new_inode(struct super_block *sb, struct inode *dir, inode->i_ino = sbi->next_cnid++;inode_init_owner (&nop_mnt_idmap, inode, dir, mode);set_nlink (inode,1 ); - inode->i_mtime = inode->i_atime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); hip =HFSPLUS_I (inode);INIT_LIST_HEAD (&hip->open_dir_list);
@@ -521,8 +521,9 @@ int hfsplus_cat_read_inode(struct inode *inode, struct hfs_find_data *fd)hfsplus_get_perms (inode, &folder->permissions,1 );set_nlink (inode,1 ); inode->i_size =2 +be32_to_cpu (folder->valence); - inode->i_atime =hfsp_mt2ut (folder->access_date); - inode->i_mtime =hfsp_mt2ut (folder->content_mod_date); +inode_set_atime_to_ts (inode,hfsp_mt2ut (folder->access_date)); +inode_set_mtime_to_ts (inode, +hfsp_mt2ut (folder->content_mod_date));inode_set_ctime_to_ts (inode,hfsp_mt2ut (folder->attribute_mod_date));HFSPLUS_I (inode)->create_date = folder->create_date;
@@ -563,8 +564,9 @@ int hfsplus_cat_read_inode(struct inode *inode, struct hfs_find_data *fd)init_special_inode (inode, inode->i_mode,be32_to_cpu (file->permissions.dev)); } - inode->i_atime =hfsp_mt2ut (file->access_date); - inode->i_mtime =hfsp_mt2ut (file->content_mod_date); +inode_set_atime_to_ts (inode,hfsp_mt2ut (file->access_date)); +inode_set_mtime_to_ts (inode, +hfsp_mt2ut (file->content_mod_date));inode_set_ctime_to_ts (inode,hfsp_mt2ut (file->attribute_mod_date));HFSPLUS_I (inode)->create_date = file->create_date;
@@ -609,8 +611,8 @@ int hfsplus_cat_write_inode(struct inode *inode) sizeof(struct hfsplus_cat_folder));/* simple node checks? */ hfsplus_cat_set_perms (inode, &folder->permissions); - folder->access_date =hfsp_ut2mt (inode->i_atime); - folder->content_mod_date =hfsp_ut2mt (inode->i_mtime); + folder->access_date =hfsp_ut2mt (inode_get_atime (inode)); + folder->content_mod_date =hfsp_ut2mt (inode_get_mtime (inode)); folder->attribute_mod_date =hfsp_ut2mt (inode_get_ctime (inode)); folder->valence =cpu_to_be32 (inode->i_size -2 );if (folder->flags &cpu_to_be16 (HFSPLUS_HAS_FOLDER_COUNT )) {
@@ -644,8 +646,8 @@ int hfsplus_cat_write_inode(struct inode *inode) file->flags |=cpu_to_be16 (HFSPLUS_FILE_LOCKED ); else file->flags &= cpu_to_be16(~HFSPLUS_FILE_LOCKED); - file->access_date =hfsp_ut2mt (inode->i_atime); - file->content_mod_date =hfsp_ut2mt (inode->i_mtime); + file->access_date =hfsp_ut2mt (inode_get_atime (inode)); + file->content_mod_date =hfsp_ut2mt (inode_get_mtime (inode)); file->attribute_mod_date =hfsp_ut2mt (inode_get_ctime (inode));hfs_bnode_write (fd.bnode, &entry, fd.entryoffset,sizeof (struct hfsplus_cat_file ));
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 43/89 hostfs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/hostfs/hostfs_kern.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-)
fs/hostfs/hostfs_kern.c +8 -4
@@ -513,10 +513,14 @@ static int hostfs_inode_update(struct inode *ino, const struct hostfs_stat *st)set_nlink (ino, st->nlink);i_uid_write (ino, st->uid);i_gid_write (ino, st->gid); - ino->i_atime = - (struct timespec64 ){ st->atime.tv_sec, st->atime.tv_nsec }; - ino->i_mtime = - (struct timespec64 ){ st->mtime.tv_sec, st->mtime.tv_nsec }; +inode_set_atime_to_ts (ino, (struct timespec64 ){ + st->atime.tv_sec, + st->atime.tv_nsec, + }); +inode_set_mtime_to_ts (ino, (struct timespec64 ){ + st->mtime.tv_sec, + st->mtime.tv_nsec, + });inode_set_ctime (ino, st->ctime.tv_sec, st->ctime.tv_nsec); ino->i_size = st->size; ino->i_blocks = st->blocks;
Signature · 7 lines
2.41.0 _______________________________________________ linux-um mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-um
Jeff Layton
maintainerPATCH v2 44/89 hpfs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/hpfs/dir.c | 12 +++++++----- fs/hpfs/inode.c | 16 ++++++++-------- fs/hpfs/namei.c | 22 +++++++++++----------- fs/hpfs/super.c | 10 ++++++---- 4 files changed, 32 insertions(+), 28 deletions(-)
fs/hpfs/dir.c +7 -5
@@ -277,14 +277,16 @@ struct dentry *hpfs_lookup(struct inode *dir, struct dentry *dentry, unsigned in* inode. */ -if (!inode_get_ctime (result).tv_sec) { +if (!inode_get_ctime_sec (result)) {time64_t csec =local_to_gmt (dir->i_sb,le32_to_cpu (de->creation_date));inode_set_ctime (result, csec ? csec :1 ,0 ); - result->i_mtime.tv_sec =local_to_gmt (dir->i_sb,le32_to_cpu (de->write_date)); - result->i_mtime.tv_nsec =0 ; - result->i_atime.tv_sec =local_to_gmt (dir->i_sb,le32_to_cpu (de->read_date)); - result->i_atime.tv_nsec =0 ; +inode_set_mtime (result, +local_to_gmt (dir->i_sb,le32_to_cpu (de->write_date)), +0 ); +inode_set_atime (result, +local_to_gmt (dir->i_sb,le32_to_cpu (de->read_date)), +0 ); hpfs_result->i_ea_size =le32_to_cpu (de->ea_size);if (!hpfs_result->i_ea_mode && de->read_only) result->i_mode &= ~0222 ;
fs/hpfs/inode.c +8 -8
@@ -37,8 +37,8 @@ void hpfs_init_inode(struct inode *i) hpfs_inode->i_dirty =0 ;inode_set_ctime (i,0 ,0 ); - i->i_mtime.tv_sec = i->i_mtime.tv_nsec =0 ; - i->i_atime.tv_sec = i->i_atime.tv_nsec =0 ; +inode_set_mtime (i,0 ,0 ); +inode_set_atime (i,0 ,0 ); }void hpfs_read_inode (struct inode *i)
@@ -230,9 +230,9 @@ void hpfs_write_inode_nolock(struct inode *i) }hpfs_write_inode_ea (i, fnode);if (de) { - de->write_date =cpu_to_le32 (gmt_to_local (i->i_sb, i->i_mtime.tv_sec)); - de->read_date =cpu_to_le32 (gmt_to_local (i->i_sb, i->i_atime.tv_sec)); - de->creation_date =cpu_to_le32 (gmt_to_local (i->i_sb,inode_get_ctime (i).tv_sec)); + de->write_date =cpu_to_le32 (gmt_to_local (i->i_sb,inode_get_mtime_sec (i))); + de->read_date =cpu_to_le32 (gmt_to_local (i->i_sb,inode_get_atime_sec (i))); + de->creation_date =cpu_to_le32 (gmt_to_local (i->i_sb,inode_get_ctime_sec (i))); de->read_only = !(i->i_mode &0222 ); de->ea_size =cpu_to_le32 (hpfs_inode->i_ea_size);hpfs_mark_4buffers_dirty (&qbh);
@@ -240,9 +240,9 @@ void hpfs_write_inode_nolock(struct inode *i) }if (S_ISDIR (i->i_mode)) {if ((de =map_dirent (i, hpfs_inode->i_dno,"\001\001" ,2 ,NULL , &qbh))) { - de->write_date =cpu_to_le32 (gmt_to_local (i->i_sb, i->i_mtime.tv_sec)); - de->read_date =cpu_to_le32 (gmt_to_local (i->i_sb, i->i_atime.tv_sec)); - de->creation_date =cpu_to_le32 (gmt_to_local (i->i_sb,inode_get_ctime (i).tv_sec)); + de->write_date =cpu_to_le32 (gmt_to_local (i->i_sb,inode_get_mtime_sec (i))); + de->read_date =cpu_to_le32 (gmt_to_local (i->i_sb,inode_get_atime_sec (i))); + de->creation_date =cpu_to_le32 (gmt_to_local (i->i_sb,inode_get_ctime_sec (i))); de->read_only = !(i->i_mode &0222 ); de->ea_size =cpu_to_le32 (/*hpfs_inode->i_ea_size*/ 0 ); de->file_size =cpu_to_le32 (0 );
fs/hpfs/namei.c +11 -11
@@ -12,10 +12,10 @@static void hpfs_update_directory_times (struct inode *dir) {time64_t t =local_to_gmt (dir->i_sb,local_get_seconds (dir->i_sb)); -if (t == dir->i_mtime.tv_sec && - t ==inode_get_ctime (dir).tv_sec) +if (t ==inode_get_mtime_sec (dir) && + t ==inode_get_ctime_sec (dir))return ; - dir->i_mtime =inode_set_ctime (dir, t,0 ); +inode_set_mtime_to_ts (dir,inode_set_ctime (dir, t,0 ));hpfs_write_inode_nolock (dir); }
@@ -58,8 +58,8 @@ static int hpfs_mkdir(struct mnt_idmap *idmap, struct inode *dir, result->i_ino = fno;hpfs_i (result)->i_parent_dir = dir->i_ino;hpfs_i (result)->i_dno = dno; - result->i_mtime = result->i_atime = -inode_set_ctime (result,local_to_gmt (dir->i_sb,le32_to_cpu (dee.creation_date)),0 ); +inode_set_mtime_to_ts (result, +inode_set_atime_to_ts (result,inode_set_ctime (result,local_to_gmt (dir->i_sb,le32_to_cpu (dee.creation_date)),0 )));hpfs_i (result)->i_ea_size =0 ; result->i_mode |=S_IFDIR ; result->i_op = &hpfs_dir_iops;
@@ -164,8 +164,8 @@ static int hpfs_create(struct mnt_idmap *idmap, struct inode *dir, result->i_fop = &hpfs_file_ops;set_nlink (result,1 );hpfs_i (result)->i_parent_dir = dir->i_ino; - result->i_mtime = result->i_atime = -inode_set_ctime (result,local_to_gmt (dir->i_sb,le32_to_cpu (dee.creation_date)),0 ); +inode_set_mtime_to_ts (result, +inode_set_atime_to_ts (result,inode_set_ctime (result,local_to_gmt (dir->i_sb,le32_to_cpu (dee.creation_date)),0 )));hpfs_i (result)->i_ea_size =0 ;if (dee.read_only) result->i_mode &= ~0222 ;
@@ -245,8 +245,8 @@ static int hpfs_mknod(struct mnt_idmap *idmap, struct inode *dir,hpfs_init_inode (result); result->i_ino = fno;hpfs_i (result)->i_parent_dir = dir->i_ino; - result->i_mtime = result->i_atime = -inode_set_ctime (result,local_to_gmt (dir->i_sb,le32_to_cpu (dee.creation_date)),0 ); +inode_set_mtime_to_ts (result, +inode_set_atime_to_ts (result,inode_set_ctime (result,local_to_gmt (dir->i_sb,le32_to_cpu (dee.creation_date)),0 )));hpfs_i (result)->i_ea_size =0 ; result->i_uid =current_fsuid (); result->i_gid =current_fsgid ();
@@ -319,8 +319,8 @@ static int hpfs_symlink(struct mnt_idmap *idmap, struct inode *dir, result->i_ino = fno;hpfs_init_inode (result);hpfs_i (result)->i_parent_dir = dir->i_ino; - result->i_mtime = result->i_atime = -inode_set_ctime (result,local_to_gmt (dir->i_sb,le32_to_cpu (dee.creation_date)),0 ); +inode_set_mtime_to_ts (result, +inode_set_atime_to_ts (result,inode_set_ctime (result,local_to_gmt (dir->i_sb,le32_to_cpu (dee.creation_date)),0 )));hpfs_i (result)->i_ea_size =0 ; result->i_mode =S_IFLNK |0777 ; result->i_uid =current_fsuid ();
fs/hpfs/super.c +6 -4
@@ -725,10 +725,12 @@ static int hpfs_fill_super(struct super_block *s, void *options, int silent)if (!de)hpfs_error (s,"unable to find root dir" );else { - root->i_atime.tv_sec =local_to_gmt (s,le32_to_cpu (de->read_date)); - root->i_atime.tv_nsec =0 ; - root->i_mtime.tv_sec =local_to_gmt (s,le32_to_cpu (de->write_date)); - root->i_mtime.tv_nsec =0 ; +inode_set_atime (root, +local_to_gmt (s,le32_to_cpu (de->read_date)), +0 ); +inode_set_mtime (root, +local_to_gmt (s,le32_to_cpu (de->write_date)), +0 );inode_set_ctime (root,local_to_gmt (s,le32_to_cpu (de->creation_date)),0 );
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 45/89 hugetlbfs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/hugetlbfs/inode.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
fs/hugetlbfs/inode.c +5 -5
@@ -981,7 +981,7 @@ static struct inode *hugetlbfs_get_root(struct super_block *sb, inode->i_mode =S_IFDIR | ctx->mode; inode->i_uid = ctx->uid; inode->i_gid = ctx->gid; - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); inode->i_op = &hugetlbfs_dir_inode_operations; inode->i_fop = &simple_dir_operations;/* directory inodes start off with i_nlink == 2 (for "." entry) */
@@ -1025,7 +1025,7 @@ static struct inode *hugetlbfs_get_inode(struct super_block *sb,lockdep_set_class (&inode->i_mapping->i_mmap_rwsem, &hugetlbfs_i_mmap_rwsem_key); inode->i_mapping->a_ops = &hugetlbfs_aops; - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); inode->i_mapping->private_data = resv_map; info->seals =F_SEAL_SEAL ;switch (mode &S_IFMT ) {
@@ -1068,7 +1068,7 @@ static int hugetlbfs_mknod(struct mnt_idmap *idmap, struct inode *dir, inode =hugetlbfs_get_inode (dir->i_sb, dir, mode, dev);if (!inode)return -ENOSPC ; - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));d_instantiate (dentry, inode);dget (dentry);/* Extra count - pin the dentry in core */ return 0 ;
@@ -1100,7 +1100,7 @@ static int hugetlbfs_tmpfile(struct mnt_idmap *idmap, inode =hugetlbfs_get_inode (dir->i_sb, dir, mode |S_IFREG ,0 );if (!inode)return -ENOSPC ; - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));d_tmpfile (file, inode);return finish_open_simple (file,0 ); }
@@ -1122,7 +1122,7 @@ static int hugetlbfs_symlink(struct mnt_idmap *idmap, }else iput (inode); } - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));return error; }
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 46/89 isofs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/isofs/inode.c | 4 ++-- fs/isofs/rock.c | 18 ++++++++---------- 2 files changed, 10 insertions(+), 12 deletions(-)
fs/isofs/inode.c +2 -2
@@ -1422,8 +1422,8 @@ static int isofs_read_inode(struct inode *inode, int relocated) inode->i_ino, de->flags[-high_sierra]); }#endif - inode->i_mtime = inode->i_atime = -inode_set_ctime (inode,iso_date (de->date, high_sierra),0 ); +inode_set_mtime_to_ts (inode, +inode_set_atime_to_ts (inode,inode_set_ctime (inode,iso_date (de->date, high_sierra),0 ))); ei->i_first_extent = (isonum_733 (de->extent) +isonum_711 (de->ext_attr_length));
fs/isofs/rock.c +8 -10
@@ -426,16 +426,14 @@ parse_rock_ridge_inode_internal(struct iso_directory_record *de, 0); }if (rr->u.TF.flags &TF_MODIFY ) { - inode->i_mtime.tv_sec = -iso_date (rr->u.TF.times[cnt++].time, -0 ); - inode->i_mtime.tv_nsec =0 ; +inode_set_mtime (inode, +iso_date (rr->u.TF.times[cnt++].time,0 ), +0 ); }if (rr->u.TF.flags &TF_ACCESS ) { - inode->i_atime.tv_sec = -iso_date (rr->u.TF.times[cnt++].time, -0 ); - inode->i_atime.tv_nsec =0 ; +inode_set_atime (inode, +iso_date (rr->u.TF.times[cnt++].time,0 ), +0 ); }if (rr->u.TF.flags &TF_ATTRIBUTES ) { inode_set_ctime(inode,
@@ -531,9 +529,9 @@ parse_rock_ridge_inode_internal(struct iso_directory_record *de, inode->i_rdev = reloc->i_rdev; inode->i_size = reloc->i_size; inode->i_blocks = reloc->i_blocks; - inode->i_atime = reloc->i_atime; +inode_set_atime_to_ts (inode,inode_get_atime (reloc));inode_set_ctime_to_ts (inode,inode_get_ctime (reloc)); - inode->i_mtime = reloc->i_mtime; +inode_set_mtime_to_ts (inode,inode_get_mtime (reloc));iput (reloc);break ;#ifdef CONFIG_ZISOFS
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 47/89 jffs2: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/jffs2/dir.c | 35 ++++++++++++++++++++--------------- fs/jffs2/file.c | 4 ++-- fs/jffs2/fs.c | 20 ++++++++++---------- fs/jffs2/os-linux.h | 4 ++-- 4 files changed, 34 insertions(+), 29 deletions(-)
fs/jffs2/dir.c +20 -15
@@ -204,8 +204,8 @@ static int jffs2_create(struct mnt_idmap *idmap, struct inode *dir_i,if (ret) goto fail; - dir_i->i_mtime =inode_set_ctime_to_ts (dir_i, -ITIME (je32_to_cpu (ri->ctime))); +inode_set_mtime_to_ts (dir_i, +inode_set_ctime_to_ts (dir_i,ITIME (je32_to_cpu (ri->ctime))));jffs2_free_raw_inode (ri);
@@ -238,7 +238,8 @@ static int jffs2_unlink(struct inode *dir_i, struct dentry *dentry)if (dead_f->inocache)set_nlink (d_inode (dentry), dead_f->inocache->pino_nlink);if (!ret) - dir_i->i_mtime =inode_set_ctime_to_ts (dir_i,ITIME (now)); +inode_set_mtime_to_ts (dir_i, +inode_set_ctime_to_ts (dir_i,ITIME (now)));return ret; }/***********************************************************************/
@@ -272,7 +273,8 @@ static int jffs2_link (struct dentry *old_dentry, struct inode *dir_i, struct deset_nlink (d_inode (old_dentry), ++f->inocache->pino_nlink);mutex_unlock (&f->sem);d_instantiate (dentry,d_inode (old_dentry)); - dir_i->i_mtime =inode_set_ctime_to_ts (dir_i,ITIME (now)); +inode_set_mtime_to_ts (dir_i, +inode_set_ctime_to_ts (dir_i,ITIME (now)));ihold (d_inode (old_dentry)); }return ret;
@@ -423,8 +425,8 @@ static int jffs2_symlink (struct mnt_idmap *idmap, struct inode *dir_i, goto fail; } - dir_i->i_mtime =inode_set_ctime_to_ts (dir_i, -ITIME (je32_to_cpu (rd->mctime))); +inode_set_mtime_to_ts (dir_i, +inode_set_ctime_to_ts (dir_i,ITIME (je32_to_cpu (rd->mctime))));jffs2_free_raw_dirent (rd);
@@ -568,8 +570,8 @@ static int jffs2_mkdir (struct mnt_idmap *idmap, struct inode *dir_i, goto fail; } - dir_i->i_mtime =inode_set_ctime_to_ts (dir_i, -ITIME (je32_to_cpu (rd->mctime))); +inode_set_mtime_to_ts (dir_i, +inode_set_ctime_to_ts (dir_i,ITIME (je32_to_cpu (rd->mctime))));inc_nlink (dir_i);jffs2_free_raw_dirent (rd);
@@ -610,7 +612,8 @@ static int jffs2_rmdir (struct inode *dir_i, struct dentry *dentry) ret =jffs2_do_unlink (c, dir_f, dentry->d_name.name, dentry->d_name.len, f, now);if (!ret) { - dir_i->i_mtime =inode_set_ctime_to_ts (dir_i,ITIME (now)); +inode_set_mtime_to_ts (dir_i, +inode_set_ctime_to_ts (dir_i,ITIME (now)));clear_nlink (d_inode (dentry));drop_nlink (dir_i); }
@@ -746,8 +749,8 @@ static int jffs2_mknod (struct mnt_idmap *idmap, struct inode *dir_i, goto fail; } - dir_i->i_mtime =inode_set_ctime_to_ts (dir_i, -ITIME (je32_to_cpu (rd->mctime))); +inode_set_mtime_to_ts (dir_i, +inode_set_ctime_to_ts (dir_i,ITIME (je32_to_cpu (rd->mctime))));jffs2_free_raw_dirent (rd);
@@ -868,16 +871,18 @@ static int jffs2_rename (struct mnt_idmap *idmap,* caller won't do it on its own since we are returning an error. */ d_invalidate (new_dentry); - new_dir_i->i_mtime =inode_set_ctime_to_ts (new_dir_i, -ITIME (now)); +inode_set_mtime_to_ts (new_dir_i, +inode_set_ctime_to_ts (new_dir_i,ITIME (now)));return ret; }if (d_is_dir (old_dentry))drop_nlink (old_dir_i); - old_dir_i->i_mtime =inode_set_ctime_to_ts (old_dir_i,ITIME (now)); - new_dir_i->i_mtime =inode_set_ctime_to_ts (new_dir_i,ITIME (now)); +inode_set_mtime_to_ts (old_dir_i, +inode_set_ctime_to_ts (old_dir_i,ITIME (now))); +inode_set_mtime_to_ts (new_dir_i, +inode_set_ctime_to_ts (new_dir_i,ITIME (now)));return 0 ; }
fs/jffs2/file.c +2 -2
@@ -317,8 +317,8 @@ static int jffs2_write_end(struct file *filp, struct address_space *mapping, inode->i_size = pos + writtenlen; inode->i_blocks = (inode->i_size +511 ) >>9 ; - inode->i_mtime =inode_set_ctime_to_ts (inode, -ITIME (je32_to_cpu (ri->ctime))); +inode_set_mtime_to_ts (inode, +inode_set_ctime_to_ts (inode,ITIME (je32_to_cpu (ri->ctime)))); } }
fs/jffs2/fs.c +10 -10
@@ -113,8 +113,8 @@ int jffs2_do_setattr (struct inode *inode, struct iattr *iattr) ri->isize =cpu_to_je32 ((ivalid &ATTR_SIZE )?iattr->ia_size:inode->i_size); - ri->atime =cpu_to_je32 (I_SEC ((ivalid &ATTR_ATIME )?iattr->ia_atime:inode->i_atime)); - ri->mtime =cpu_to_je32 (I_SEC ((ivalid &ATTR_MTIME )?iattr->ia_mtime:inode->i_mtime)); + ri->atime =cpu_to_je32 (I_SEC ((ivalid &ATTR_ATIME )?iattr->ia_atime:inode_get_atime (inode))); + ri->mtime =cpu_to_je32 (I_SEC ((ivalid &ATTR_MTIME )?iattr->ia_mtime:inode_get_mtime (inode))); ri->ctime =cpu_to_je32 (I_SEC ((ivalid &ATTR_CTIME )?iattr->ia_ctime:inode_get_ctime (inode))); ri->offset =cpu_to_je32 (0 );
@@ -147,9 +147,9 @@ int jffs2_do_setattr (struct inode *inode, struct iattr *iattr)return PTR_ERR (new_metadata); }/* It worked. Update the inode */ - inode->i_atime =ITIME (je32_to_cpu (ri->atime)); +inode_set_atime_to_ts (inode,ITIME (je32_to_cpu (ri->atime)));inode_set_ctime_to_ts (inode,ITIME (je32_to_cpu (ri->ctime))); - inode->i_mtime =ITIME (je32_to_cpu (ri->mtime)); +inode_set_mtime_to_ts (inode,ITIME (je32_to_cpu (ri->mtime))); inode->i_mode =jemode_to_cpu (ri->mode);i_uid_write (inode,je16_to_cpu (ri->uid));i_gid_write (inode,je16_to_cpu (ri->gid));
@@ -282,8 +282,8 @@ struct inode *jffs2_iget(struct super_block *sb, unsigned long ino)i_uid_write (inode,je16_to_cpu (latest_node.uid));i_gid_write (inode,je16_to_cpu (latest_node.gid)); inode->i_size =je32_to_cpu (latest_node.isize); - inode->i_atime =ITIME (je32_to_cpu (latest_node.atime)); - inode->i_mtime =ITIME (je32_to_cpu (latest_node.mtime)); +inode_set_atime_to_ts (inode,ITIME (je32_to_cpu (latest_node.atime))); +inode_set_mtime_to_ts (inode,ITIME (je32_to_cpu (latest_node.mtime)));inode_set_ctime_to_ts (inode,ITIME (je32_to_cpu (latest_node.ctime)));set_nlink (inode, f->inocache->pino_nlink);
@@ -386,8 +386,8 @@ void jffs2_dirty_inode(struct inode *inode, int flags) iattr.ia_mode = inode->i_mode; iattr.ia_uid = inode->i_uid; iattr.ia_gid = inode->i_gid; - iattr.ia_atime = inode->i_atime; - iattr.ia_mtime = inode->i_mtime; + iattr.ia_atime =inode_get_atime (inode); + iattr.ia_mtime =inode_get_mtime (inode); iattr.ia_ctime =inode_get_ctime (inode);jffs2_do_setattr (inode, &iattr);
@@ -475,8 +475,8 @@ struct inode *jffs2_new_inode (struct inode *dir_i, umode_t mode, struct jffs2_r inode->i_mode =jemode_to_cpu (ri->mode);i_gid_write (inode,je16_to_cpu (ri->gid));i_uid_write (inode,je16_to_cpu (ri->uid)); - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); - ri->atime = ri->mtime = ri->ctime =cpu_to_je32 (I_SEC (inode->i_mtime)); +simple_inode_init_ts (inode); + ri->atime = ri->mtime = ri->ctime =cpu_to_je32 (I_SEC (inode_get_mtime (inode))); inode->i_blocks =0 ; inode->i_size =0 ;
fs/jffs2/os-linux.h +2 -2
@@ -36,8 +36,8 @@ struct kvec;#define JFFS2_NOW () JFFS2_CLAMP_TIME(ktime_get_real_seconds())#define I_SEC (tv) JFFS2_CLAMP_TIME((tv).tv_sec)#define JFFS2_F_I_CTIME (f) I_SEC(inode_get_ctime(OFNI_EDONI_2SFFJ(f))) -#define JFFS2_F_I_MTIME (f) I_SEC(OFNI_EDONI_2SFFJ(f)->i_mtime) -#define JFFS2_F_I_ATIME (f) I_SEC(OFNI_EDONI_2SFFJ(f)->i_atime) +#define JFFS2_F_I_MTIME (f) I_SEC(inode_get_mtime(OFNI_EDONI_2SFFJ(f))) +#define JFFS2_F_I_ATIME (f) I_SEC(inode_get_atime(OFNI_EDONI_2SFFJ(f)))#define sleep_on_spinunlock (wq, s) \ do { \ DECLARE_WAITQUEUE(__wait, current); \
Signature · 6 lines
2.41.0 ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/
Jeff Layton
maintainerPATCH v2 48/89 jfs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/jfs/inode.c | 2 +- fs/jfs/jfs_imap.c | 20 ++++++++++---------- fs/jfs/jfs_inode.c | 4 ++-- fs/jfs/namei.c | 20 +++++++++++--------- fs/jfs/super.c | 2 +- 5 files changed, 25 insertions(+), 23 deletions(-)
fs/jfs/inode.c +1 -1
@@ -393,7 +393,7 @@ void jfs_truncate_nolock(struct inode *ip, loff_t length)break ; } - ip->i_mtime =inode_set_ctime_current (ip); +inode_set_mtime_to_ts (ip,inode_set_ctime_current (ip));mark_inode_dirty (ip);txCommit (tid,1 , &ip,0 );
fs/jfs/jfs_imap.c +10 -10
@@ -3061,10 +3061,10 @@ static int copy_from_dinode(struct dinode * dip, struct inode *ip) } ip->i_size =le64_to_cpu (dip->di_size); - ip->i_atime.tv_sec =le32_to_cpu (dip->di_atime.tv_sec); - ip->i_atime.tv_nsec =le32_to_cpu (dip->di_atime.tv_nsec); - ip->i_mtime.tv_sec =le32_to_cpu (dip->di_mtime.tv_sec); - ip->i_mtime.tv_nsec =le32_to_cpu (dip->di_mtime.tv_nsec); +inode_set_atime (ip,le32_to_cpu (dip->di_atime.tv_sec), +le32_to_cpu (dip->di_atime.tv_nsec)); +inode_set_mtime (ip,le32_to_cpu (dip->di_mtime.tv_sec), +le32_to_cpu (dip->di_mtime.tv_nsec));inode_set_ctime (ip,le32_to_cpu (dip->di_ctime.tv_sec),le32_to_cpu (dip->di_ctime.tv_nsec)); ip->i_blocks =LBLK2PBLK (ip->i_sb,le64_to_cpu (dip->di_nblocks));
@@ -3138,12 +3138,12 @@ static void copy_to_dinode(struct dinode * dip, struct inode *ip)else /* Leave the original permissions alone */ dip->di_mode =cpu_to_le32 (jfs_ip->mode2); - dip->di_atime.tv_sec =cpu_to_le32 (ip->i_atime.tv_sec); - dip->di_atime.tv_nsec =cpu_to_le32 (ip->i_atime.tv_nsec); - dip->di_ctime.tv_sec =cpu_to_le32 (inode_get_ctime (ip).tv_sec); - dip->di_ctime.tv_nsec =cpu_to_le32 (inode_get_ctime (ip).tv_nsec); - dip->di_mtime.tv_sec =cpu_to_le32 (ip->i_mtime.tv_sec); - dip->di_mtime.tv_nsec =cpu_to_le32 (ip->i_mtime.tv_nsec); + dip->di_atime.tv_sec =cpu_to_le32 (inode_get_atime_sec (ip)); + dip->di_atime.tv_nsec =cpu_to_le32 (inode_get_atime_nsec (ip)); + dip->di_ctime.tv_sec =cpu_to_le32 (inode_get_ctime_sec (ip)); + dip->di_ctime.tv_nsec =cpu_to_le32 (inode_get_ctime_nsec (ip)); + dip->di_mtime.tv_sec =cpu_to_le32 (inode_get_mtime_sec (ip)); + dip->di_mtime.tv_nsec =cpu_to_le32 (inode_get_mtime_nsec (ip)); dip->di_ixpxd = jfs_ip->ixpxd;/* in-memory pxd's are little-endian */ dip->di_acl = jfs_ip->acl;/* as are dxd's */ dip->di_ea = jfs_ip->ea;
fs/jfs/jfs_inode.c +2 -2
@@ -97,8 +97,8 @@ struct inode *ialloc(struct inode *parent, umode_t mode) jfs_inode->mode2 |= inode->i_mode; inode->i_blocks =0 ; - inode->i_mtime = inode->i_atime =inode_set_ctime_current (inode); - jfs_inode->otime =inode_get_ctime (inode).tv_sec; +simple_inode_init_ts (inode); + jfs_inode->otime =inode_get_ctime_sec (inode); inode->i_generation =JFS_SBI (sb)->gengen++; jfs_inode->cflag =0 ;
fs/jfs/namei.c +11 -9
@@ -149,7 +149,7 @@ static int jfs_create(struct mnt_idmap *idmap, struct inode *dip,mark_inode_dirty (ip); - dip->i_mtime =inode_set_ctime_current (dip); +inode_set_mtime_to_ts (dip,inode_set_ctime_current (dip));mark_inode_dirty (dip);
@@ -284,7 +284,7 @@ static int jfs_mkdir(struct mnt_idmap *idmap, struct inode *dip,/* update parent directory inode */ inc_nlink (dip);/* for '..' from child directory */ - dip->i_mtime =inode_set_ctime_current (dip); +inode_set_mtime_to_ts (dip,inode_set_ctime_current (dip));mark_inode_dirty (dip); rc =txCommit (tid,2 , &iplist[0 ],0 );
@@ -390,7 +390,7 @@ static int jfs_rmdir(struct inode *dip, struct dentry *dentry)/* update parent directory's link count corresponding * to ".." entry of the target directory deleted */ - dip->i_mtime =inode_set_ctime_current (dip); +inode_set_mtime_to_ts (dip,inode_set_ctime_current (dip));inode_dec_link_count (dip);/*
@@ -512,7 +512,8 @@ static int jfs_unlink(struct inode *dip, struct dentry *dentry)ASSERT (ip->i_nlink); - dip->i_mtime =inode_set_ctime_to_ts (dip,inode_set_ctime_current (ip)); +inode_set_mtime_to_ts (dip, +inode_set_ctime_to_ts (dip,inode_set_ctime_current (ip)));mark_inode_dirty (dip);/* update target's inode */
@@ -828,7 +829,7 @@ static int jfs_link(struct dentry *old_dentry,/* update object inode */ inc_nlink (ip);/* for new link */ inode_set_ctime_current (ip); - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));mark_inode_dirty (dir);ihold (ip);
@@ -1028,7 +1029,7 @@ static int jfs_symlink(struct mnt_idmap *idmap, struct inode *dip,mark_inode_dirty (ip); - dip->i_mtime =inode_set_ctime_current (dip); +inode_set_mtime_to_ts (dip,inode_set_ctime_current (dip));mark_inode_dirty (dip);/* * commit update of parent directory and link object
@@ -1271,7 +1272,7 @@ static int jfs_rename(struct mnt_idmap *idmap, struct inode *old_dir,inode_set_ctime_current (old_ip);mark_inode_dirty (old_ip); - new_dir->i_mtime =inode_set_ctime_current (new_dir); +inode_set_mtime_to_ts (new_dir,inode_set_ctime_current (new_dir));mark_inode_dirty (new_dir);/* Build list of inodes modified by this transaction */
@@ -1283,7 +1284,8 @@ static int jfs_rename(struct mnt_idmap *idmap, struct inode *old_dir,if (old_dir != new_dir) { iplist[ipcount++] = new_dir; - old_dir->i_mtime =inode_set_ctime_current (old_dir); +inode_set_mtime_to_ts (old_dir, +inode_set_ctime_current (old_dir));mark_inode_dirty (old_dir); }
@@ -1416,7 +1418,7 @@ static int jfs_mknod(struct mnt_idmap *idmap, struct inode *dir,mark_inode_dirty (ip); - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));mark_inode_dirty (dir);
fs/jfs/super.c +1 -1
@@ -818,7 +818,7 @@ static ssize_t jfs_quota_write(struct super_block *sb, int type, }if (inode->i_size < off+len-towrite)i_size_write (inode, off+len-towrite); - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode));mark_inode_dirty (inode);inode_unlock (inode);return len - towrite;
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 49/89 kernfs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/kernfs/inode.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
fs/kernfs/inode.c +3 -3
@@ -151,7 +151,7 @@ ssize_t kernfs_iop_listxattr(struct dentry *dentry, char *buf, size_t size)static inline void set_default_inode_attr (struct inode *inode,umode_t mode) { inode->i_mode = mode; - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); } static inline void set_inode_attr(struct inode *inode,
@@ -159,8 +159,8 @@ static inline void set_inode_attr(struct inode *inode, { inode->i_uid = attrs->ia_uid; inode->i_gid = attrs->ia_gid; - inode->i_atime = attrs->ia_atime; - inode->i_mtime = attrs->ia_mtime; +inode_set_atime_to_ts (inode, attrs->ia_atime); +inode_set_mtime_to_ts (inode, attrs->ia_mtime);inode_set_ctime_to_ts (inode, attrs->ia_ctime); }
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 50/89 minix: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/minix/bitmap.c | 2 +- fs/minix/dir.c | 6 +++--- fs/minix/inode.c | 17 ++++++++--------- fs/minix/itree_common.c | 2 +- 4 files changed, 13 insertions(+), 14 deletions(-)
fs/minix/bitmap.c +1 -1
@@ -251,7 +251,7 @@ struct inode *minix_new_inode(const struct inode *dir, umode_t mode) }inode_init_owner (&nop_mnt_idmap, inode, dir, mode); inode->i_ino = j; - inode->i_mtime = inode->i_atime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); inode->i_blocks =0 ;memset (&minix_i (inode)->u,0 ,sizeof (minix_i (inode)->u));insert_inode_hash (inode);
fs/minix/dir.c +3 -3
@@ -281,7 +281,7 @@ int minix_add_link(struct dentry *dentry, struct inode *inode) de->inode = inode->i_ino; }dir_commit_chunk (page, pos, sbi->s_dirsize); - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));mark_inode_dirty (dir); err =minix_handle_dirsync (dir); out_put:
@@ -313,7 +313,7 @@ int minix_delete_entry(struct minix_dir_entry *de, struct page *page)else de->inode =0 ;dir_commit_chunk (page, pos, len); - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode));mark_inode_dirty (inode);return minix_handle_dirsync (inode); }
@@ -436,7 +436,7 @@ int minix_set_link(struct minix_dir_entry *de, struct page *page,else de->inode = inode->i_ino;dir_commit_chunk (page, pos, sbi->s_dirsize); - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));mark_inode_dirty (dir);return minix_handle_dirsync (dir); }
fs/minix/inode.c +8 -9
@@ -501,7 +501,8 @@ static struct inode *V1_minix_iget(struct inode *inode)i_gid_write (inode, raw_inode->i_gid);set_nlink (inode, raw_inode->i_nlinks); inode->i_size = raw_inode->i_size; - inode->i_mtime = inode->i_atime =inode_set_ctime (inode, raw_inode->i_time,0 ); +inode_set_mtime_to_ts (inode, +inode_set_atime_to_ts (inode,inode_set_ctime (inode, raw_inode->i_time,0 ))); inode->i_blocks =0 ;for (i =0 ; i <9 ; i++) minix_inode->u.i1_data[i] = raw_inode->i_zone[i];
@@ -538,11 +539,9 @@ static struct inode *V2_minix_iget(struct inode *inode)i_gid_write (inode, raw_inode->i_gid);set_nlink (inode, raw_inode->i_nlinks); inode->i_size = raw_inode->i_size; - inode->i_mtime.tv_sec = raw_inode->i_mtime; - inode->i_atime.tv_sec = raw_inode->i_atime; +inode_set_mtime (inode, raw_inode->i_mtime,0 ); +inode_set_atime (inode, raw_inode->i_atime,0 );inode_set_ctime (inode, raw_inode->i_ctime,0 ); - inode->i_mtime.tv_nsec =0 ; - inode->i_atime.tv_nsec =0 ; inode->i_blocks =0 ;for (i =0 ; i <10 ; i++) minix_inode->u.i2_data[i] = raw_inode->i_zone[i];
@@ -589,7 +588,7 @@ static struct buffer_head * V1_minix_update_inode(struct inode * inode) raw_inode->i_gid =fs_high2lowgid (i_gid_read (inode)); raw_inode->i_nlinks = inode->i_nlink; raw_inode->i_size = inode->i_size; - raw_inode->i_time = inode->i_mtime.tv_sec; + raw_inode->i_time =inode_get_mtime_sec (inode);if (S_ISCHR (inode->i_mode) ||S_ISBLK (inode->i_mode)) raw_inode->i_zone[0 ] =old_encode_dev (inode->i_rdev);else for (i =0 ; i <9 ; i++)
@@ -616,9 +615,9 @@ static struct buffer_head * V2_minix_update_inode(struct inode * inode) raw_inode->i_gid =fs_high2lowgid (i_gid_read (inode)); raw_inode->i_nlinks = inode->i_nlink; raw_inode->i_size = inode->i_size; - raw_inode->i_mtime = inode->i_mtime.tv_sec; - raw_inode->i_atime = inode->i_atime.tv_sec; - raw_inode->i_ctime =inode_get_ctime (inode).tv_sec; + raw_inode->i_mtime =inode_get_mtime_sec (inode); + raw_inode->i_atime =inode_get_atime_sec (inode); + raw_inode->i_ctime =inode_get_ctime_sec (inode);if (S_ISCHR (inode->i_mode) ||S_ISBLK (inode->i_mode)) raw_inode->i_zone[0 ] =old_encode_dev (inode->i_rdev);else for (i =0 ; i <10 ; i++)
fs/minix/itree_common.c +1 -1
@@ -350,7 +350,7 @@ static inline void truncate (struct inode * inode) } first_whole++; } - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode));mark_inode_dirty (inode); }
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 51/89 nfs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/nfs/callback_proc.c | 2 +- fs/nfs/fscache.h | 4 ++-- fs/nfs/inode.c | 30 +++++++++++++++--------------- 3 files changed, 18 insertions(+), 18 deletions(-)
fs/nfs/callback_proc.c +1 -1
@@ -60,7 +60,7 @@ __be32 nfs4_callback_getattr(void *argp, void *resp,if (nfs_have_writebacks (inode)) res->change_attr++; res->ctime =inode_get_ctime (inode); - res->mtime = inode->i_mtime; + res->mtime =inode_get_mtime (inode); res->bitmap[0 ] = (FATTR4_WORD0_CHANGE |FATTR4_WORD0_SIZE ) & args->bitmap[0 ]; res->bitmap[1] = (FATTR4_WORD1_TIME_METADATA|FATTR4_WORD1_TIME_MODIFY) &
fs/nfs/fscache.h +2 -2
@@ -114,8 +114,8 @@ static inline void nfs_fscache_update_auxdata(struct nfs_fscache_inode_auxdata * struct inode *inode) {memset (auxdata,0 ,sizeof (*auxdata)); - auxdata->mtime_sec = inode->i_mtime.tv_sec; - auxdata->mtime_nsec = inode->i_mtime.tv_nsec; + auxdata->mtime_sec =inode_get_mtime (inode).tv_sec; + auxdata->mtime_nsec =inode_get_mtime (inode).tv_nsec; auxdata->ctime_sec =inode_get_ctime (inode).tv_sec; auxdata->ctime_nsec =inode_get_ctime (inode).tv_nsec;
fs/nfs/inode.c +15 -15
@@ -512,8 +512,8 @@ nfs_fhget(struct super_block *sb, struct nfs_fh *fh, struct nfs_fattr *fattr) }else init_special_inode (inode, inode->i_mode, fattr->rdev); -memset (&inode->i_atime,0 ,sizeof (inode->i_atime)); -memset (&inode->i_mtime,0 ,sizeof (inode->i_mtime)); +inode_set_atime (inode,0 ,0 ); +inode_set_mtime (inode,0 ,0 );inode_set_ctime (inode,0 ,0 );inode_set_iversion_raw (inode,0 ); inode->i_size =0 ;
@@ -527,11 +527,11 @@ nfs_fhget(struct super_block *sb, struct nfs_fh *fh, struct nfs_fattr *fattr) nfsi->read_cache_jiffies = fattr->time_start; nfsi->attr_gencount = fattr->gencount;if (fattr->valid &NFS_ATTR_FATTR_ATIME ) - inode->i_atime = fattr->atime; +inode_set_atime_to_ts (inode, fattr->atime);else if (fattr_supported &NFS_ATTR_FATTR_ATIME )nfs_set_cache_invalid (inode,NFS_INO_INVALID_ATIME );if (fattr->valid &NFS_ATTR_FATTR_MTIME ) - inode->i_mtime = fattr->mtime; +inode_set_mtime_to_ts (inode, fattr->mtime);else if (fattr_supported &NFS_ATTR_FATTR_MTIME )nfs_set_cache_invalid (inode,NFS_INO_INVALID_MTIME );if (fattr->valid &NFS_ATTR_FATTR_CTIME )
@@ -742,9 +742,9 @@ void nfs_setattr_update_inode(struct inode *inode, struct iattr *attr,NFS_I (inode)->cache_validity &= ~(NFS_INO_INVALID_ATIME |NFS_INO_INVALID_CTIME );if (fattr->valid &NFS_ATTR_FATTR_ATIME ) - inode->i_atime = fattr->atime; +inode_set_atime_to_ts (inode, fattr->atime);else if (attr->ia_valid &ATTR_ATIME_SET ) - inode->i_atime = attr->ia_atime; +inode_set_atime_to_ts (inode, attr->ia_atime);else nfs_set_cache_invalid (inode,NFS_INO_INVALID_ATIME );
@@ -758,9 +758,9 @@ void nfs_setattr_update_inode(struct inode *inode, struct iattr *attr,NFS_I (inode)->cache_validity &= ~(NFS_INO_INVALID_MTIME |NFS_INO_INVALID_CTIME );if (fattr->valid &NFS_ATTR_FATTR_MTIME ) - inode->i_mtime = fattr->mtime; +inode_set_mtime_to_ts (inode, fattr->mtime);else if (attr->ia_valid &ATTR_MTIME_SET ) - inode->i_mtime = attr->ia_mtime; +inode_set_mtime_to_ts (inode, attr->ia_mtime);else nfs_set_cache_invalid (inode,NFS_INO_INVALID_MTIME );
@@ -1451,11 +1451,11 @@ static void nfs_wcc_update_inode(struct inode *inode, struct nfs_fattr *fattr)inode_set_ctime_to_ts (inode, fattr->ctime); } - ts = inode->i_mtime; + ts =inode_get_mtime (inode);if ((fattr->valid &NFS_ATTR_FATTR_PREMTIME ) && (fattr->valid &NFS_ATTR_FATTR_MTIME ) &×pec64_equal (&ts, &fattr->pre_mtime)) { - inode->i_mtime = fattr->mtime; +inode_set_mtime_to_ts (inode, fattr->mtime); }if ((fattr->valid &NFS_ATTR_FATTR_PRESIZE ) && (fattr->valid & NFS_ATTR_FATTR_SIZE)
@@ -1506,7 +1506,7 @@ static int nfs_check_inode_attributes(struct inode *inode, struct nfs_fattr *fatif ((fattr->valid &NFS_ATTR_FATTR_CHANGE ) !=0 && !inode_eq_iversion_raw (inode, fattr->change_attr)) invalid |=NFS_INO_INVALID_CHANGE ; - ts = inode->i_mtime; + ts =inode_get_mtime (inode);if ((fattr->valid &NFS_ATTR_FATTR_MTIME ) && !timespec64_equal (&ts, &fattr->mtime)) invalid |=NFS_INO_INVALID_MTIME ;
@@ -1534,7 +1534,7 @@ static int nfs_check_inode_attributes(struct inode *inode, struct nfs_fattr *fatif ((fattr->valid &NFS_ATTR_FATTR_NLINK ) && inode->i_nlink != fattr->nlink) invalid |=NFS_INO_INVALID_NLINK ; - ts = inode->i_atime; + ts =inode_get_atime (inode);if ((fattr->valid &NFS_ATTR_FATTR_ATIME ) && !timespec64_equal (&ts, &fattr->atime)) invalid |=NFS_INO_INVALID_ATIME ;
@@ -2002,7 +2002,7 @@ int nfs_post_op_update_inode_force_wcc_locked(struct inode *inode, struct nfs_fa }if ((fattr->valid &NFS_ATTR_FATTR_MTIME ) !=0 && (fattr->valid &NFS_ATTR_FATTR_PREMTIME ) ==0 ) { - fattr->pre_mtime = inode->i_mtime; + fattr->pre_mtime =inode_get_mtime (inode); fattr->valid |=NFS_ATTR_FATTR_PREMTIME ; } if ((fattr->valid & NFS_ATTR_FATTR_SIZE) != 0 &&
@@ -2184,7 +2184,7 @@ static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr) }if (fattr->valid &NFS_ATTR_FATTR_MTIME ) - inode->i_mtime = fattr->mtime; +inode_set_mtime_to_ts (inode, fattr->mtime);else if (fattr_supported &NFS_ATTR_FATTR_MTIME ) nfsi->cache_validity |= save_cache_validity &NFS_INO_INVALID_MTIME ;
@@ -2220,7 +2220,7 @@ static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr) save_cache_validity &NFS_INO_INVALID_SIZE ;if (fattr->valid &NFS_ATTR_FATTR_ATIME ) - inode->i_atime = fattr->atime; +inode_set_atime_to_ts (inode, fattr->atime);else if (fattr_supported &NFS_ATTR_FATTR_ATIME ) nfsi->cache_validity |= save_cache_validity &NFS_INO_INVALID_ATIME ;
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 52/89 nfsd: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/nfsd/blocklayout.c | 3 ++- fs/nfsd/nfs3proc.c | 4 ++-- fs/nfsd/nfs4proc.c | 8 ++++---- fs/nfsd/nfsctl.c | 2 +- fs/nfsd/vfs.c | 2 +- 5 files changed, 10 insertions(+), 9 deletions(-)
fs/nfsd/blocklayout.c +2 -1
@@ -117,12 +117,13 @@ static __be32 nfsd4_block_commit_blocks(struct inode *inode, struct nfsd4_layoutcommit *lcp, struct iomap *iomaps, int nr_iomaps) { + struct timespec64 mtime = inode_get_mtime(inode);loff_t new_size = lcp->lc_last_wr +1 ;struct iattr iattr = { .ia_valid =0 };int error;if (lcp->lc_mtime.tv_nsec ==UTIME_NOW || -timespec64_compare (&lcp->lc_mtime, &inode->i_mtime) <0 ) +timespec64_compare (&lcp->lc_mtime, &mtime) <0 ) lcp->lc_mtime =current_time (inode); iattr.ia_valid |=ATTR_ATIME |ATTR_CTIME |ATTR_MTIME ; iattr.ia_atime = iattr.ia_ctime = iattr.ia_mtime = lcp->lc_mtime;
fs/nfsd/nfs3proc.c +2 -2
@@ -295,8 +295,8 @@ nfsd3_create_file(struct svc_rqst *rqstp, struct svc_fh *fhp, status = nfserr_exist;break ;case NFS3_CREATE_EXCLUSIVE : -if (d_inode (child)->i_mtime.tv_sec == v_mtime && -d_inode (child)->i_atime.tv_sec == v_atime && +if (inode_get_mtime_sec (d_inode (child)) == v_mtime && +inode_get_atime_sec (d_inode (child)) == v_atime &&d_inode (child)->i_size ==0 ) {break ; }
fs/nfsd/nfs4proc.c +4 -4
@@ -322,8 +322,8 @@ nfsd4_create_file(struct svc_rqst *rqstp, struct svc_fh *fhp, status = nfserr_exist;break ;case NFS4_CREATE_EXCLUSIVE : -if (d_inode (child)->i_mtime.tv_sec == v_mtime && -d_inode (child)->i_atime.tv_sec == v_atime && +if (inode_get_mtime_sec (d_inode (child)) == v_mtime && +inode_get_atime_sec (d_inode (child)) == v_atime &&d_inode (child)->i_size ==0 ) { open->op_created = true;break ;/* subtle */
@@ -331,8 +331,8 @@ nfsd4_create_file(struct svc_rqst *rqstp, struct svc_fh *fhp, status = nfserr_exist;break ;case NFS4_CREATE_EXCLUSIVE4_1 : -if (d_inode (child)->i_mtime.tv_sec == v_mtime && -d_inode (child)->i_atime.tv_sec == v_atime && +if (inode_get_mtime_sec (d_inode (child)) == v_mtime && +inode_get_atime_sec (d_inode (child)) == v_atime &&d_inode (child)->i_size ==0 ) { open->op_created = true; goto set_attr;/* subtle */
fs/nfsd/nfsctl.c +1 -1
@@ -1133,7 +1133,7 @@ static struct inode *nfsd_get_inode(struct super_block *sb, umode_t mode)/* Following advice from simple_fill_super documentation: */ inode->i_ino =iunique (sb, NFSD_MaxReserved); inode->i_mode = mode; - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode);switch (mode &S_IFMT ) {case S_IFDIR : inode->i_fop = &simple_dir_operations;
fs/nfsd/vfs.c +1 -1
@@ -538,7 +538,7 @@ nfsd_setattr(struct svc_rqst *rqstp, struct svc_fh *fhp,nfsd_sanitize_attrs (inode, iap); -if (check_guard && guardtime !=inode_get_ctime (inode).tv_sec) +if (check_guard && guardtime !=inode_get_ctime_sec (inode))return nfserr_notsync;/*
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 53/89 nilfs2: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/nilfs2/dir.c | 6 +++--- fs/nilfs2/inode.c | 20 ++++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-)
fs/nilfs2/dir.c +3 -3
@@ -429,7 +429,7 @@ void nilfs_set_link(struct inode *dir, struct nilfs_dir_entry *de,nilfs_set_de_type (de, inode);nilfs_commit_chunk (page, mapping, from, to);nilfs_put_page (page); - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir)); }/*
@@ -519,7 +519,7 @@ int nilfs_add_link(struct dentry *dentry, struct inode *inode) de->inode =cpu_to_le64 (inode->i_ino);nilfs_set_de_type (de, inode);nilfs_commit_chunk (page, page->mapping, from, to); - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));nilfs_mark_inode_dirty (dir);/* OFFSET_CACHE */ out_put:
@@ -567,7 +567,7 @@ int nilfs_delete_entry(struct nilfs_dir_entry *dir, struct page *page) pde->rec_len =nilfs_rec_len_to_disk (to - from); dir->inode =0 ;nilfs_commit_chunk (page, mapping, from, to); - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode)); out:nilfs_put_page (page);return err;
fs/nilfs2/inode.c +10 -10
@@ -366,7 +366,7 @@ struct inode *nilfs_new_inode(struct inode *dir, umode_t mode)atomic64_inc (&root->inodes_count);inode_init_owner (&nop_mnt_idmap, inode, dir, mode); inode->i_ino = ino; - inode->i_mtime = inode->i_atime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode);if (S_ISREG (mode) ||S_ISDIR (mode) ||S_ISLNK (mode)) { err =nilfs_bmap_read (ii->i_bmap,NULL );
@@ -449,12 +449,12 @@ int nilfs_read_inode_common(struct inode *inode,i_gid_write (inode,le32_to_cpu (raw_inode->i_gid));set_nlink (inode,le16_to_cpu (raw_inode->i_links_count)); inode->i_size =le64_to_cpu (raw_inode->i_size); - inode->i_atime.tv_sec =le64_to_cpu (raw_inode->i_mtime); +inode_set_atime (inode,le64_to_cpu (raw_inode->i_mtime), +le32_to_cpu (raw_inode->i_mtime_nsec));inode_set_ctime (inode,le64_to_cpu (raw_inode->i_ctime),le32_to_cpu (raw_inode->i_ctime_nsec)); - inode->i_mtime.tv_sec =le64_to_cpu (raw_inode->i_mtime); - inode->i_atime.tv_nsec =le32_to_cpu (raw_inode->i_mtime_nsec); - inode->i_mtime.tv_nsec =le32_to_cpu (raw_inode->i_mtime_nsec); +inode_set_mtime (inode,le64_to_cpu (raw_inode->i_mtime), +le32_to_cpu (raw_inode->i_mtime_nsec));if (nilfs_is_metadata_file_inode (inode) && !S_ISREG (inode->i_mode))return -EIO ;/* this inode is for metadata and corrupted */ if (inode->i_nlink ==0 )
@@ -768,10 +768,10 @@ void nilfs_write_inode_common(struct inode *inode, raw_inode->i_gid =cpu_to_le32 (i_gid_read (inode)); raw_inode->i_links_count =cpu_to_le16 (inode->i_nlink); raw_inode->i_size =cpu_to_le64 (inode->i_size); - raw_inode->i_ctime =cpu_to_le64 (inode_get_ctime (inode).tv_sec); - raw_inode->i_mtime =cpu_to_le64 (inode->i_mtime.tv_sec); - raw_inode->i_ctime_nsec =cpu_to_le32 (inode_get_ctime (inode).tv_nsec); - raw_inode->i_mtime_nsec =cpu_to_le32 (inode->i_mtime.tv_nsec); + raw_inode->i_ctime =cpu_to_le64 (inode_get_ctime_sec (inode)); + raw_inode->i_mtime =cpu_to_le64 (inode_get_mtime_sec (inode)); + raw_inode->i_ctime_nsec =cpu_to_le32 (inode_get_ctime_nsec (inode)); + raw_inode->i_mtime_nsec =cpu_to_le32 (inode_get_mtime_nsec (inode)); raw_inode->i_blocks =cpu_to_le64 (inode->i_blocks); raw_inode->i_flags =cpu_to_le32 (ii->i_flags);
@@ -875,7 +875,7 @@ void nilfs_truncate(struct inode *inode)nilfs_truncate_bmap (ii, blkoff); - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode));if (IS_SYNC (inode))nilfs_set_transaction_flag (NILFS_TI_SYNC );
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 54/89 ntfs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/ntfs/inode.c | 25 +++++++++++++------------ fs/ntfs/mft.c | 2 +- 2 files changed, 14 insertions(+), 13 deletions(-)
fs/ntfs/inode.c +13 -12
@@ -648,7 +648,7 @@ static int ntfs_read_locked_inode(struct inode *vi)* mtime is the last change of the data within the file. Not changed * when only metadata is changed, e.g. a rename doesn't affect mtime. */ - vi->i_mtime =ntfs2utc (si->last_data_change_time); +inode_set_mtime_to_ts (vi,ntfs2utc (si->last_data_change_time));/* * ctime is the last change of the metadata of the file. This obviously * always changes, when mtime is changed. ctime can be changed on its
@@ -659,7 +659,7 @@ static int ntfs_read_locked_inode(struct inode *vi)* Last access to the data within the file. Not changed during a rename * for example but changed whenever the file is written to. */ - vi->i_atime =ntfs2utc (si->last_access_time); +inode_set_atime_to_ts (vi,ntfs2utc (si->last_access_time));/* Find the attribute list attribute if present. */ ntfs_attr_reinit_search_ctx (ctx);
@@ -1217,9 +1217,9 @@ static int ntfs_read_locked_attr_inode(struct inode *base_vi, struct inode *vi) vi->i_uid = base_vi->i_uid; vi->i_gid = base_vi->i_gid;set_nlink (vi, base_vi->i_nlink); - vi->i_mtime = base_vi->i_mtime; +inode_set_mtime_to_ts (vi,inode_get_mtime (base_vi));inode_set_ctime_to_ts (vi,inode_get_ctime (base_vi)); - vi->i_atime = base_vi->i_atime; +inode_set_atime_to_ts (vi,inode_get_atime (base_vi)); vi->i_generation = ni->seq_no = base_ni->seq_no;/* Set inode type to zero but preserve permissions. */
@@ -1483,9 +1483,9 @@ static int ntfs_read_locked_index_inode(struct inode *base_vi, struct inode *vi) vi->i_uid = base_vi->i_uid; vi->i_gid = base_vi->i_gid;set_nlink (vi, base_vi->i_nlink); - vi->i_mtime = base_vi->i_mtime; +inode_set_mtime_to_ts (vi,inode_get_mtime (base_vi));inode_set_ctime_to_ts (vi,inode_get_ctime (base_vi)); - vi->i_atime = base_vi->i_atime; +inode_set_atime_to_ts (vi,inode_get_atime (base_vi)); vi->i_generation = ni->seq_no = base_ni->seq_no;/* Set inode type to zero but preserve permissions. */ vi->i_mode = base_vi->i_mode & ~S_IFMT ;
@@ -2805,13 +2805,14 @@ int ntfs_truncate(struct inode *vi)if (!IS_NOCMTIME (VFS_I (base_ni)) && !IS_RDONLY (VFS_I (base_ni))) {struct timespec64 now =current_time (VFS_I (base_ni));struct timespec64 ctime =inode_get_ctime (VFS_I (base_ni)); +struct timespec64 mtime =inode_get_mtime (VFS_I (base_ni));int sync_it =0 ; -if (!timespec64_equal (&VFS_I (base_ni)->i_mtime, &now) || +if (!timespec64_equal (&mtime, &now) || !timespec64_equal (&ctime, &now)) sync_it =1 ;inode_set_ctime_to_ts (VFS_I (base_ni), now); -VFS_I (base_ni)->i_mtime = now; +inode_set_mtime_to_ts (VFS_I (base_ni), now);if (sync_it)mark_inode_dirty_sync (VFS_I (base_ni));
@@ -2925,9 +2926,9 @@ int ntfs_setattr(struct mnt_idmap *idmap, struct dentry *dentry, } }if (ia_valid &ATTR_ATIME ) - vi->i_atime = attr->ia_atime; +inode_set_atime_to_ts (vi, attr->ia_atime);if (ia_valid &ATTR_MTIME ) - vi->i_mtime = attr->ia_mtime; +inode_set_mtime_to_ts (vi, attr->ia_mtime);if (ia_valid &ATTR_CTIME )inode_set_ctime_to_ts (vi, attr->ia_ctime);mark_inode_dirty (vi);
@@ -2996,7 +2997,7 @@ int __ntfs_write_inode(struct inode *vi, int sync) si = (STANDARD_INFORMATION *)((u8 *)ctx->attr +le16_to_cpu (ctx->attr->data.resident.value_offset));/* Update the access times if they have changed. */ - nt =utc2ntfs (vi->i_mtime); + nt =utc2ntfs (inode_get_mtime (vi));if (si->last_data_change_time != nt) { ntfs_debug("Updating mtime for inode 0x%lx: old = 0x%llx, " "new = 0x%llx", vi->i_ino, (long long)
@@ -3014,7 +3015,7 @@ int __ntfs_write_inode(struct inode *vi, int sync) si->last_mft_change_time = nt; modified = true; } - nt =utc2ntfs (vi->i_atime); + nt =utc2ntfs (inode_get_atime (vi));if (si->last_access_time != nt) { ntfs_debug("Updating atime for inode 0x%lx: old = 0x%llx, " "new = 0x%llx", vi->i_ino,
fs/ntfs/mft.c +1 -1
@@ -2682,7 +2682,7 @@ ntfs_inode *ntfs_mft_record_alloc(ntfs_volume *vol, const int mode, vi->i_mode &= ~S_IWUGO ;/* Set the inode times to the current time. */ - vi->i_atime = vi->i_mtime =inode_set_ctime_current (vi); +simple_inode_init_ts (vi);/* * Set the file size to 0, the ntfs inode sizes are set to 0 by * the call to ntfs_init_big_inode() below.
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 55/89 ntfs3: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/ntfs3/file.c | 6 +++--- fs/ntfs3/frecord.c | 11 +++++++---- fs/ntfs3/inode.c | 25 +++++++++++++++---------- fs/ntfs3/namei.c | 4 ++-- 4 files changed, 27 insertions(+), 19 deletions(-)
fs/ntfs3/file.c +3 -3
@@ -342,7 +342,7 @@ static int ntfs_extend(struct inode *inode, loff_t pos, size_t count, err =0 ; } - 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)) {
@@ -400,7 +400,7 @@ static int ntfs_truncate(struct inode *inode, loff_t new_size)ni_unlock (ni); ni->std_fa |=FILE_ATTRIBUTE_ARCHIVE ; - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode));if (!IS_DIRSYNC (inode)) { dirty =1 ; }else {
@@ -642,7 +642,7 @@ static long ntfs_fallocate(struct file *file, int mode, loff_t vbo, loff_t len)filemap_invalidate_unlock (mapping);if (!err) { - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode));mark_inode_dirty (inode); }
fs/ntfs3/frecord.c +7 -4
@@ -3271,7 +3271,7 @@ int ni_write_inode(struct inode *inode, int sync, const char *hint)if (is_rec_inuse (ni->mi.mrec) && !(sbi->flags &NTFS_FLAGS_LOG_REPLAYING ) && inode->i_nlink) {bool modified = false; -struct timespec64 ctime =inode_get_ctime (inode); +struct timespec64 ts;/* Update times in standard attribute. */ std =ni_std (ni);
@@ -3281,19 +3281,22 @@ int ni_write_inode(struct inode *inode, int sync, const char *hint) }/* Update the access times if they have changed. */ - dup.m_time =kernel2nt (&inode->i_mtime); + ts =inode_get_mtime (inode); + dup.m_time =kernel2nt (&ts);if (std->m_time != dup.m_time) { std->m_time = dup.m_time; modified = true; } - dup.c_time =kernel2nt (&ctime); + ts =inode_get_mtime (inode); + dup.c_time =kernel2nt (&ts);if (std->c_time != dup.c_time) { std->c_time = dup.c_time; modified = true; } - dup.a_time =kernel2nt (&inode->i_atime); + ts =inode_get_atime (inode); + dup.a_time =kernel2nt (&ts);if (std->a_time != dup.a_time) { std->a_time = dup.a_time; modified = true;
fs/ntfs3/inode.c +15 -10
@@ -44,7 +44,7 @@ static struct inode *ntfs_read_mft(struct inode *inode,u64 t64;struct MFT_REC *rec;struct runs_tree *run; -struct timespec64 ctime; +struct timespec64 ts; inode->i_op =NULL ;/* Setup 'uid' and 'gid' */
@@ -169,10 +169,12 @@ static struct inode *ntfs_read_mft(struct inode *inode,#ifdef STATX_BTIME nt2kernel (std5->cr_time, &ni->i_crtime);#endif -nt2kernel (std5->a_time, &inode->i_atime); -nt2kernel (std5->c_time, &ctime); -inode_set_ctime_to_ts (inode, ctime); -nt2kernel (std5->m_time, &inode->i_mtime); +nt2kernel (std5->a_time, &ts); +inode_set_atime_to_ts (inode, ts); +nt2kernel (std5->c_time, &ts); +inode_set_ctime_to_ts (inode, ts); +nt2kernel (std5->m_time, &ts); +inode_set_mtime_to_ts (inode, ts); ni->std_fa = std5->fa;
@@ -960,7 +962,8 @@ int ntfs_write_end(struct file *file, struct address_space *mapping, loff_t pos,if (err >=0 ) {if (!(ni->std_fa &FILE_ATTRIBUTE_ARCHIVE )) { - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode, +inode_set_ctime_current (inode)); ni->std_fa |=FILE_ATTRIBUTE_ARCHIVE ; dirty = true; }
@@ -1660,9 +1663,11 @@ struct inode *ntfs_create_inode(struct mnt_idmap *idmap, struct inode *dir,d_instantiate (dentry, inode);/* Set original time. inode times (i_ctime) may be changed in ntfs_init_acl. */ - inode->i_atime = inode->i_mtime = -inode_set_ctime_to_ts (inode, ni->i_crtime); - dir->i_mtime =inode_set_ctime_to_ts (dir, ni->i_crtime); +inode_set_atime_to_ts (inode, ni->i_crtime); +inode_set_ctime_to_ts (inode, ni->i_crtime); +inode_set_mtime_to_ts (inode, ni->i_crtime); +inode_set_mtime_to_ts (dir, ni->i_crtime); +inode_set_ctime_to_ts (dir, ni->i_crtime);mark_inode_dirty (dir);mark_inode_dirty (inode);
@@ -1768,7 +1773,7 @@ int ntfs_unlink_inode(struct inode *dir, const struct dentry *dentry)if (!err) {drop_nlink (inode); - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));mark_inode_dirty (dir);inode_set_ctime_to_ts (inode,inode_get_ctime (dir));if (inode->i_nlink)
fs/ntfs3/namei.c +2 -2
@@ -156,8 +156,8 @@ static int ntfs_link(struct dentry *ode, struct inode *dir, struct dentry *de) err =ntfs_link_inode (inode, de);if (!err) { - dir->i_mtime =inode_set_ctime_to_ts ( - inode,inode_set_ctime_current (dir)); +inode_set_ctime_current (inode); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));mark_inode_dirty (inode);mark_inode_dirty (dir);d_instantiate (de, inode);
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 56/89 ocfs2: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/ocfs2/acl.c | 4 ++-- fs/ocfs2/alloc.c | 6 +++--- fs/ocfs2/aops.c | 6 +++--- fs/ocfs2/dir.c | 9 +++++---- fs/ocfs2/dlmfs/dlmfs.c | 4 ++-- fs/ocfs2/dlmglue.c | 29 ++++++++++++++--------------- fs/ocfs2/file.c | 30 ++++++++++++++++-------------- fs/ocfs2/inode.c | 28 ++++++++++++++-------------- fs/ocfs2/move_extents.c | 4 ++-- fs/ocfs2/namei.c | 16 ++++++++-------- fs/ocfs2/refcounttree.c | 12 ++++++------ fs/ocfs2/xattr.c | 4 ++-- 12 files changed, 77 insertions(+), 75 deletions(-)
fs/ocfs2/acl.c +2 -2
@@ -193,8 +193,8 @@ static int ocfs2_acl_set_mode(struct inode *inode, struct buffer_head *di_bh, inode->i_mode = new_mode;inode_set_ctime_current (inode); di->i_mode =cpu_to_le16 (inode->i_mode); - di->i_ctime =cpu_to_le64 (inode_get_ctime (inode).tv_sec); - di->i_ctime_nsec =cpu_to_le32 (inode_get_ctime (inode).tv_nsec); + di->i_ctime =cpu_to_le64 (inode_get_ctime_sec (inode)); + di->i_ctime_nsec =cpu_to_le32 (inode_get_ctime_nsec (inode));ocfs2_update_inode_fsync_trans (handle, inode,0 );ocfs2_journal_dirty (handle, di_bh);
fs/ocfs2/alloc.c +3 -3
@@ -7436,10 +7436,10 @@ int ocfs2_truncate_inline(struct inode *inode, struct buffer_head *di_bh, } inode->i_blocks =ocfs2_inode_sector_count (inode); - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode)); - di->i_ctime = di->i_mtime =cpu_to_le64 (inode_get_ctime (inode).tv_sec); - di->i_ctime_nsec = di->i_mtime_nsec =cpu_to_le32 (inode_get_ctime (inode).tv_nsec); + di->i_ctime = di->i_mtime =cpu_to_le64 (inode_get_ctime_sec (inode)); + di->i_ctime_nsec = di->i_mtime_nsec =cpu_to_le32 (inode_get_ctime_nsec (inode));ocfs2_update_inode_fsync_trans (handle, inode,1 );ocfs2_journal_dirty (handle, di_bh);
fs/ocfs2/aops.c +3 -3
@@ -2048,9 +2048,9 @@ int ocfs2_write_end_nolock(struct address_space *mapping, } inode->i_blocks =ocfs2_inode_sector_count (inode); di->i_size =cpu_to_le64 ((u64 )i_size_read (inode)); - inode->i_mtime =inode_set_ctime_current (inode); - di->i_mtime = di->i_ctime =cpu_to_le64 (inode->i_mtime.tv_sec); - di->i_mtime_nsec = di->i_ctime_nsec =cpu_to_le32 (inode->i_mtime.tv_nsec); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode)); + di->i_mtime = di->i_ctime =cpu_to_le64 (inode_get_mtime_sec (inode)); + di->i_mtime_nsec = di->i_ctime_nsec =cpu_to_le32 (inode_get_mtime_nsec (inode));if (handle)ocfs2_update_inode_fsync_trans (handle, inode,1 ); }
fs/ocfs2/dir.c +5 -4
@@ -1658,7 +1658,8 @@ int __ocfs2_add_entry(handle_t *handle, offset, ocfs2_dir_trailer_blk_off(dir->i_sb));if (ocfs2_dirent_would_fit (de, rec_len)) { - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir, +inode_set_ctime_current (dir)); retval =ocfs2_mark_inode_dirty (handle, dir, parent_fe_bh);if (retval <0 ) {mlog_errno (retval);
@@ -2962,11 +2963,11 @@ static int ocfs2_expand_inline_dir(struct inode *dir, struct buffer_head *di_bh,ocfs2_dinode_new_extent_list (dir, di);i_size_write (dir, sb->s_blocksize); - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir)); di->i_size =cpu_to_le64 (sb->s_blocksize); - di->i_ctime = di->i_mtime =cpu_to_le64 (inode_get_ctime (dir).tv_sec); - di->i_ctime_nsec = di->i_mtime_nsec =cpu_to_le32 (inode_get_ctime (dir).tv_nsec); + di->i_ctime = di->i_mtime =cpu_to_le64 (inode_get_ctime_sec (dir)); + di->i_ctime_nsec = di->i_mtime_nsec =cpu_to_le32 (inode_get_ctime_nsec (dir));ocfs2_update_inode_fsync_trans (handle, dir,1 );/*
fs/ocfs2/dlmfs/dlmfs.c +2 -2
@@ -336,7 +336,7 @@ static struct inode *dlmfs_get_root_inode(struct super_block *sb)if (inode) { inode->i_ino =get_next_ino ();inode_init_owner (&nop_mnt_idmap, inode,NULL , mode); - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode);inc_nlink (inode); inode->i_fop = &simple_dir_operations;
@@ -359,7 +359,7 @@ static struct inode *dlmfs_get_inode(struct inode *parent, inode->i_ino =get_next_ino ();inode_init_owner (&nop_mnt_idmap, inode, parent, mode); - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); ip =DLMFS_I (inode); ip->ip_conn =DLMFS_I (parent)->ip_conn;
fs/ocfs2/dlmglue.c +14 -15
@@ -2162,7 +2162,7 @@ static void __ocfs2_stuff_meta_lvb(struct inode *inode)struct ocfs2_inode_info *oi =OCFS2_I (inode);struct ocfs2_lock_res *lockres = &oi->ip_inode_lockres;struct ocfs2_meta_lvb *lvb; -struct timespec64 ctime =inode_get_ctime (inode); +struct timespec64 ts; lvb =ocfs2_dlm_lvb (&lockres->l_lksb);
@@ -2183,12 +2183,12 @@ static void __ocfs2_stuff_meta_lvb(struct inode *inode) lvb->lvb_igid =cpu_to_be32 (i_gid_read (inode)); lvb->lvb_imode =cpu_to_be16 (inode->i_mode); lvb->lvb_inlink =cpu_to_be16 (inode->i_nlink); - lvb->lvb_iatime_packed = -cpu_to_be64 (ocfs2_pack_timespec (&inode->i_atime)); - lvb->lvb_ictime_packed = -cpu_to_be64 (ocfs2_pack_timespec (&ctime)); - lvb->lvb_imtime_packed = -cpu_to_be64 (ocfs2_pack_timespec (&inode->i_mtime)); + ts =inode_get_atime (inode); + lvb->lvb_iatime_packed =cpu_to_be64 (ocfs2_pack_timespec (&ts)); + ts =inode_get_ctime (inode); + lvb->lvb_ictime_packed =cpu_to_be64 (ocfs2_pack_timespec (&ts)); + ts =inode_get_mtime (inode); + lvb->lvb_imtime_packed =cpu_to_be64 (ocfs2_pack_timespec (&ts)); lvb->lvb_iattr =cpu_to_be32 (oi->ip_attr); lvb->lvb_idynfeatures =cpu_to_be16 (oi->ip_dyn_features); lvb->lvb_igeneration =cpu_to_be32 (inode->i_generation);
@@ -2209,7 +2209,7 @@ static int ocfs2_refresh_inode_from_lvb(struct inode *inode)struct ocfs2_inode_info *oi =OCFS2_I (inode);struct ocfs2_lock_res *lockres = &oi->ip_inode_lockres;struct ocfs2_meta_lvb *lvb; -struct timespec64 ctime; +struct timespec64 ts;mlog_meta_lvb (0 , lockres);
@@ -2236,13 +2236,12 @@ static int ocfs2_refresh_inode_from_lvb(struct inode *inode)i_gid_write (inode,be32_to_cpu (lvb->lvb_igid)); inode->i_mode =be16_to_cpu (lvb->lvb_imode);set_nlink (inode,be16_to_cpu (lvb->lvb_inlink)); -ocfs2_unpack_timespec (&inode->i_atime, -be64_to_cpu (lvb->lvb_iatime_packed)); -ocfs2_unpack_timespec (&inode->i_mtime, -be64_to_cpu (lvb->lvb_imtime_packed)); -ocfs2_unpack_timespec (&ctime, -be64_to_cpu (lvb->lvb_ictime_packed)); -inode_set_ctime_to_ts (inode, ctime); +ocfs2_unpack_timespec (&ts,be64_to_cpu (lvb->lvb_iatime_packed)); +inode_set_atime_to_ts (inode, ts); +ocfs2_unpack_timespec (&ts,be64_to_cpu (lvb->lvb_imtime_packed)); +inode_set_mtime_to_ts (inode, ts); +ocfs2_unpack_timespec (&ts,be64_to_cpu (lvb->lvb_ictime_packed)); +inode_set_ctime_to_ts (inode, ts);spin_unlock (&oi->ip_lock);return 0 ; }
fs/ocfs2/file.c +16 -14
@@ -233,16 +233,18 @@ int ocfs2_should_update_atime(struct inode *inode,if (vfsmnt->mnt_flags &MNT_RELATIME ) {struct timespec64 ctime =inode_get_ctime (inode); +struct timespec64 atime =inode_get_atime (inode); +struct timespec64 mtime =inode_get_mtime (inode); -if ((timespec64_compare (&inode->i_atime, &inode->i_mtime) <=0 ) || - (timespec64_compare (&inode->i_atime, &ctime) <=0 )) +if ((timespec64_compare (&atime, &mtime) <=0 ) || + (timespec64_compare (&atime, &ctime) <=0 ))return 1 ;return 0 ; } now =current_time (inode); -if ((now.tv_sec - inode->i_atime.tv_sec <= osb->s_atime_quantum)) +if ((now.tv_sec -inode_get_atime_sec (inode) <= osb->s_atime_quantum))return 0 ;else return 1 ;
@@ -275,9 +277,9 @@ int ocfs2_update_inode_atime(struct inode *inode,* have i_rwsem to guard against concurrent changes to other * inode fields. */ - inode->i_atime =current_time (inode); - di->i_atime =cpu_to_le64 (inode->i_atime.tv_sec); - di->i_atime_nsec =cpu_to_le32 (inode->i_atime.tv_nsec); +inode_set_atime_to_ts (inode,current_time (inode)); + di->i_atime =cpu_to_le64 (inode_get_atime_sec (inode)); + di->i_atime_nsec =cpu_to_le32 (inode_get_atime_nsec (inode));ocfs2_update_inode_fsync_trans (handle, inode,0 );ocfs2_journal_dirty (handle, bh);
@@ -296,7 +298,7 @@ int ocfs2_set_inode_size(handle_t *handle,i_size_write (inode, new_i_size); inode->i_blocks =ocfs2_inode_sector_count (inode); - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode)); status =ocfs2_mark_inode_dirty (handle, inode, fe_bh);if (status <0 ) {
@@ -417,12 +419,12 @@ static int ocfs2_orphan_for_truncate(struct ocfs2_super *osb, }i_size_write (inode, new_i_size); - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode)); di = (struct ocfs2_dinode *) fe_bh->b_data; di->i_size =cpu_to_le64 (new_i_size); - di->i_ctime = di->i_mtime =cpu_to_le64 (inode_get_ctime (inode).tv_sec); - di->i_ctime_nsec = di->i_mtime_nsec =cpu_to_le32 (inode_get_ctime (inode).tv_nsec); + di->i_ctime = di->i_mtime =cpu_to_le64 (inode_get_ctime_sec (inode)); + di->i_ctime_nsec = di->i_mtime_nsec =cpu_to_le32 (inode_get_ctime_nsec (inode));ocfs2_update_inode_fsync_trans (handle, inode,0 );ocfs2_journal_dirty (handle, fe_bh);
@@ -821,9 +823,9 @@ static int ocfs2_write_zero_page(struct inode *inode, u64 abs_from,i_size_write (inode, abs_to); inode->i_blocks =ocfs2_inode_sector_count (inode); di->i_size =cpu_to_le64 ((u64 )i_size_read (inode)); - inode->i_mtime =inode_set_ctime_current (inode); - di->i_mtime = di->i_ctime =cpu_to_le64 (inode->i_mtime.tv_sec); - di->i_ctime_nsec =cpu_to_le32 (inode->i_mtime.tv_nsec); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode)); + di->i_mtime = di->i_ctime =cpu_to_le64 (inode_get_mtime_sec (inode)); + di->i_ctime_nsec =cpu_to_le32 (inode_get_mtime_nsec (inode)); di->i_mtime_nsec = di->i_ctime_nsec;if (handle) {ocfs2_journal_dirty (handle, di_bh);
@@ -2040,7 +2042,7 @@ static int __ocfs2_change_file_space(struct file *file, struct inode *inode, goto out_inode_unlock; } - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode)); ret =ocfs2_mark_inode_dirty (handle, inode, di_bh);if (ret <0 )mlog_errno (ret);
fs/ocfs2/inode.c +14 -14
@@ -302,10 +302,10 @@ void ocfs2_populate_inode(struct inode *inode, struct ocfs2_dinode *fe, inode->i_blocks =ocfs2_inode_sector_count (inode); inode->i_mapping->a_ops = &ocfs2_aops; } - inode->i_atime.tv_sec =le64_to_cpu (fe->i_atime); - inode->i_atime.tv_nsec =le32_to_cpu (fe->i_atime_nsec); - inode->i_mtime.tv_sec =le64_to_cpu (fe->i_mtime); - inode->i_mtime.tv_nsec =le32_to_cpu (fe->i_mtime_nsec); +inode_set_atime (inode,le64_to_cpu (fe->i_atime), +le32_to_cpu (fe->i_atime_nsec)); +inode_set_mtime (inode,le64_to_cpu (fe->i_mtime), +le32_to_cpu (fe->i_mtime_nsec));inode_set_ctime (inode,le64_to_cpu (fe->i_ctime),le32_to_cpu (fe->i_ctime_nsec));
@@ -1312,12 +1312,12 @@ int ocfs2_mark_inode_dirty(handle_t *handle, fe->i_uid =cpu_to_le32 (i_uid_read (inode)); fe->i_gid =cpu_to_le32 (i_gid_read (inode)); fe->i_mode =cpu_to_le16 (inode->i_mode); - fe->i_atime =cpu_to_le64 (inode->i_atime.tv_sec); - fe->i_atime_nsec =cpu_to_le32 (inode->i_atime.tv_nsec); - fe->i_ctime =cpu_to_le64 (inode_get_ctime (inode).tv_sec); - fe->i_ctime_nsec =cpu_to_le32 (inode_get_ctime (inode).tv_nsec); - fe->i_mtime =cpu_to_le64 (inode->i_mtime.tv_sec); - fe->i_mtime_nsec =cpu_to_le32 (inode->i_mtime.tv_nsec); + fe->i_atime =cpu_to_le64 (inode_get_atime_sec (inode)); + fe->i_atime_nsec =cpu_to_le32 (inode_get_atime_nsec (inode)); + fe->i_ctime =cpu_to_le64 (inode_get_ctime_sec (inode)); + fe->i_ctime_nsec =cpu_to_le32 (inode_get_ctime_nsec (inode)); + fe->i_mtime =cpu_to_le64 (inode_get_mtime_sec (inode)); + fe->i_mtime_nsec =cpu_to_le32 (inode_get_mtime_nsec (inode));ocfs2_journal_dirty (handle, bh);ocfs2_update_inode_fsync_trans (handle, inode,1 );
@@ -1348,10 +1348,10 @@ void ocfs2_refresh_inode(struct inode *inode, inode->i_blocks =0 ; else inode->i_blocks = ocfs2_inode_sector_count(inode); - inode->i_atime.tv_sec =le64_to_cpu (fe->i_atime); - inode->i_atime.tv_nsec =le32_to_cpu (fe->i_atime_nsec); - inode->i_mtime.tv_sec =le64_to_cpu (fe->i_mtime); - inode->i_mtime.tv_nsec =le32_to_cpu (fe->i_mtime_nsec); +inode_set_atime (inode,le64_to_cpu (fe->i_atime), +le32_to_cpu (fe->i_atime_nsec)); +inode_set_mtime (inode,le64_to_cpu (fe->i_mtime), +le32_to_cpu (fe->i_mtime_nsec));inode_set_ctime (inode,le64_to_cpu (fe->i_ctime),le32_to_cpu (fe->i_ctime_nsec));
fs/ocfs2/move_extents.c +2 -2
@@ -951,8 +951,8 @@ static int ocfs2_move_extents(struct ocfs2_move_extents_context *context) di = (struct ocfs2_dinode *)di_bh->b_data;inode_set_ctime_current (inode); - di->i_ctime =cpu_to_le64 (inode_get_ctime (inode).tv_sec); - di->i_ctime_nsec =cpu_to_le32 (inode_get_ctime (inode).tv_nsec); + di->i_ctime =cpu_to_le64 (inode_get_ctime_sec (inode)); + di->i_ctime_nsec =cpu_to_le32 (inode_get_ctime_nsec (inode));ocfs2_update_inode_fsync_trans (handle, inode,0 );ocfs2_journal_dirty (handle, di_bh);
fs/ocfs2/namei.c +8 -8
@@ -795,8 +795,8 @@ static int ocfs2_link(struct dentry *old_dentry,inc_nlink (inode);inode_set_ctime_current (inode);ocfs2_set_links_count (fe, inode->i_nlink); - fe->i_ctime =cpu_to_le64 (inode_get_ctime (inode).tv_sec); - fe->i_ctime_nsec =cpu_to_le32 (inode_get_ctime (inode).tv_nsec); + fe->i_ctime =cpu_to_le64 (inode_get_ctime_sec (inode)); + fe->i_ctime_nsec =cpu_to_le32 (inode_get_ctime_nsec (inode));ocfs2_journal_dirty (handle, fe_bh); err = ocfs2_add_entry(handle, dentry, inode,
@@ -995,7 +995,7 @@ static int ocfs2_unlink(struct inode *dir,ocfs2_set_links_count (fe, inode->i_nlink);ocfs2_journal_dirty (handle, fe_bh); - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));if (S_ISDIR (inode->i_mode))drop_nlink (dir);
@@ -1550,8 +1550,8 @@ static int ocfs2_rename(struct mnt_idmap *idmap,if (status >=0 ) { old_di = (struct ocfs2_dinode *) old_inode_bh->b_data; - old_di->i_ctime =cpu_to_le64 (inode_get_ctime (old_inode).tv_sec); - old_di->i_ctime_nsec =cpu_to_le32 (inode_get_ctime (old_inode).tv_nsec); + old_di->i_ctime =cpu_to_le64 (inode_get_ctime_sec (old_inode)); + old_di->i_ctime_nsec =cpu_to_le32 (inode_get_ctime_nsec (old_inode));ocfs2_journal_dirty (handle, old_inode_bh); }else mlog_errno (status);
@@ -1592,7 +1592,7 @@ static int ocfs2_rename(struct mnt_idmap *idmap,drop_nlink (new_inode);inode_set_ctime_current (new_inode); } - old_dir->i_mtime =inode_set_ctime_current (old_dir); +inode_set_mtime_to_ts (old_dir,inode_set_ctime_current (old_dir));if (update_dot_dot) { status = ocfs2_update_entry(old_inode, handle,
@@ -1614,8 +1614,8 @@ static int ocfs2_rename(struct mnt_idmap *idmap,if (old_dir != new_dir) {/* Keep the same times on both directories.*/ - new_dir->i_mtime =inode_set_ctime_to_ts (new_dir, -inode_get_ctime (old_dir)); +inode_set_mtime_to_ts (new_dir, +inode_set_ctime_to_ts (new_dir,inode_get_ctime (old_dir)));/* * This will also pick up the i_nlink change from the
fs/ocfs2/refcounttree.c +6 -6
@@ -3751,8 +3751,8 @@ static int ocfs2_change_ctime(struct inode *inode, }inode_set_ctime_current (inode); - di->i_ctime =cpu_to_le64 (inode_get_ctime (inode).tv_sec); - di->i_ctime_nsec =cpu_to_le32 (inode_get_ctime (inode).tv_nsec); + di->i_ctime =cpu_to_le64 (inode_get_ctime_sec (inode)); + di->i_ctime_nsec =cpu_to_le32 (inode_get_ctime_nsec (inode));ocfs2_journal_dirty (handle, di_bh);
@@ -4075,10 +4075,10 @@ static int ocfs2_complete_reflink(struct inode *s_inode,*/ inode_set_ctime_current (t_inode); - di->i_ctime =cpu_to_le64 (inode_get_ctime (t_inode).tv_sec); - di->i_ctime_nsec =cpu_to_le32 (inode_get_ctime (t_inode).tv_nsec); + di->i_ctime =cpu_to_le64 (inode_get_ctime_sec (t_inode)); + di->i_ctime_nsec =cpu_to_le32 (inode_get_ctime_nsec (t_inode)); - t_inode->i_mtime = s_inode->i_mtime; +inode_set_mtime_to_ts (t_inode,inode_get_mtime (s_inode)); di->i_mtime = s_di->i_mtime; di->i_mtime_nsec = s_di->i_mtime_nsec; }
@@ -4456,7 +4456,7 @@ int ocfs2_reflink_update_dest(struct inode *dest,if (newlen >i_size_read (dest))i_size_write (dest, newlen);spin_unlock (&OCFS2_I (dest)->ip_lock); - dest->i_mtime =inode_set_ctime_current (dest); +inode_set_mtime_to_ts (dest,inode_set_ctime_current (dest)); ret =ocfs2_mark_inode_dirty (handle, dest, d_bh);if (ret) {
fs/ocfs2/xattr.c +2 -2
@@ -3422,8 +3422,8 @@ static int __ocfs2_xattr_set_handle(struct inode *inode, }inode_set_ctime_current (inode); - di->i_ctime =cpu_to_le64 (inode_get_ctime (inode).tv_sec); - di->i_ctime_nsec =cpu_to_le32 (inode_get_ctime (inode).tv_nsec); + di->i_ctime =cpu_to_le64 (inode_get_ctime_sec (inode)); + di->i_ctime_nsec =cpu_to_le32 (inode_get_ctime_nsec (inode));ocfs2_journal_dirty (ctxt->handle, xis->inode_bh); } out:
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 57/89 omfs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/omfs/inode.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-)
fs/omfs/inode.c +5 -7
@@ -51,7 +51,7 @@ struct inode *omfs_new_inode(struct inode *dir, umode_t mode)inode_init_owner (&nop_mnt_idmap, inode,NULL , mode); inode->i_mapping->a_ops = &omfs_aops; - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode);switch (mode &S_IFMT ) {case S_IFDIR : inode->i_op = &omfs_dir_inops;
@@ -134,8 +134,8 @@ static int __omfs_write_inode(struct inode *inode, int wait) oi->i_head.h_magic =OMFS_IMAGIC ; oi->i_size =cpu_to_be64 (inode->i_size); - ctime =inode_get_ctime (inode).tv_sec *1000LL + - ((inode_get_ctime (inode).tv_nsec +999 )/1000 ); + ctime =inode_get_ctime_sec (inode) *1000LL + + ((inode_get_ctime_nsec (inode) +999 )/1000 ); oi->i_ctime =cpu_to_be64 (ctime);omfs_update_checksums (oi);
@@ -230,11 +230,9 @@ struct inode *omfs_iget(struct super_block *sb, ino_t ino) ctime =be64_to_cpu (oi->i_ctime); nsecs =do_div (ctime,1000 ) *1000L ; - inode->i_atime.tv_sec = ctime; - inode->i_mtime.tv_sec = ctime; +inode_set_atime (inode, ctime, nsecs); +inode_set_mtime (inode, ctime, nsecs);inode_set_ctime (inode, ctime, nsecs); - inode->i_atime.tv_nsec = nsecs; - inode->i_mtime.tv_nsec = nsecs; inode->i_mapping->a_ops = &omfs_aops;
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 58/89 openpromfs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/openpromfs/inode.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
fs/openpromfs/inode.c +2 -2
@@ -237,7 +237,7 @@ static struct dentry *openpromfs_lookup(struct inode *dir, struct dentry *dentryif (IS_ERR (inode))return ERR_CAST (inode);if (inode->i_state &I_NEW ) { - inode->i_mtime = inode->i_atime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); ent_oi =OP_I (inode); ent_oi->type = ent_type; ent_oi->u = ent_data;
@@ -387,7 +387,7 @@ static int openprom_fill_super(struct super_block *s, struct fs_context *fc) goto out_no_root; } - root_inode->i_mtime = root_inode->i_atime =inode_set_ctime_current (root_inode); +simple_inode_init_ts (root_inode); root_inode->i_op = &openprom_inode_operations; root_inode->i_fop = &openprom_operations; root_inode->i_mode =S_IFDIR |S_IRUGO |S_IXUGO ;
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 59/89 orangefs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/orangefs/orangefs-utils.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)
fs/orangefs/orangefs-utils.c +8 -8
@@ -155,14 +155,14 @@ static inline void copy_attributes_from_inode(struct inode *inode,if (orangefs_inode->attr_valid &ATTR_ATIME ) { attrs->mask |=ORANGEFS_ATTR_SYS_ATIME ;if (orangefs_inode->attr_valid &ATTR_ATIME_SET ) { - attrs->atime = (time64_t )inode->i_atime.tv_sec; + attrs->atime = (time64_t )inode_get_atime_sec (inode); attrs->mask |=ORANGEFS_ATTR_SYS_ATIME_SET ; } }if (orangefs_inode->attr_valid &ATTR_MTIME ) { attrs->mask |=ORANGEFS_ATTR_SYS_MTIME ;if (orangefs_inode->attr_valid &ATTR_MTIME_SET ) { - attrs->mtime = (time64_t )inode->i_mtime.tv_sec; + attrs->mtime = (time64_t )inode_get_mtime_sec (inode); attrs->mask |=ORANGEFS_ATTR_SYS_MTIME_SET ; } }
@@ -357,15 +357,15 @@ int orangefs_inode_getattr(struct inode *inode, int flags) downcall.resp.getattr.attributes.owner); inode->i_gid =make_kgid (&init_user_ns, new_op-> downcall.resp.getattr.attributes.group); - inode->i_atime.tv_sec = (time64_t )new_op-> - downcall.resp.getattr.attributes.atime; - inode->i_mtime.tv_sec = (time64_t )new_op-> - downcall.resp.getattr.attributes.mtime; +inode_set_atime (inode, + (time64_t )new_op->downcall.resp.getattr.attributes.atime, +0 ); +inode_set_mtime (inode, + (time64_t )new_op->downcall.resp.getattr.attributes.mtime, +0 );inode_set_ctime (inode, (time64_t )new_op->downcall.resp.getattr.attributes.ctime,0 ); - inode->i_atime.tv_nsec =0 ; - inode->i_mtime.tv_nsec =0 ;/* special case: mark the root inode as sticky */ inode->i_mode = type | (is_root_handle(inode) ? S_ISVTX : 0) |
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 60/89 overlayfs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/overlayfs/file.c | 9 ++++++--- fs/overlayfs/inode.c | 3 ++- fs/overlayfs/util.c | 4 ++-- 3 files changed, 10 insertions(+), 6 deletions(-)
fs/overlayfs/file.c +6 -3
@@ -250,6 +250,7 @@ static void ovl_file_accessed(struct file *file) {struct inode *inode, *upperinode;struct timespec64 ctime, uctime; +struct timespec64 mtime, umtime;if (file->f_flags &O_NOATIME )return ;
@@ -262,9 +263,11 @@ static void ovl_file_accessed(struct file *file) ctime =inode_get_ctime (inode); uctime =inode_get_ctime (upperinode); -if ((!timespec64_equal (&inode->i_mtime, &upperinode->i_mtime) || - !timespec64_equal (&ctime, &uctime))) { - inode->i_mtime = upperinode->i_mtime; + mtime =inode_get_mtime (inode); + umtime =inode_get_mtime (upperinode); +if ((!timespec64_equal (&mtime, &umtime)) || + !timespec64_equal (&ctime, &uctime)) { +inode_set_mtime_to_ts (inode,inode_get_mtime (upperinode));inode_set_ctime_to_ts (inode, uctime); }
fs/overlayfs/inode.c +2 -1
@@ -579,7 +579,8 @@ int ovl_update_time(struct inode *inode, int flags)if (upperpath.dentry) {touch_atime (&upperpath); - inode->i_atime =d_inode (upperpath.dentry)->i_atime; +inode_set_atime_to_ts (inode, +inode_get_atime (d_inode (upperpath.dentry))); } }return 0 ;
fs/overlayfs/util.c +2 -2
@@ -1509,8 +1509,8 @@ void ovl_copyattr(struct inode *inode) inode->i_uid =vfsuid_into_kuid (vfsuid); inode->i_gid =vfsgid_into_kgid (vfsgid); inode->i_mode = realinode->i_mode; - inode->i_atime = realinode->i_atime; - inode->i_mtime = realinode->i_mtime; +inode_set_atime_to_ts (inode,inode_get_atime (realinode)); +inode_set_mtime_to_ts (inode,inode_get_mtime (realinode));inode_set_ctime_to_ts (inode,inode_get_ctime (realinode));i_size_write (inode,i_size_read (realinode));spin_unlock (&inode->i_lock);
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 61/89 proc: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/proc/base.c | 2 +- fs/proc/inode.c | 2 +- fs/proc/proc_sysctl.c | 2 +- fs/proc/self.c | 2 +- fs/proc/thread_self.c | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-)
fs/proc/base.c +1 -1
@@ -1898,7 +1898,7 @@ struct inode *proc_pid_make_inode(struct super_block *sb, ei =PROC_I (inode); inode->i_mode = mode; inode->i_ino =get_next_ino (); - inode->i_mtime = inode->i_atime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); inode->i_op = &proc_def_inode_operations;/*
fs/proc/inode.c +1 -1
@@ -657,7 +657,7 @@ struct inode *proc_get_inode(struct super_block *sb, struct proc_dir_entry *de) inode->i_private = de->data; inode->i_ino = de->low_ino; - inode->i_mtime = inode->i_atime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode);PROC_I (inode)->pde = de;if (is_empty_pde (de)) {make_empty_dir_inode (inode);
fs/proc/proc_sysctl.c +1 -1
@@ -465,7 +465,7 @@ static struct inode *proc_sys_make_inode(struct super_block *sb, head->count++;spin_unlock (&sysctl_lock); - inode->i_mtime = inode->i_atime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); inode->i_mode = table->mode;if (!S_ISDIR (table->mode)) { inode->i_mode |=S_IFREG ;
fs/proc/self.c +1 -1
@@ -46,7 +46,7 @@ int proc_setup_self(struct super_block *s)struct inode *inode =new_inode (s);if (inode) { inode->i_ino = self_inum; - inode->i_mtime = inode->i_atime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); inode->i_mode =S_IFLNK |S_IRWXUGO ; inode->i_uid =GLOBAL_ROOT_UID ; inode->i_gid =GLOBAL_ROOT_GID ;
fs/proc/thread_self.c +1 -1
@@ -46,7 +46,7 @@ int proc_setup_thread_self(struct super_block *s)struct inode *inode =new_inode (s);if (inode) { inode->i_ino = thread_self_inum; - inode->i_mtime = inode->i_atime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); inode->i_mode =S_IFLNK |S_IRWXUGO ; inode->i_uid =GLOBAL_ROOT_UID ; inode->i_gid =GLOBAL_ROOT_GID ;
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 62/89 pstore: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/pstore/inode.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
fs/pstore/inode.c +3 -2
@@ -223,7 +223,7 @@ static struct inode *pstore_get_inode(struct super_block *sb)struct inode *inode =new_inode (sb);if (inode) { inode->i_ino =get_next_ino (); - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); }return inode; }
@@ -390,7 +390,8 @@ int pstore_mkfile(struct dentry *root, struct pstore_record *record) inode->i_private = private;if (record->time.tv_sec) - inode->i_mtime =inode_set_ctime_to_ts (inode, record->time); +inode_set_mtime_to_ts (inode, +inode_set_ctime_to_ts (inode, record->time));d_add (dentry, inode);
Signature · 1 line
2.41.0
Re: [PATCH v2 62/89] pstore: convert to new timestamp accessors
Quoted 3 lines · Jeff Layton
Convert to using the new inode timestamp accessor functions.
Signed-off-by Jeff Layton <[email protected]>
Signature · 1 line
Kees Cook
Jeff Layton
maintainerPATCH v2 63/89 qnx4: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/qnx4/inode.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
fs/qnx4/inode.c +2 -4
@@ -301,10 +301,8 @@ struct inode *qnx4_iget(struct super_block *sb, unsigned long ino)i_gid_write (inode, (gid_t )le16_to_cpu (raw_inode->di_gid));set_nlink (inode,le16_to_cpu (raw_inode->di_nlink)); inode->i_size =le32_to_cpu (raw_inode->di_size); - inode->i_mtime.tv_sec =le32_to_cpu (raw_inode->di_mtime); - inode->i_mtime.tv_nsec =0 ; - inode->i_atime.tv_sec =le32_to_cpu (raw_inode->di_atime); - inode->i_atime.tv_nsec =0 ; +inode_set_mtime (inode,le32_to_cpu (raw_inode->di_mtime),0 ); +inode_set_atime (inode,le32_to_cpu (raw_inode->di_atime),0 );inode_set_ctime (inode,le32_to_cpu (raw_inode->di_ctime),0 ); inode->i_blocks =le32_to_cpu (raw_inode->di_first_xtnt.xtnt_size);
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 64/89 qnx6: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/qnx6/inode.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
fs/qnx6/inode.c +2 -4
@@ -558,10 +558,8 @@ struct inode *qnx6_iget(struct super_block *sb, unsigned ino)i_uid_write (inode, (uid_t )fs32_to_cpu (sbi, raw_inode->di_uid));i_gid_write (inode, (gid_t )fs32_to_cpu (sbi, raw_inode->di_gid)); inode->i_size =fs64_to_cpu (sbi, raw_inode->di_size); - inode->i_mtime.tv_sec =fs32_to_cpu (sbi, raw_inode->di_mtime); - inode->i_mtime.tv_nsec =0 ; - inode->i_atime.tv_sec =fs32_to_cpu (sbi, raw_inode->di_atime); - inode->i_atime.tv_nsec =0 ; +inode_set_mtime (inode,fs32_to_cpu (sbi, raw_inode->di_mtime),0 ); +inode_set_atime (inode,fs32_to_cpu (sbi, raw_inode->di_atime),0 );inode_set_ctime (inode,fs32_to_cpu (sbi, raw_inode->di_ctime),0 );/* calc blocks based on 512 byte blocksize */
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 65/89 ramfs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/ramfs/inode.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
fs/ramfs/inode.c +4 -3
@@ -65,7 +65,7 @@ struct inode *ramfs_get_inode(struct super_block *sb, inode->i_mapping->a_ops = &ram_aops;mapping_set_gfp_mask (inode->i_mapping,GFP_HIGHUSER );mapping_set_unevictable (inode->i_mapping); - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode);switch (mode &S_IFMT ) {default :init_special_inode (inode, mode, dev);
@@ -105,7 +105,7 @@ ramfs_mknod(struct mnt_idmap *idmap, struct inode *dir,d_instantiate (dentry, inode);dget (dentry);/* Extra count - pin the dentry in core */ error =0 ; - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir)); }return error; }
@@ -138,7 +138,8 @@ static int ramfs_symlink(struct mnt_idmap *idmap, struct inode *dir,if (!error) {d_instantiate (dentry, inode);dget (dentry); - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir, +inode_set_ctime_current (dir)); }else iput (inode); }
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 66/89 reiserfs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/reiserfs/inode.c | 26 +++++++++++--------------- fs/reiserfs/namei.c | 8 ++++---- fs/reiserfs/stree.c | 5 +++-- fs/reiserfs/super.c | 2 +- 4 files changed, 19 insertions(+), 22 deletions(-)
fs/reiserfs/inode.c +11 -15
@@ -1257,11 +1257,9 @@ static void init_inode(struct inode *inode, struct treepath *path)i_uid_write (inode,sd_v1_uid (sd));i_gid_write (inode,sd_v1_gid (sd)); inode->i_size =sd_v1_size (sd); - inode->i_atime.tv_sec =sd_v1_atime (sd); - inode->i_mtime.tv_sec =sd_v1_mtime (sd); +inode_set_atime (inode,sd_v1_atime (sd),0 ); +inode_set_mtime (inode,sd_v1_mtime (sd),0 );inode_set_ctime (inode,sd_v1_ctime (sd),0 ); - inode->i_atime.tv_nsec =0 ; - inode->i_mtime.tv_nsec =0 ; inode->i_blocks =sd_v1_blocks (sd); inode->i_generation =le32_to_cpu (INODE_PKEY (inode)->k_dir_id);
@@ -1311,11 +1309,9 @@ static void init_inode(struct inode *inode, struct treepath *path)i_uid_write (inode,sd_v2_uid (sd)); inode->i_size =sd_v2_size (sd);i_gid_write (inode,sd_v2_gid (sd)); - inode->i_mtime.tv_sec =sd_v2_mtime (sd); - inode->i_atime.tv_sec =sd_v2_atime (sd); +inode_set_mtime (inode,sd_v2_mtime (sd),0 ); +inode_set_atime (inode,sd_v2_atime (sd),0 );inode_set_ctime (inode,sd_v2_ctime (sd),0 ); - inode->i_mtime.tv_nsec =0 ; - inode->i_atime.tv_nsec =0 ; inode->i_blocks =sd_v2_blocks (sd); rdev =sd_v2_rdev (sd);if (S_ISCHR (inode->i_mode) ||S_ISBLK (inode->i_mode))
@@ -1370,9 +1366,9 @@ static void inode2sd(void *sd, struct inode *inode, loff_t size)set_sd_v2_uid (sd_v2,i_uid_read (inode));set_sd_v2_size (sd_v2, size);set_sd_v2_gid (sd_v2,i_gid_read (inode)); -set_sd_v2_mtime (sd_v2, inode->i_mtime.tv_sec); -set_sd_v2_atime (sd_v2, inode->i_atime.tv_sec); -set_sd_v2_ctime (sd_v2,inode_get_ctime (inode).tv_sec); +set_sd_v2_mtime (sd_v2,inode_get_mtime_sec (inode)); +set_sd_v2_atime (sd_v2,inode_get_atime_sec (inode)); +set_sd_v2_ctime (sd_v2,inode_get_ctime_sec (inode));set_sd_v2_blocks (sd_v2,to_fake_used_blocks (inode,SD_V2_SIZE ));if (S_ISCHR (inode->i_mode) ||S_ISBLK (inode->i_mode))set_sd_v2_rdev (sd_v2,new_encode_dev (inode->i_rdev));
@@ -1391,9 +1387,9 @@ static void inode2sd_v1(void *sd, struct inode *inode, loff_t size)set_sd_v1_gid (sd_v1,i_gid_read (inode));set_sd_v1_nlink (sd_v1, inode->i_nlink);set_sd_v1_size (sd_v1, size); -set_sd_v1_atime (sd_v1, inode->i_atime.tv_sec); -set_sd_v1_ctime (sd_v1,inode_get_ctime (inode).tv_sec); -set_sd_v1_mtime (sd_v1, inode->i_mtime.tv_sec); +set_sd_v1_atime (sd_v1,inode_get_atime_sec (inode)); +set_sd_v1_ctime (sd_v1,inode_get_ctime_sec (inode)); +set_sd_v1_mtime (sd_v1,inode_get_mtime_sec (inode));if (S_ISCHR (inode->i_mode) ||S_ISBLK (inode->i_mode))set_sd_v1_rdev (sd_v1,new_encode_dev (inode->i_rdev));
@@ -1984,7 +1980,7 @@ int reiserfs_new_inode(struct reiserfs_transaction_handle *th,/* uid and gid must already be set by the caller for quota init */ - inode->i_mtime = inode->i_atime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); inode->i_size = i_size; inode->i_blocks =0 ; inode->i_bytes =0 ;
fs/reiserfs/namei.c +4 -4
@@ -572,7 +572,7 @@ static int reiserfs_add_entry(struct reiserfs_transaction_handle *th, } dir->i_size += paste_size; - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));if (!S_ISDIR (inode->i_mode) && visible)/* reiserfs_mkdir or reiserfs_rename will do that by itself */ reiserfs_update_sd (th, dir);
@@ -966,8 +966,8 @@ static int reiserfs_rmdir(struct inode *dir, struct dentry *dentry) inode->i_nlink);clear_nlink (inode); - dir->i_mtime =inode_set_ctime_to_ts (dir, -inode_set_ctime_current (inode)); +inode_set_mtime_to_ts (dir, +inode_set_ctime_to_ts (dir,inode_set_ctime_current (inode)));reiserfs_update_sd (&th, inode);DEC_DIR_INODE_NLINK (dir)
@@ -1075,7 +1075,7 @@ static int reiserfs_unlink(struct inode *dir, struct dentry *dentry)reiserfs_update_sd (&th, inode); dir->i_size -= (de.de_entrylen +DEH_SIZE ); - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));reiserfs_update_sd (&th, dir);if (!savelink)
fs/reiserfs/stree.c +3 -2
@@ -2003,7 +2003,8 @@ int reiserfs_do_truncate(struct reiserfs_transaction_handle *th,pathrelse (&s_search_path);if (update_timestamps) { - inode->i_mtime =current_time (inode); +inode_set_mtime_to_ts (inode, +current_time (inode));inode_set_ctime_current (inode); }reiserfs_update_sd (th, inode);
@@ -2028,7 +2029,7 @@ int reiserfs_do_truncate(struct reiserfs_transaction_handle *th, update_and_out:if (update_timestamps) {/* this is truncate, not file closing */ - inode->i_mtime =current_time (inode); +inode_set_mtime_to_ts (inode,current_time (inode));inode_set_ctime_current (inode); }reiserfs_update_sd (th, inode);
fs/reiserfs/super.c +1 -1
@@ -2587,7 +2587,7 @@ static ssize_t reiserfs_quota_write(struct super_block *sb, int type,return err;if (inode->i_size < off + len - towrite)i_size_write (inode, off + len - towrite); - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode));mark_inode_dirty (inode);return len - towrite; }
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 67/89 romfs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/romfs/super.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
fs/romfs/super.c +2 -1
@@ -322,7 +322,8 @@ static struct inode *romfs_iget(struct super_block *sb, unsigned long pos)set_nlink (i,1 );/* Hard to decide.. */ i->i_size =be32_to_cpu (ri.size); - i->i_mtime = i->i_atime =inode_set_ctime (i,0 ,0 ); +inode_set_mtime_to_ts (i, +inode_set_atime_to_ts (i,inode_set_ctime (i,0 ,0 )));/* set up mode and ops */ mode = romfs_modemap[nextfh &ROMFH_TYPE ];
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 68/89 client: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/smb/client/file.c | 18 ++++++++++-------- fs/smb/client/fscache.h | 6 +++--- fs/smb/client/inode.c | 17 ++++++++--------- fs/smb/client/smb2ops.c | 6 ++++-- 4 files changed, 25 insertions(+), 22 deletions(-)
fs/smb/client/file.c +10 -8
@@ -1085,7 +1085,8 @@ int cifs_close(struct inode *inode, struct file *file) !test_bit(CIFS_INO_CLOSE_ON_LOCK, &cinode->flags) && dclose) {if (test_and_clear_bit (CIFS_INO_MODIFIED_ATTR , &cinode->flags)) { - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode, +inode_set_ctime_current (inode)); }spin_lock (&cinode->deferred_lock);cifs_add_deferred_close (cfile, dclose);
@@ -2596,7 +2597,7 @@ static int cifs_partialpagewrite(struct page *page, unsigned from, unsigned to) write_data, to - from, &offset);cifsFileInfo_put (open_file);/* Does mm or vfs already set times? */ - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode);if ((bytes_written >0 ) && (offset)) rc =0 ;else if (bytes_written <0 )
@@ -4647,11 +4648,13 @@ static void cifs_readahead(struct readahead_control *ractl)static int cifs_readpage_worker (struct file *file,struct page *page,loff_t *poffset) { +struct inode *inode =file_inode (file); +struct timespec64 atime, mtime;char *read_data;int rc;/* Is the page cached? */ - rc =cifs_readpage_from_fscache (file_inode (file), page); + rc =cifs_readpage_from_fscache (inode, page);if (rc ==0 ) goto read_complete;
@@ -4666,11 +4669,10 @@ static int cifs_readpage_worker(struct file *file, struct page *page,cifs_dbg (FYI ,"Bytes read %d\n" , rc);/* we do not want atime to be less than mtime, it broke some apps */ -file_inode (file)->i_atime =current_time (file_inode (file)); -if (timespec64_compare (&(file_inode (file)->i_atime), &(file_inode (file)->i_mtime))) -file_inode (file)->i_atime =file_inode (file)->i_mtime; -else -file_inode (file)->i_atime =current_time (file_inode (file)); + atime =inode_set_atime_to_ts (inode,current_time (inode)); + mtime =inode_get_mtime (inode); +if (timespec64_compare (&atime, &mtime)) +inode_set_atime_to_ts (inode,inode_get_mtime (inode));if (PAGE_SIZE > rc)memset (read_data + rc,0 ,PAGE_SIZE - rc);
fs/smb/client/fscache.h +3 -3
@@ -49,12 +49,12 @@ static inlinevoid cifs_fscache_fill_coherency (struct inode *inode,struct cifs_fscache_inode_coherency_data *cd) { -struct cifsInodeInfo *cifsi =CIFS_I (inode);struct timespec64 ctime =inode_get_ctime (inode); +struct timespec64 mtime =inode_get_mtime (inode);memset (cd,0 ,sizeof (*cd)); - cd->last_write_time_sec =cpu_to_le64 (cifsi->netfs.inode.i_mtime.tv_sec); - cd->last_write_time_nsec =cpu_to_le32 (cifsi->netfs.inode.i_mtime.tv_nsec); + cd->last_write_time_sec =cpu_to_le64 (mtime.tv_sec); + cd->last_write_time_nsec =cpu_to_le32 (mtime.tv_nsec); cd->last_change_time_sec =cpu_to_le64 (ctime.tv_sec); cd->last_change_time_nsec =cpu_to_le32 (ctime.tv_nsec); }
fs/smb/client/inode.c +8 -9
@@ -82,6 +82,7 @@ cifs_revalidate_cache(struct inode *inode, struct cifs_fattr *fattr) {struct cifs_fscache_inode_coherency_data cd;struct cifsInodeInfo *cifs_i =CIFS_I (inode); +struct timespec64 mtime;cifs_dbg (FYI ,"%s: revalidating inode %llu\n" , __func__, cifs_i->uniqueid);
@@ -101,7 +102,8 @@ cifs_revalidate_cache(struct inode *inode, struct cifs_fattr *fattr)/* revalidate if mtime or size have changed */ fattr->cf_mtime =timestamp_truncate (fattr->cf_mtime, inode); -if (timespec64_equal (&inode->i_mtime, &fattr->cf_mtime) && + mtime =inode_get_mtime (inode); +if (timespec64_equal (&mtime, &fattr->cf_mtime) && cifs_i->server_eof == fattr->cf_eof) {cifs_dbg (FYI ,"%s: inode %llu is unchanged\n" , __func__, cifs_i->uniqueid);
@@ -164,10 +166,10 @@ cifs_fattr_to_inode(struct inode *inode, struct cifs_fattr *fattr) fattr->cf_ctime =timestamp_truncate (fattr->cf_ctime, inode);/* we do not want atime to be less than mtime, it broke some apps */ if (timespec64_compare (&fattr->cf_atime, &fattr->cf_mtime) <0 ) - inode->i_atime = fattr->cf_mtime; +inode_set_atime_to_ts (inode, fattr->cf_mtime);else - inode->i_atime = fattr->cf_atime; - inode->i_mtime = fattr->cf_mtime; +inode_set_atime_to_ts (inode, fattr->cf_atime); +inode_set_mtime_to_ts (inode, fattr->cf_mtime);inode_set_ctime_to_ts (inode, fattr->cf_ctime); inode->i_rdev = fattr->cf_rdev;cifs_nlink_fattr_to_inode (inode, fattr);
@@ -1816,7 +1818,7 @@ int cifs_unlink(struct inode *dir, struct dentry *dentry)when needed */ inode_set_ctime_current (inode); } - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir)); cifs_inode =CIFS_I (dir);CIFS_I (dir)->time =0 ;/* force revalidate of dir as well */ unlink_out:
@@ -2131,7 +2133,7 @@ int cifs_rmdir(struct inode *inode, struct dentry *direntry) cifsInode->time =0 ;inode_set_ctime_current (d_inode (direntry)); - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode)); rmdir_exit:free_dentry_path (page);
@@ -2337,9 +2339,6 @@ cifs_rename2(struct mnt_idmap *idmap, struct inode *source_dir,/* force revalidate to go get info when needed */ CIFS_I (source_dir)->time =CIFS_I (target_dir)->time =0 ; - source_dir->i_mtime = target_dir->i_mtime =inode_set_ctime_to_ts (source_dir, -inode_set_ctime_current (target_dir)); - cifs_rename_exit:kfree (info_buf_source);free_dentry_path (page2);
fs/smb/client/smb2ops.c +4 -2
@@ -1403,12 +1403,14 @@ smb2_close_getattr(const unsigned int xid, struct cifs_tcon *tcon,/* Creation time should not need to be updated on close */ if (file_inf.LastWriteTime) - inode->i_mtime =cifs_NTtimeToUnix (file_inf.LastWriteTime); +inode_set_mtime_to_ts (inode, +cifs_NTtimeToUnix (file_inf.LastWriteTime));if (file_inf.ChangeTime)inode_set_ctime_to_ts (inode,cifs_NTtimeToUnix (file_inf.ChangeTime));if (file_inf.LastAccessTime) - inode->i_atime =cifs_NTtimeToUnix (file_inf.LastAccessTime); +inode_set_atime_to_ts (inode, +cifs_NTtimeToUnix (file_inf.LastAccessTime));/* * i_blocks is not related to (i_size / i_blksize),
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 69/89 server: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/smb/server/smb2pdu.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
fs/smb/server/smb2pdu.c +4 -4
@@ -4797,9 +4797,9 @@ static void find_file_posix_info(struct smb2_query_info_rsp *rsp, file_info = (struct smb311_posix_qinfo *)rsp->Buffer; file_info->CreationTime =cpu_to_le64 (fp->create_time); - time =ksmbd_UnixTimeToNT (inode->i_atime); + time =ksmbd_UnixTimeToNT (inode_get_atime (inode)); file_info->LastAccessTime =cpu_to_le64 (time); - time =ksmbd_UnixTimeToNT (inode->i_mtime); + time =ksmbd_UnixTimeToNT (inode_get_mtime (inode)); file_info->LastWriteTime =cpu_to_le64 (time); time =ksmbd_UnixTimeToNT (inode_get_ctime (inode)); file_info->ChangeTime =cpu_to_le64 (time);
@@ -5406,9 +5406,9 @@ int smb2_close(struct ksmbd_work *work) rsp->EndOfFile =cpu_to_le64 (inode->i_size); rsp->Attributes = fp->f_ci->m_fattr; rsp->CreationTime =cpu_to_le64 (fp->create_time); - time =ksmbd_UnixTimeToNT (inode->i_atime); + time =ksmbd_UnixTimeToNT (inode_get_atime (inode)); rsp->LastAccessTime =cpu_to_le64 (time); - time =ksmbd_UnixTimeToNT (inode->i_mtime); + time =ksmbd_UnixTimeToNT (inode_get_mtime (inode)); rsp->LastWriteTime =cpu_to_le64 (time); time =ksmbd_UnixTimeToNT (inode_get_ctime (inode)); rsp->ChangeTime =cpu_to_le64 (time);
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 70/89 squashfs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/squashfs/inode.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
fs/squashfs/inode.c +3 -3
@@ -59,9 +59,9 @@ static int squashfs_new_inode(struct super_block *sb, struct inode *inode,i_uid_write (inode, i_uid);i_gid_write (inode, i_gid); inode->i_ino =le32_to_cpu (sqsh_ino->inode_number); - inode->i_mtime.tv_sec =le32_to_cpu (sqsh_ino->mtime); - inode->i_atime.tv_sec = inode->i_mtime.tv_sec; -inode_set_ctime (inode, inode->i_mtime.tv_sec,0 ); +inode_set_mtime (inode,le32_to_cpu (sqsh_ino->mtime),0 ); +inode_set_atime (inode,inode_get_mtime_sec (inode),0 ); +inode_set_ctime (inode,inode_get_mtime_sec (inode),0 ); inode->i_mode =le16_to_cpu (sqsh_ino->mode); inode->i_size =0 ;
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 71/89 sysv: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/sysv/dir.c | 6 +++--- fs/sysv/ialloc.c | 2 +- fs/sysv/inode.c | 12 +++++------- fs/sysv/itree.c | 2 +- 4 files changed, 10 insertions(+), 12 deletions(-)
fs/sysv/dir.c +3 -3
@@ -224,7 +224,7 @@ int sysv_add_link(struct dentry *dentry, struct inode *inode)memset (de->name + namelen,0 ,SYSV_DIRSIZE - namelen -2 ); de->inode =cpu_to_fs16 (SYSV_SB (inode->i_sb), inode->i_ino);dir_commit_chunk (page, pos,SYSV_DIRSIZE ); - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));mark_inode_dirty (dir); err =sysv_handle_dirsync (dir); out_page:
@@ -249,7 +249,7 @@ int sysv_delete_entry(struct sysv_dir_entry *de, struct page *page) } de->inode =0 ;dir_commit_chunk (page, pos,SYSV_DIRSIZE ); - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode));mark_inode_dirty (inode);return sysv_handle_dirsync (inode); }
@@ -346,7 +346,7 @@ int sysv_set_link(struct sysv_dir_entry *de, struct page *page, } de->inode =cpu_to_fs16 (SYSV_SB (inode->i_sb), inode->i_ino);dir_commit_chunk (page, pos,SYSV_DIRSIZE ); - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));mark_inode_dirty (dir);return sysv_handle_dirsync (inode); }
fs/sysv/ialloc.c +1 -1
@@ -165,7 +165,7 @@ struct inode * sysv_new_inode(const struct inode * dir, umode_t mode)dirty_sb (sb);inode_init_owner (&nop_mnt_idmap, inode, dir, mode); inode->i_ino =fs16_to_cpu (sbi, ino); - inode->i_mtime = inode->i_atime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); inode->i_blocks =0 ;memset (SYSV_I (inode)->i_data,0 ,sizeof (SYSV_I (inode)->i_data));SYSV_I (inode)->i_dir_start_lookup =0 ;
fs/sysv/inode.c +5 -7
@@ -200,11 +200,9 @@ struct inode *sysv_iget(struct super_block *sb, unsigned int ino)i_gid_write (inode, (gid_t )fs16_to_cpu (sbi, raw_inode->i_gid));set_nlink (inode,fs16_to_cpu (sbi, raw_inode->i_nlink)); inode->i_size =fs32_to_cpu (sbi, raw_inode->i_size); - inode->i_atime.tv_sec =fs32_to_cpu (sbi, raw_inode->i_atime); - inode->i_mtime.tv_sec =fs32_to_cpu (sbi, raw_inode->i_mtime); +inode_set_atime (inode,fs32_to_cpu (sbi, raw_inode->i_atime),0 ); +inode_set_mtime (inode,fs32_to_cpu (sbi, raw_inode->i_mtime),0 );inode_set_ctime (inode,fs32_to_cpu (sbi, raw_inode->i_ctime),0 ); - inode->i_atime.tv_nsec =0 ; - inode->i_mtime.tv_nsec =0 ; inode->i_blocks =0 ; si =SYSV_I (inode);
@@ -253,9 +251,9 @@ static int __sysv_write_inode(struct inode *inode, int wait) raw_inode->i_gid =cpu_to_fs16 (sbi,fs_high2lowgid (i_gid_read (inode))); raw_inode->i_nlink =cpu_to_fs16 (sbi, inode->i_nlink); raw_inode->i_size =cpu_to_fs32 (sbi, inode->i_size); - raw_inode->i_atime =cpu_to_fs32 (sbi, inode->i_atime.tv_sec); - raw_inode->i_mtime =cpu_to_fs32 (sbi, inode->i_mtime.tv_sec); - raw_inode->i_ctime =cpu_to_fs32 (sbi,inode_get_ctime (inode).tv_sec); + raw_inode->i_atime =cpu_to_fs32 (sbi,inode_get_atime_sec (inode)); + raw_inode->i_mtime =cpu_to_fs32 (sbi,inode_get_mtime_sec (inode)); + raw_inode->i_ctime =cpu_to_fs32 (sbi,inode_get_ctime_sec (inode)); si =SYSV_I (inode);if (S_ISCHR (inode->i_mode) ||S_ISBLK (inode->i_mode))
fs/sysv/itree.c +1 -1
@@ -423,7 +423,7 @@ void sysv_truncate (struct inode * inode) } n++; } - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode));if (IS_SYNC (inode))sysv_sync_inode (inode);else
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 72/89 tracefs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/tracefs/inode.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
fs/tracefs/inode.c +1 -1
@@ -152,7 +152,7 @@ struct inode *tracefs_get_inode(struct super_block *sb)struct inode *inode =new_inode (sb);if (inode) { inode->i_ino =get_next_ino (); - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); }return inode; }
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 73/89 ubifs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/ubifs/debug.c | 12 ++++++------ fs/ubifs/dir.c | 23 +++++++++++++++-------- fs/ubifs/file.c | 16 ++++++++-------- fs/ubifs/journal.c | 12 ++++++------ fs/ubifs/super.c | 8 ++++---- 5 files changed, 39 insertions(+), 32 deletions(-)
fs/ubifs/debug.c +6 -6
@@ -237,14 +237,14 @@ void ubifs_dump_inode(struct ubifs_info *c, const struct inode *inode)pr_err ("\tuid %u\n" , (unsigned int )i_uid_read (inode));pr_err ("\tgid %u\n" , (unsigned int )i_gid_read (inode));pr_err ("\tatime %u.%u\n" , - (unsigned int )inode->i_atime.tv_sec, - (unsigned int )inode->i_atime.tv_nsec); + (unsigned int )inode_get_atime_sec (inode), + (unsigned int )inode_get_atime_nsec (inode));pr_err ("\tmtime %u.%u\n" , - (unsigned int )inode->i_mtime.tv_sec, - (unsigned int )inode->i_mtime.tv_nsec); + (unsigned int )inode_get_mtime_sec (inode), + (unsigned int )inode_get_mtime_nsec (inode));pr_err ("\tctime %u.%u\n" , - (unsigned int )inode_get_ctime (inode).tv_sec, - (unsigned int )inode_get_ctime (inode).tv_nsec); + (unsigned int )inode_get_ctime_sec (inode), + (unsigned int )inode_get_ctime_nsec (inode));pr_err ("\tcreat_sqnum %llu\n" , ui->creat_sqnum);pr_err ("\txattr_size %u\n" , ui->xattr_size);pr_err ("\txattr_cnt %u\n" , ui->xattr_cnt);
fs/ubifs/dir.c +15 -8
@@ -96,7 +96,7 @@ struct inode *ubifs_new_inode(struct ubifs_info *c, struct inode *dir, inode->i_flags |=S_NOCMTIME ;inode_init_owner (&nop_mnt_idmap, inode, dir, mode); - inode->i_mtime = inode->i_atime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); inode->i_mapping->nrpages =0 ;if (!is_xattr) {
@@ -324,7 +324,8 @@ static int ubifs_create(struct mnt_idmap *idmap, struct inode *dir,mutex_lock (&dir_ui->ui_mutex); dir->i_size += sz_change; dir_ui->ui_size = dir->i_size; - dir->i_mtime =inode_set_ctime_to_ts (dir,inode_get_ctime (inode)); +inode_set_mtime_to_ts (dir, +inode_set_ctime_to_ts (dir,inode_get_ctime (inode))); err =ubifs_jnl_update (c, dir, &nm, inode,0 ,0 );if (err) goto out_cancel;
@@ -767,7 +768,8 @@ static int ubifs_link(struct dentry *old_dentry, struct inode *dir,inode_set_ctime_current (inode); dir->i_size += sz_change; dir_ui->ui_size = dir->i_size; - dir->i_mtime =inode_set_ctime_to_ts (dir,inode_get_ctime (inode)); +inode_set_mtime_to_ts (dir, +inode_set_ctime_to_ts (dir,inode_get_ctime (inode))); err =ubifs_jnl_update (c, dir, &nm, inode,0 ,0 );if (err) goto out_cancel;
@@ -841,7 +843,8 @@ static int ubifs_unlink(struct inode *dir, struct dentry *dentry)drop_nlink (inode); dir->i_size -= sz_change; dir_ui->ui_size = dir->i_size; - dir->i_mtime =inode_set_ctime_to_ts (dir,inode_get_ctime (inode)); +inode_set_mtime_to_ts (dir, +inode_set_ctime_to_ts (dir,inode_get_ctime (inode))); err =ubifs_jnl_update (c, dir, &nm, inode,1 ,0 );if (err) goto out_cancel;
@@ -944,7 +947,8 @@ static int ubifs_rmdir(struct inode *dir, struct dentry *dentry)drop_nlink (dir); dir->i_size -= sz_change; dir_ui->ui_size = dir->i_size; - dir->i_mtime =inode_set_ctime_to_ts (dir,inode_get_ctime (inode)); +inode_set_mtime_to_ts (dir, +inode_set_ctime_to_ts (dir,inode_get_ctime (inode))); err =ubifs_jnl_update (c, dir, &nm, inode,1 ,0 );if (err) goto out_cancel;
@@ -1018,7 +1022,8 @@ static int ubifs_mkdir(struct mnt_idmap *idmap, struct inode *dir,inc_nlink (dir); dir->i_size += sz_change; dir_ui->ui_size = dir->i_size; - dir->i_mtime =inode_set_ctime_to_ts (dir,inode_get_ctime (inode)); +inode_set_mtime_to_ts (dir, +inode_set_ctime_to_ts (dir,inode_get_ctime (inode))); err =ubifs_jnl_update (c, dir, &nm, inode,0 ,0 );if (err) {ubifs_err (c,"cannot create directory, error %d" , err);
@@ -1109,7 +1114,8 @@ static int ubifs_mknod(struct mnt_idmap *idmap, struct inode *dir,mutex_lock (&dir_ui->ui_mutex); dir->i_size += sz_change; dir_ui->ui_size = dir->i_size; - dir->i_mtime =inode_set_ctime_to_ts (dir,inode_get_ctime (inode)); +inode_set_mtime_to_ts (dir, +inode_set_ctime_to_ts (dir,inode_get_ctime (inode))); err =ubifs_jnl_update (c, dir, &nm, inode,0 ,0 );if (err) goto out_cancel;
@@ -1209,7 +1215,8 @@ static int ubifs_symlink(struct mnt_idmap *idmap, struct inode *dir,mutex_lock (&dir_ui->ui_mutex); dir->i_size += sz_change; dir_ui->ui_size = dir->i_size; - dir->i_mtime =inode_set_ctime_to_ts (dir,inode_get_ctime (inode)); +inode_set_mtime_to_ts (dir, +inode_set_ctime_to_ts (dir,inode_get_ctime (inode))); err =ubifs_jnl_update (c, dir, &nm, inode,0 ,0 );if (err) goto out_cancel;
fs/ubifs/file.c +8 -8
@@ -1088,9 +1088,9 @@ static void do_attr_changes(struct inode *inode, const struct iattr *attr)if (attr->ia_valid &ATTR_GID ) inode->i_gid = attr->ia_gid;if (attr->ia_valid &ATTR_ATIME ) - inode->i_atime = attr->ia_atime; +inode_set_atime_to_ts (inode, attr->ia_atime);if (attr->ia_valid &ATTR_MTIME ) - inode->i_mtime = attr->ia_mtime; +inode_set_mtime_to_ts (inode, attr->ia_mtime);if (attr->ia_valid &ATTR_CTIME )inode_set_ctime_to_ts (inode, attr->ia_ctime);if (attr->ia_valid &ATTR_MODE ) {
@@ -1192,7 +1192,7 @@ static int do_truncation(struct ubifs_info *c, struct inode *inode,mutex_lock (&ui->ui_mutex); ui->ui_size = inode->i_size;/* Truncation changes inode [mc]time */ - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode));/* Other attributes may be changed at the same time as well */ do_attr_changes (inode, attr); err =ubifs_jnl_truncate (c, inode, old_size, new_size);
@@ -1239,7 +1239,7 @@ static int do_setattr(struct ubifs_info *c, struct inode *inode,mutex_lock (&ui->ui_mutex);if (attr->ia_valid &ATTR_SIZE ) {/* Truncation changes inode [mc]time */ - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode));/* 'truncate_setsize()' changed @i_size, update @ui_size */ ui->ui_size = inode->i_size; }
@@ -1365,9 +1365,9 @@ static inline int mctime_update_needed(const struct inode *inode, const struct timespec64 *now) {struct timespec64 ctime =inode_get_ctime (inode); +struct timespec64 mtime =inode_get_mtime (inode); -if (!timespec64_equal (&inode->i_mtime, now) || - !timespec64_equal (&ctime, now)) +if (!timespec64_equal (&mtime, now) || !timespec64_equal (&ctime, now))return 1 ;return 0 ; }
@@ -1429,7 +1429,7 @@ static int update_mctime(struct inode *inode)return err;mutex_lock (&ui->ui_mutex); - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode)); release = ui->dirty;mark_inode_dirty_sync (inode);mutex_unlock (&ui->ui_mutex);
@@ -1567,7 +1567,7 @@ static vm_fault_t ubifs_vm_page_mkwrite(struct vm_fault *vmf)struct ubifs_inode *ui =ubifs_inode (inode);mutex_lock (&ui->ui_mutex); - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode)); release = ui->dirty;mark_inode_dirty_sync (inode);mutex_unlock (&ui->ui_mutex);
fs/ubifs/journal.c +6 -6
@@ -452,12 +452,12 @@ static void pack_inode(struct ubifs_info *c, struct ubifs_ino_node *ino, ino->ch.node_type =UBIFS_INO_NODE ;ino_key_init_flash (c, &ino->key, inode->i_ino); ino->creat_sqnum =cpu_to_le64 (ui->creat_sqnum); - ino->atime_sec =cpu_to_le64 (inode->i_atime.tv_sec); - ino->atime_nsec =cpu_to_le32 (inode->i_atime.tv_nsec); - ino->ctime_sec =cpu_to_le64 (inode_get_ctime (inode).tv_sec); - ino->ctime_nsec =cpu_to_le32 (inode_get_ctime (inode).tv_nsec); - ino->mtime_sec =cpu_to_le64 (inode->i_mtime.tv_sec); - ino->mtime_nsec =cpu_to_le32 (inode->i_mtime.tv_nsec); + ino->atime_sec =cpu_to_le64 (inode_get_atime_sec (inode)); + ino->atime_nsec =cpu_to_le32 (inode_get_atime_nsec (inode)); + ino->ctime_sec =cpu_to_le64 (inode_get_ctime_sec (inode)); + ino->ctime_nsec =cpu_to_le32 (inode_get_ctime_nsec (inode)); + ino->mtime_sec =cpu_to_le64 (inode_get_mtime_sec (inode)); + ino->mtime_nsec =cpu_to_le32 (inode_get_mtime_nsec (inode)); ino->uid =cpu_to_le32 (i_uid_read (inode)); ino->gid =cpu_to_le32 (i_gid_read (inode)); ino->mode =cpu_to_le32 (inode->i_mode);
fs/ubifs/super.c +4 -4
@@ -138,10 +138,10 @@ struct inode *ubifs_iget(struct super_block *sb, unsigned long inum)set_nlink (inode,le32_to_cpu (ino->nlink));i_uid_write (inode,le32_to_cpu (ino->uid));i_gid_write (inode,le32_to_cpu (ino->gid)); - inode->i_atime.tv_sec = (int64_t )le64_to_cpu (ino->atime_sec); - inode->i_atime.tv_nsec =le32_to_cpu (ino->atime_nsec); - inode->i_mtime.tv_sec = (int64_t )le64_to_cpu (ino->mtime_sec); - inode->i_mtime.tv_nsec =le32_to_cpu (ino->mtime_nsec); +inode_set_atime (inode, (int64_t )le64_to_cpu (ino->atime_sec), +le32_to_cpu (ino->atime_nsec)); +inode_set_mtime (inode, (int64_t )le64_to_cpu (ino->mtime_sec), +le32_to_cpu (ino->mtime_nsec));inode_set_ctime (inode, (int64_t )le64_to_cpu (ino->ctime_sec),le32_to_cpu (ino->ctime_nsec)); inode->i_mode =le32_to_cpu (ino->mode);
Signature · 6 lines
2.41.0 ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/
Jeff Layton
maintainerPATCH v2 74/89 udf: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/udf/ialloc.c | 4 ++-- fs/udf/inode.c | 38 ++++++++++++++++++++++---------------- fs/udf/namei.c | 16 ++++++++-------- 3 files changed, 32 insertions(+), 26 deletions(-)
fs/udf/ialloc.c +2 -2
@@ -100,8 +100,8 @@ struct inode *udf_new_inode(struct inode *dir, umode_t mode) iinfo->i_alloc_type =ICBTAG_FLAG_AD_SHORT ; else iinfo->i_alloc_type = ICBTAG_FLAG_AD_LONG; - inode->i_mtime = inode->i_atime =inode_set_ctime_current (inode); - iinfo->i_crtime = inode->i_mtime; +simple_inode_init_ts (inode); + iinfo->i_crtime =inode_get_mtime (inode);if (unlikely (insert_inode_locked (inode) <0 )) {make_bad_inode (inode);iput (inode);
fs/udf/inode.c +22 -16
@@ -1296,7 +1296,7 @@ int udf_setsize(struct inode *inode, loff_t newsize) goto out_unlock; } update_time: - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode));if (IS_SYNC (inode))udf_sync_inode (inode);else
@@ -1327,7 +1327,7 @@ static int udf_read_inode(struct inode *inode, bool hidden_inode)int bs = inode->i_sb->s_blocksize;int ret = -EIO ;uint32_t uid, gid; -struct timespec64 ctime; +struct timespec64 ts; reread:if (iloc->partitionReferenceNum >= sbi->s_partitions) {
@@ -1504,10 +1504,12 @@ static int udf_read_inode(struct inode *inode, bool hidden_inode) inode->i_blocks =le64_to_cpu (fe->logicalBlocksRecorded) << (inode->i_sb->s_blocksize_bits -9 ); -udf_disk_stamp_to_time (&inode->i_atime, fe->accessTime); -udf_disk_stamp_to_time (&inode->i_mtime, fe->modificationTime); -udf_disk_stamp_to_time (&ctime, fe->attrTime); -inode_set_ctime_to_ts (inode, ctime); +udf_disk_stamp_to_time (&ts, fe->accessTime); +inode_set_atime_to_ts (inode, ts); +udf_disk_stamp_to_time (&ts, fe->modificationTime); +inode_set_mtime_to_ts (inode, ts); +udf_disk_stamp_to_time (&ts, fe->attrTime); +inode_set_ctime_to_ts (inode, ts); iinfo->i_unique =le64_to_cpu (fe->uniqueID); iinfo->i_lenEAttr =le32_to_cpu (fe->lengthExtendedAttr);
@@ -1519,11 +1521,13 @@ static int udf_read_inode(struct inode *inode, bool hidden_inode) inode->i_blocks =le64_to_cpu (efe->logicalBlocksRecorded) << (inode->i_sb->s_blocksize_bits -9 ); -udf_disk_stamp_to_time (&inode->i_atime, efe->accessTime); -udf_disk_stamp_to_time (&inode->i_mtime, efe->modificationTime); +udf_disk_stamp_to_time (&ts, efe->accessTime); +inode_set_atime_to_ts (inode, ts); +udf_disk_stamp_to_time (&ts, efe->modificationTime); +inode_set_mtime_to_ts (inode, ts); +udf_disk_stamp_to_time (&ts, efe->attrTime); +inode_set_ctime_to_ts (inode, ts);udf_disk_stamp_to_time (&iinfo->i_crtime, efe->createTime); -udf_disk_stamp_to_time (&ctime, efe->attrTime); -inode_set_ctime_to_ts (inode, ctime); iinfo->i_unique =le64_to_cpu (efe->uniqueID); iinfo->i_lenEAttr =le32_to_cpu (efe->lengthExtendedAttr);
@@ -1798,8 +1802,8 @@ static int udf_update_inode(struct inode *inode, int do_sync) inode->i_sb->s_blocksize - sizeof(struct fileEntry)); fe->logicalBlocksRecorded =cpu_to_le64 (lb_recorded); -udf_time_to_disk_stamp (&fe->accessTime, inode->i_atime); -udf_time_to_disk_stamp (&fe->modificationTime, inode->i_mtime); +udf_time_to_disk_stamp (&fe->accessTime,inode_get_atime (inode)); +udf_time_to_disk_stamp (&fe->modificationTime,inode_get_mtime (inode));udf_time_to_disk_stamp (&fe->attrTime,inode_get_ctime (inode));memset (&(fe->impIdent),0 ,sizeof (struct regid ));strcpy (fe->impIdent.ident,UDF_ID_DEVELOPER );
@@ -1829,12 +1833,14 @@ static int udf_update_inode(struct inode *inode, int do_sync)cpu_to_le32 (inode->i_sb->s_blocksize); } -udf_adjust_time (iinfo, inode->i_atime); -udf_adjust_time (iinfo, inode->i_mtime); +udf_adjust_time (iinfo,inode_get_atime (inode)); +udf_adjust_time (iinfo,inode_get_mtime (inode));udf_adjust_time (iinfo,inode_get_ctime (inode)); -udf_time_to_disk_stamp (&efe->accessTime, inode->i_atime); -udf_time_to_disk_stamp (&efe->modificationTime, inode->i_mtime); +udf_time_to_disk_stamp (&efe->accessTime, +inode_get_atime (inode)); +udf_time_to_disk_stamp (&efe->modificationTime, +inode_get_mtime (inode));udf_time_to_disk_stamp (&efe->createTime, iinfo->i_crtime);udf_time_to_disk_stamp (&efe->attrTime,inode_get_ctime (inode));
fs/udf/namei.c +8 -8
@@ -365,7 +365,7 @@ static int udf_add_nondir(struct dentry *dentry, struct inode *inode) *(__le32 *)((struct allocDescImpUse *)iter.fi.icb.impUse)->impUse =cpu_to_le32 (iinfo->i_unique &0x00000000FFFFFFFFUL );udf_fiiter_write_fi (&iter,NULL ); - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));mark_inode_dirty (dir);udf_fiiter_release (&iter);udf_add_fid_counter (dir->i_sb, false,1 );
@@ -471,7 +471,7 @@ static int udf_mkdir(struct mnt_idmap *idmap, struct inode *dir,udf_fiiter_release (&iter);udf_add_fid_counter (dir->i_sb, true,1 );inc_nlink (dir); - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));mark_inode_dirty (dir);d_instantiate_new (dentry, inode);
@@ -523,8 +523,8 @@ static int udf_rmdir(struct inode *dir, struct dentry *dentry) inode->i_size =0 ;inode_dec_link_count (dir);udf_add_fid_counter (dir->i_sb, true,-1 ); - dir->i_mtime =inode_set_ctime_to_ts (dir, -inode_set_ctime_current (inode)); +inode_set_mtime_to_ts (dir, +inode_set_ctime_to_ts (dir,inode_set_ctime_current (inode)));mark_inode_dirty (dir); ret =0 ; end_rmdir:
@@ -555,7 +555,7 @@ static int udf_unlink(struct inode *dir, struct dentry *dentry)set_nlink (inode,1 ); }udf_fiiter_delete_entry (&iter); - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));mark_inode_dirty (dir);inode_dec_link_count (inode);udf_add_fid_counter (dir->i_sb, false,-1 );
@@ -748,7 +748,7 @@ static int udf_link(struct dentry *old_dentry, struct inode *dir,udf_add_fid_counter (dir->i_sb, false,1 );inode_set_ctime_current (inode);mark_inode_dirty (inode); - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));mark_inode_dirty (dir);ihold (inode);d_instantiate (dentry, inode);
@@ -866,8 +866,8 @@ static int udf_rename(struct mnt_idmap *idmap, struct inode *old_dir,udf_add_fid_counter (old_dir->i_sb,S_ISDIR (new_inode->i_mode),-1 ); } - old_dir->i_mtime =inode_set_ctime_current (old_dir); - new_dir->i_mtime =inode_set_ctime_current (new_dir); +inode_set_mtime_to_ts (old_dir,inode_set_ctime_current (old_dir)); +inode_set_mtime_to_ts (new_dir,inode_set_ctime_current (new_dir));mark_inode_dirty (old_dir);mark_inode_dirty (new_dir);
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 75/89 ufs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/ufs/dir.c | 6 +++--- fs/ufs/ialloc.c | 2 +- fs/ufs/inode.c | 42 ++++++++++++++++++++++++------------------ 3 files changed, 28 insertions(+), 22 deletions(-)
fs/ufs/dir.c +3 -3
@@ -107,7 +107,7 @@ void ufs_set_link(struct inode *dir, struct ufs_dir_entry *de,ufs_commit_chunk (page, pos, len);ufs_put_page (page);if (update_times) - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));mark_inode_dirty (dir);ufs_handle_dirsync (dir); }
@@ -397,7 +397,7 @@ int ufs_add_link(struct dentry *dentry, struct inode *inode)ufs_set_de_type (sb, de, inode->i_mode);ufs_commit_chunk (page, pos, rec_len); - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));mark_inode_dirty (dir); err =ufs_handle_dirsync (dir);
@@ -539,7 +539,7 @@ int ufs_delete_entry(struct inode *inode, struct ufs_dir_entry *dir, pde->d_reclen =cpu_to_fs16 (sb, to - from); dir->d_ino =0 ;ufs_commit_chunk (page, pos, to - from); - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode));mark_inode_dirty (inode); err =ufs_handle_dirsync (inode); out:
fs/ufs/ialloc.c +1 -1
@@ -292,7 +292,7 @@ struct inode *ufs_new_inode(struct inode *dir, umode_t mode)inode_init_owner (&nop_mnt_idmap, inode, dir, mode); inode->i_blocks =0 ; inode->i_generation =0 ; - inode->i_mtime = inode->i_atime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); ufsi->i_flags =UFS_I (dir)->i_flags; ufsi->i_lastfrag =0 ; ufsi->i_shadow =0 ;
fs/ufs/inode.c +24 -18
81 lines not on this page · raw message
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 76/89 vboxsf: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/vboxsf/utils.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-)
fs/vboxsf/utils.c +8 -7
@@ -126,12 +126,12 @@ int vboxsf_init_inode(struct vboxsf_sbi *sbi, struct inode *inode,do_div (allocated,512 ); inode->i_blocks = allocated; - inode->i_atime =ns_to_timespec64 ( - info->access_time.ns_relative_to_unix_epoch); +inode_set_atime_to_ts (inode, +ns_to_timespec64 (info->access_time.ns_relative_to_unix_epoch));inode_set_ctime_to_ts (inode,ns_to_timespec64 (info->change_time.ns_relative_to_unix_epoch)); - inode->i_mtime =ns_to_timespec64 ( - info->modification_time.ns_relative_to_unix_epoch); +inode_set_mtime_to_ts (inode, +ns_to_timespec64 (info->modification_time.ns_relative_to_unix_epoch));return 0 ; }
@@ -194,7 +194,7 @@ int vboxsf_inode_revalidate(struct dentry *dentry)struct vboxsf_sbi *sbi;struct vboxsf_inode *sf_i;struct shfl_fsobjinfo info; -struct timespec64 prev_mtime; +struct timespec64 mtime, prev_mtime;struct inode *inode;int err;
@@ -202,7 +202,7 @@ int vboxsf_inode_revalidate(struct dentry *dentry)return -EINVAL ; inode =d_inode (dentry); - prev_mtime = inode->i_mtime; + prev_mtime =inode_get_mtime (inode); sf_i =VBOXSF_I (inode); sbi =VBOXSF_SBI (dentry->d_sb);if (!sf_i->force_restat) {
@@ -225,7 +225,8 @@ int vboxsf_inode_revalidate(struct dentry *dentry)* page-cache for it. Note this also gets triggered by our own writes, * this is unavoidable. */ -if (timespec64_compare (&inode->i_mtime, &prev_mtime) >0 ) + mtime =inode_get_mtime (inode); +if (timespec64_compare (&mtime, &prev_mtime) >0 )invalidate_inode_pages2 (inode->i_mapping);return 0 ;
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 77/89 xfs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- 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(-)
fs/xfs/libxfs/xfs_inode_buf.c +6 -4
@@ -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);
fs/xfs/libxfs/xfs_rtbitmap.c +5 -1
@@ -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 ;
fs/xfs/libxfs/xfs_trans_inode.c +1 -1
@@ -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 )
fs/xfs/xfs_bmap_util.c +4 -3
@@ -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; }
fs/xfs/xfs_inode.c +2 -2
@@ -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 ;
fs/xfs/xfs_inode_item.c +2 -2
@@ -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;
fs/xfs/xfs_iops.c +4 -4
@@ -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);
fs/xfs/xfs_itable.c +6 -6
@@ -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;
fs/xfs/xfs_rtalloc.c +16 -14
@@ -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 ;
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 78/89 zonefs: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- fs/zonefs/super.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
fs/zonefs/super.c +5 -5
@@ -658,8 +658,8 @@ static struct inode *zonefs_get_file_inode(struct inode *dir, inode->i_ino = ino; inode->i_mode = z->z_mode; - inode->i_mtime = inode->i_atime =inode_set_ctime_to_ts (inode, -inode_get_ctime (dir)); +inode_set_mtime_to_ts (inode, +inode_set_atime_to_ts (inode,inode_set_ctime_to_ts (inode,inode_get_ctime (dir)))); inode->i_uid = z->z_uid; inode->i_gid = z->z_gid; inode->i_size = z->z_wpoffset;
@@ -695,8 +695,8 @@ static struct inode *zonefs_get_zgroup_inode(struct super_block *sb, inode->i_ino = ino;inode_init_owner (&nop_mnt_idmap, inode, root,S_IFDIR |0555 ); inode->i_size = sbi->s_zgroup[ztype].g_nr_zones; - inode->i_mtime = inode->i_atime =inode_set_ctime_to_ts (inode, -inode_get_ctime (root)); +inode_set_mtime_to_ts (inode, +inode_set_atime_to_ts (inode,inode_set_ctime_to_ts (inode,inode_get_ctime (root)))); inode->i_private = &sbi->s_zgroup[ztype];set_nlink (inode,2 );
@@ -1319,7 +1319,7 @@ static int zonefs_fill_super(struct super_block *sb, void *data, int silent) inode->i_ino =bdev_nr_zones (sb->s_bdev); inode->i_mode =S_IFDIR |0555 ; - inode->i_mtime = inode->i_atime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); inode->i_op = &zonefs_dir_inode_operations; inode->i_fop = &zonefs_dir_operations; inode->i_size =2 ;
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 79/89 linux: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- include/linux/fs_stack.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
include/linux/fs_stack.h +3 -3
@@ -16,14 +16,14 @@ extern void fsstack_copy_inode_size(struct inode *dst, struct inode *src);static inline void fsstack_copy_attr_atime (struct inode *dest,const struct inode *src) { - dest->i_atime = src->i_atime; +inode_set_atime_to_ts (dest,inode_get_atime (src)); }static inline void fsstack_copy_attr_times (struct inode *dest,const struct inode *src) { - dest->i_atime = src->i_atime; - dest->i_mtime = src->i_mtime; +inode_set_atime_to_ts (dest,inode_get_atime (src)); +inode_set_mtime_to_ts (dest,inode_get_mtime (src));inode_set_ctime_to_ts (dest,inode_get_ctime (src)); }
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 80/89 ipc: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- ipc/mqueue.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-)
ipc/mqueue.c +10 -9
@@ -302,7 +302,7 @@ static struct inode *mqueue_get_inode(struct super_block *sb, inode->i_mode = mode; inode->i_uid =current_fsuid (); inode->i_gid =current_fsgid (); - inode->i_mtime = inode->i_atime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode);if (S_ISREG (mode)) {struct mqueue_inode_info *info;
@@ -596,7 +596,7 @@ static int mqueue_create_attr(struct dentry *dentry, umode_t mode, void *arg)put_ipc_ns (ipc_ns); dir->i_size +=DIRENT_SIZE ; - dir->i_mtime = dir->i_atime =inode_set_ctime_current (dir); +simple_inode_init_ts (dir);d_instantiate (dentry, inode);dget (dentry);
@@ -618,7 +618,7 @@ static int mqueue_unlink(struct inode *dir, struct dentry *dentry) {struct inode *inode =d_inode (dentry); - dir->i_mtime = dir->i_atime =inode_set_ctime_current (dir); +simple_inode_init_ts (dir); dir->i_size -=DIRENT_SIZE ;drop_nlink (inode);dput (dentry);
@@ -657,7 +657,7 @@ static ssize_t mqueue_read_file(struct file *filp, char __user *u_data,if (ret <=0 )return ret; - inode->i_atime =inode_set_ctime_current (inode); +inode_set_atime_to_ts (inode,inode_set_ctime_current (inode));return ret; }
@@ -1163,7 +1163,7 @@ static int do_mq_timedsend(mqd_t mqdes, const char __user *u_msg_ptr, goto out_unlock;__do_notify (info); } - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); } out_unlock:spin_unlock (&info->lock);
@@ -1257,7 +1257,7 @@ static int do_mq_timedreceive(mqd_t mqdes, char __user *u_msg_ptr, msg_ptr =msg_get (info); - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode);/* There is now free space in queue. */ pipelined_receive (&wake_q, info);
@@ -1395,7 +1395,8 @@ static int do_mq_notify(mqd_t mqdes, const struct sigevent *notification)if (notification ==NULL ) {if (info->notify_owner ==task_tgid (current)) {remove_notification (info); - inode->i_atime =inode_set_ctime_current (inode); +inode_set_atime_to_ts (inode, +inode_set_ctime_current (inode)); } }else if (info->notify_owner !=NULL ) { ret = -EBUSY ;
@@ -1421,7 +1422,7 @@ static int do_mq_notify(mqd_t mqdes, const struct sigevent *notification) info->notify_owner =get_pid (task_tgid (current)); info->notify_user_ns =get_user_ns (current_user_ns ()); - inode->i_atime =inode_set_ctime_current (inode); +inode_set_atime_to_ts (inode,inode_set_ctime_current (inode)); }spin_unlock (&info->lock); out_fput:
@@ -1484,7 +1485,7 @@ static int do_mq_getsetattr(int mqdes, struct mq_attr *new, struct mq_attr *old) f.file->f_flags &= ~O_NONBLOCK ;spin_unlock (&f.file->f_lock); - inode->i_atime =inode_set_ctime_current (inode); +inode_set_atime_to_ts (inode,inode_set_ctime_current (inode)); }spin_unlock (&info->lock);
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 81/89 bpf: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- kernel/bpf/inode.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
kernel/bpf/inode.c +2 -3
@@ -118,8 +118,7 @@ static struct inode *bpf_get_inode(struct super_block *sb,return ERR_PTR (-ENOSPC ); inode->i_ino =get_next_ino (); - inode->i_atime =inode_set_ctime_current (inode); - inode->i_mtime = inode->i_atime; +simple_inode_init_ts (inode);inode_init_owner (&nop_mnt_idmap, inode, dir, mode);
@@ -147,7 +146,7 @@ static void bpf_dentry_finalize(struct dentry *dentry, struct inode *inode,d_instantiate (dentry, inode);dget (dentry); - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir)); } static int bpf_mkdir(struct mnt_idmap *idmap, struct inode *dir,
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 82/89 mm: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- mm/shmem.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-)
mm/shmem.c +10 -10
@@ -1111,7 +1111,7 @@ static void shmem_undo_range(struct inode *inode, loff_t lstart, loff_t lend,void shmem_truncate_range (struct inode *inode,loff_t lstart,loff_t lend) {shmem_undo_range (inode, lstart, lend, false); - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode));inode_inc_iversion (inode); }EXPORT_SYMBOL_GPL (shmem_truncate_range);
@@ -1222,7 +1222,7 @@ static int shmem_setattr(struct mnt_idmap *idmap,if (!error && update_ctime) {inode_set_ctime_current (inode);if (update_mtime) - inode->i_mtime =inode_get_ctime (inode); +inode_set_mtime_to_ts (inode,inode_get_ctime (inode));inode_inc_iversion (inode); }return error;
@@ -2475,7 +2475,7 @@ static struct inode *__shmem_get_inode(struct mnt_idmap *idmap, inode->i_ino = ino;inode_init_owner (idmap, inode, dir, mode); inode->i_blocks =0 ; - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); inode->i_generation =get_random_u32 (); info =SHMEM_I (inode);memset (info,0 , (char *)inode - (char *)info);
@@ -2483,7 +2483,7 @@ static struct inode *__shmem_get_inode(struct mnt_idmap *idmap,atomic_set (&info->stop_eviction,0 ); info->seals =F_SEAL_SEAL ; info->flags = flags &VM_NORESERVE ; - info->i_crtime = inode->i_mtime; + info->i_crtime =inode_get_mtime (inode); info->fsflags = (dir ==NULL ) ?0 :SHMEM_I (dir)->fsflags &SHMEM_FL_INHERITED ;if (info->fsflags)
@@ -3248,7 +3248,7 @@ shmem_mknod(struct mnt_idmap *idmap, struct inode *dir, goto out_iput; dir->i_size +=BOGO_DIRENT_SIZE ; - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));inode_inc_iversion (dir);d_instantiate (dentry, inode);dget (dentry);/* Extra count - pin the dentry in core */
@@ -3335,8 +3335,8 @@ static int shmem_link(struct dentry *old_dentry, struct inode *dir, } dir->i_size +=BOGO_DIRENT_SIZE ; - dir->i_mtime =inode_set_ctime_to_ts (dir, -inode_set_ctime_current (inode)); +inode_set_mtime_to_ts (dir, +inode_set_ctime_to_ts (dir,inode_set_ctime_current (inode)));inode_inc_iversion (dir);inc_nlink (inode);ihold (inode);/* New dentry reference */
@@ -3356,8 +3356,8 @@ static int shmem_unlink(struct inode *dir, struct dentry *dentry)simple_offset_remove (shmem_get_offset_ctx (dir), dentry); dir->i_size -=BOGO_DIRENT_SIZE ; - dir->i_mtime =inode_set_ctime_to_ts (dir, -inode_set_ctime_current (inode)); +inode_set_mtime_to_ts (dir, +inode_set_ctime_to_ts (dir,inode_set_ctime_current (inode)));inode_inc_iversion (dir);drop_nlink (inode);dput (dentry);/* Undo the count from "create" - does all the work */
@@ -3504,7 +3504,7 @@ static int shmem_symlink(struct mnt_idmap *idmap, struct inode *dir,folio_put (folio); } dir->i_size +=BOGO_DIRENT_SIZE ; - dir->i_mtime =inode_set_ctime_current (dir); +inode_set_mtime_to_ts (dir,inode_set_ctime_current (dir));inode_inc_iversion (dir);d_instantiate (dentry, inode);dget (dentry);
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 83/89 sunrpc: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- net/sunrpc/rpc_pipe.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
net/sunrpc/rpc_pipe.c +1 -1
@@ -472,7 +472,7 @@ rpc_get_inode(struct super_block *sb, umode_t mode)return NULL ; inode->i_ino =get_next_ino (); inode->i_mode = mode; - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode);switch (mode &S_IFMT ) {case S_IFDIR : inode->i_fop = &simple_dir_operations;
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 84/89 apparmor: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- security/apparmor/apparmorfs.c | 7 ++++--- security/apparmor/policy_unpack.c | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-)
security/apparmor/apparmorfs.c +4 -3
@@ -226,7 +226,7 @@ static int __aafs_setup_d_inode(struct inode *dir, struct dentry *dentry, inode->i_ino =get_next_ino (); inode->i_mode = mode; - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); inode->i_private = data;if (S_ISDIR (mode)) { inode->i_op = iops ? iops : &simple_dir_inode_operations;
@@ -1557,7 +1557,8 @@ void __aafs_profile_migrate_dents(struct aa_profile *old,if (new->dents[i]) {struct inode *inode =d_inode (new->dents[i]); - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode, +inode_set_ctime_current (inode)); } old->dents[i] =NULL ; }
@@ -2546,7 +2547,7 @@ static int aa_mk_null_file(struct dentry *parent) inode->i_ino =get_next_ino (); inode->i_mode =S_IFCHR |S_IRUGO |S_IWUGO ; - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode);init_special_inode (inode,S_IFCHR |S_IRUGO |S_IWUGO ,MKDEV (MEM_MAJOR ,3 ));d_instantiate (dentry, inode);
security/apparmor/policy_unpack.c +2 -2
@@ -89,10 +89,10 @@ void __aa_loaddata_update(struct aa_loaddata *data, long revision)struct inode *inode; inode =d_inode (data->dents[AAFS_LOADDATA_DIR ]); - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode)); inode =d_inode (data->dents[AAFS_LOADDATA_REVISION ]); - inode->i_mtime =inode_set_ctime_current (inode); +inode_set_mtime_to_ts (inode,inode_set_ctime_current (inode)); } }
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 85/89 selinux: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- security/selinux/selinuxfs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
security/selinux/selinuxfs.c +1 -1
@@ -1198,7 +1198,7 @@ static struct inode *sel_make_inode(struct super_block *sb, umode_t mode)if (ret) { ret->i_mode = mode; - ret->i_atime = ret->i_mtime =inode_set_ctime_current (ret); +simple_inode_init_ts (ret); }return ret; }
Signature · 1 line
2.41.0
Jeff Layton
maintainerPATCH v2 86/89 security: convert to new timestamp accessors
In reply to Jeff LaytonConvert to using the new inode timestamp accessor functions.
--- security/inode.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
security/inode.c +1 -1
@@ -145,7 +145,7 @@ static struct dentry *securityfs_create_dentry(const char *name, umode_t mode, inode->i_ino =get_next_ino (); inode->i_mode = mode; - inode->i_atime = inode->i_mtime =inode_set_ctime_current (inode); +simple_inode_init_ts (inode); inode->i_private = data;if (S_ISDIR (mode)) { inode->i_op = &simple_dir_inode_operations;
Signature · 1 line
2.41.0
Quoted 10 lines · Jeff Layton
v2:
- bugfix in mtime handling
- incorporate_secand_nsecaccessor functions (Chuck Lever)
- movei_generationto plug hole after changing timestamps (Amir Goldstein)While working on the multigrain timestamp changes, Linus suggested adding some similar wrappers for accessing the atime and mtime that we have for the ctime. With that, we could then move to using discrete integers instead of struct timespec64 in struct inode and shrink it.
Quoted 7 lines
This patch implements this. Linus suggested using macros for the new accessors, but the existing ctime wrappers were static inlines and since there are only 3 different timestamps, I didn't see that trying to fiddle with macros would gain us anything (other than less verbosity in
fs.h).[...]
This was applied on top of -next but vfs.ctime is now based on v6.6-rc3 as stable tag otherwise this is too much of a moving target with other stuff in -next. Anything that had to be dropped and requires fixups should just be explained in the pr. The sooner this sees some -next, the better, I think.
---
Applied to the vfs.ctime branch of the vfs/vfs.git tree. Patches in the vfs.ctime branch should appear in linux-next soon.
Please report any outstanding bugs that were missed during review in a new review to the original patch series allowing us to drop it.
It's encouraged to provide Acked-bys and Reviewed-bys even though the patch has now been applied. If possible patch trailers will be updated.
Note that commit hashes shown below are subject to change due to rebase, trailer updates or similar. If in doubt, please check the listed branch.
tree: https://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs.git branch: vfs.ctime
[01/86] fs: new accessor methods for atime and mtime
https://git.kernel.org/vfs/vfs/c/22f45fee808d [02/86] fs: convert core infrastructure to new timestamp accessors https://git.kernel.org/vfs/vfs/c/6ac95fb71485 [03/86] spufs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/9953073d5f20 [04/86] hypfs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/1d64bfe22112 [05/86] android: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/a8a74b6b4f2c [06/86] char: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/671ffa0775a7 [07/86] qib: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/ebd5458f3b52 [08/86] ibmasm: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/1d4257d57a41 [09/86] misc: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/d4bf8378b9cb [10/86] x86: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/070601b1e496 [11/86] tty: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/5c9f26b87bed [12/86] function: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/092f46404245 [13/86] legacy: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/5c51d80e51d0 [14/86] usb: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/4707a33afd6f [15/86] 9p: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/20fc454b4493 [16/86] adfs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/3e8d59046f6d [17/86] affs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/60d4d0d37086 [18/86] afs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/6471772aa6fe [19/86] autofs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/3eaad981548b [20/86] befs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/21d0433caf69 [21/86] bfs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/06e502c123a6 [22/86] btrfs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/f62049d7838d [23/86] ceph: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/ac7750d84e38 [24/86] coda: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/5c4bf2507baa [25/86] configfs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/3b930e187f16 [26/86] cramfs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/bb0bf9d3bda8 [27/86] debugfs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/7dc950e659d6 [28/86] devpts: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/a1eb5c26d5a1 [29/86] efivarfs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/17b5652aa824 [30/86] efs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/a3cfbea29e7d [31/86] erofs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/2beccde96d66 [32/86] exfat: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/522f3c42c9e7 [33/86] ext2: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/07be81fce412 [34/86] ext4: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/2ff285d78c4d [35/86] f2fs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/c495130561ae [36/86] fat: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/e57260ae3226 [37/86] freevxfs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/a83513cd029e [38/86] fuse: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/5f1e57582b4e [39/86] gfs2: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/a5f1a9296668 [40/86] hfs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/7ee8d53576e9 [41/86] hfsplus: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/2179ad3569f6 [42/86] hostfs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/c3e1be490207 [43/86] hpfs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/e08a2ea26b41 [44/86] hugetlbfs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/a9701db0ca64 [45/86] isofs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/362d327da07e [46/86] jffs2: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/36a8a5a63218 [47/86] jfs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/acd529413de5 [48/86] kernfs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/05acde68936b [49/86] minix: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/34c1ca111ec1 [50/86] nfs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/77e808456854 [51/86] nfsd: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/a800ed7ebbbf [52/86] nilfs2: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/4ddc9518c2fa [53/86] ntfs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/0d15c2118b1a [54/86] ntfs3: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/82f8d5fde753 [55/86] ocfs2: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/45251ebaca70 [56/86] omfs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/e7c1ff814326 [57/86] openpromfs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/cb62db1d3c61 [58/86] orangefs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/68e257a49aed [59/86] overlayfs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/d482d98dc1bd [60/86] proc: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/8c8afe8a25fa [61/86] pstore: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/b0be548328a2 [62/86] qnx4: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/c28589f2d838 [63/86] qnx6: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/ae0f3d29e728 [64/86] ramfs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/6315fd97a8fc [65/86] reiserfs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/8eceb9b75a5b [66/86] romfs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/6d3dd456da31 [67/86] client: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/b14d4c14f51b [68/86] server: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/bec3d7ffcecd [69/86] squashfs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/d7d5ff75af52 [70/86] sysv: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/39f012d8743e [71/86] tracefs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/22ada3856de8 [72/86] ubifs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/af8b66e1d4b7 [73/86] udf: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/1da45142f95a [74/86] ufs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/41c46d3bb9b3 [75/86] vboxsf: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/cc36ec7935eb [76/86] xfs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/ee3be90b2ba7 [77/86] zonefs: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/8c798cc16b17 [78/86] linux: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/dd53b64b6f51 [79/86] ipc: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/f132b3723b71 [80/86] bpf: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/448a018f67a3 [81/86] mm: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/b6f5b3d5ffc9 [82/86] sunrpc: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/fc9db028b8d7 [83/86] apparmor: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/794ef2a745ec [84/86] selinux: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/3d57ee3686d7 [85/86] security: convert to new timestamp accessors https://git.kernel.org/vfs/vfs/c/71f6d9ebaf43 [86/86] fs: rename inode i_atime and i_mtime fields https://git.kernel.org/vfs/vfs/c/fea0e8fc7829