fs: drop the timespec64 argument from update_time
authorJeff Layton <jlayton@kernel.org>
Mon, 7 Aug 2023 19:38:39 +0000 (15:38 -0400)
committerChristian Brauner <brauner@kernel.org>
Fri, 11 Aug 2023 07:04:57 +0000 (09:04 +0200)
Now that all of the update_time operations are prepared for it, we can
drop the timespec64 argument from the update_time operation. Do that and
remove it from some associated functions like inode_update_time and
inode_needs_update_time.

Signed-off-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: Jan Kara <jack@suse.cz>
Message-Id: <20230807-mgctime-v7-8-d1dec143a704@kernel.org>
Signed-off-by: Christian Brauner <brauner@kernel.org>
15 files changed:
fs/bad_inode.c
fs/btrfs/inode.c
fs/btrfs/volumes.c
fs/fat/fat.h
fs/fat/misc.c
fs/gfs2/inode.c
fs/inode.c
fs/orangefs/inode.c
fs/orangefs/orangefs-kernel.h
fs/overlayfs/inode.c
fs/overlayfs/overlayfs.h
fs/ubifs/file.c
fs/ubifs/ubifs.h
fs/xfs/xfs_iops.c
include/linux/fs.h

index 6e21f74..83f9566 100644 (file)
@@ -133,8 +133,7 @@ static int bad_inode_fiemap(struct inode *inode,
        return -EIO;
 }
 
-static int bad_inode_update_time(struct inode *inode, struct timespec64 *time,
-                                int flags)
+static int bad_inode_update_time(struct inode *inode, int flags)
 {
        return -EIO;
 }
index d52e7d6..0964c66 100644 (file)
@@ -6059,8 +6059,7 @@ static int btrfs_dirty_inode(struct btrfs_inode *inode)
  * This is a copy of file_update_time.  We need this so we can return error on
  * ENOSPC for updating the inode in the case of file write and mmap writes.
  */
-static int btrfs_update_time(struct inode *inode, struct timespec64 *now,
-                            int flags)
+static int btrfs_update_time(struct inode *inode, int flags)
 {
        struct btrfs_root *root = BTRFS_I(inode)->root;
        bool dirty = flags & ~S_VERSION;
index 73f9ea7..264c715 100644 (file)
@@ -1917,15 +1917,13 @@ out:
 static void update_dev_time(const char *device_path)
 {
        struct path path;
-       struct timespec64 now;
        int ret;
 
        ret = kern_path(device_path, LOOKUP_FOLLOW, &path);
        if (ret)
                return;
 
-       now = current_time(d_inode(path.dentry));
-       inode_update_time(d_inode(path.dentry), &now, S_MTIME | S_CTIME | S_VERSION);
+       inode_update_time(d_inode(path.dentry), S_MTIME | S_CTIME | S_VERSION);
        path_put(&path);
 }
 
index e3b690b..66cf477 100644 (file)
@@ -460,8 +460,7 @@ extern struct timespec64 fat_truncate_mtime(const struct msdos_sb_info *sbi,
                                            const struct timespec64 *ts);
 extern int fat_truncate_time(struct inode *inode, struct timespec64 *now,
                             int flags);
-extern int fat_update_time(struct inode *inode, struct timespec64 *now,
-                          int flags);
+extern int fat_update_time(struct inode *inode, int flags);
 extern int fat_sync_bhs(struct buffer_head **bhs, int nr_bhs);
 
 int fat_cache_init(void);
index e783792..f2304a1 100644 (file)
@@ -339,7 +339,7 @@ int fat_truncate_time(struct inode *inode, struct timespec64 *now, int flags)
 }
 EXPORT_SYMBOL_GPL(fat_truncate_time);
 
-int fat_update_time(struct inode *inode, struct timespec64 *now, int flags)
+int fat_update_time(struct inode *inode, int flags)
 {
        int dirty_flags = 0;
 
index f1f0455..a21ac41 100644 (file)
@@ -2139,8 +2139,7 @@ loff_t gfs2_seek_hole(struct file *file, loff_t offset)
        return vfs_setpos(file, ret, inode->i_sb->s_maxbytes);
 }
 
-static int gfs2_update_time(struct inode *inode, struct timespec64 *time,
-                           int flags)
+static int gfs2_update_time(struct inode *inode, int flags)
 {
        struct gfs2_inode *ip = GFS2_I(inode);
        struct gfs2_glock *gl = ip->i_gl;
index e07e45f..e50d94a 100644 (file)
@@ -1958,10 +1958,10 @@ EXPORT_SYMBOL(generic_update_time);
  * This does the actual work of updating an inodes time or version.  Must have
  * had called mnt_want_write() before calling this.
  */
-int inode_update_time(struct inode *inode, struct timespec64 *time, int flags)
+int inode_update_time(struct inode *inode, int flags)
 {
        if (inode->i_op->update_time)
-               return inode->i_op->update_time(inode, time, flags);
+               return inode->i_op->update_time(inode, flags);
        generic_update_time(inode, flags);
        return 0;
 }
@@ -2015,7 +2015,6 @@ void touch_atime(const struct path *path)
 {
        struct vfsmount *mnt = path->mnt;
        struct inode *inode = d_inode(path->dentry);
-       struct timespec64 now;
 
        if (!atime_needs_update(path, inode))
                return;
@@ -2034,8 +2033,7 @@ void touch_atime(const struct path *path)
         * We may also fail on filesystems that have the ability to make parts
         * of the fs read only, e.g. subvolumes in Btrfs.
         */
-       now = current_time(inode);
-       inode_update_time(inode, &now, S_ATIME);
+       inode_update_time(inode, S_ATIME);
        __mnt_drop_write(mnt);
 skip_update:
        sb_end_write(inode->i_sb);
@@ -2120,20 +2118,21 @@ int file_remove_privs(struct file *file)
 }
 EXPORT_SYMBOL(file_remove_privs);
 
-static int inode_needs_update_time(struct inode *inode, struct timespec64 *now)
+static int inode_needs_update_time(struct inode *inode)
 {
        int sync_it = 0;
+       struct timespec64 now = current_time(inode);
        struct timespec64 ctime;
 
        /* First try to exhaust all avenues to not sync */
        if (IS_NOCMTIME(inode))
                return 0;
 
-       if (!timespec64_equal(&inode->i_mtime, now))
+       if (!timespec64_equal(&inode->i_mtime, &now))
                sync_it = S_MTIME;
 
        ctime = inode_get_ctime(inode);
-       if (!timespec64_equal(&ctime, now))
+       if (!timespec64_equal(&ctime, &now))
                sync_it |= S_CTIME;
 
        if (IS_I_VERSION(inode) && inode_iversion_need_inc(inode))
@@ -2142,15 +2141,14 @@ static int inode_needs_update_time(struct inode *inode, struct timespec64 *now)
        return sync_it;
 }
 
-static int __file_update_time(struct file *file, struct timespec64 *now,
-                       int sync_mode)
+static int __file_update_time(struct file *file, int sync_mode)
 {
        int ret = 0;
        struct inode *inode = file_inode(file);
 
        /* try to update time settings */
        if (!__mnt_want_write_file(file)) {
-               ret = inode_update_time(inode, now, sync_mode);
+               ret = inode_update_time(inode, sync_mode);
                __mnt_drop_write_file(file);
        }
 
@@ -2175,13 +2173,12 @@ int file_update_time(struct file *file)
 {
        int ret;
        struct inode *inode = file_inode(file);
-       struct timespec64 now = current_time(inode);
 
-       ret = inode_needs_update_time(inode, &now);
+       ret = inode_needs_update_time(inode);
        if (ret <= 0)
                return ret;
 
-       return __file_update_time(file, &now, ret);
+       return __file_update_time(file, ret);
 }
 EXPORT_SYMBOL(file_update_time);
 
@@ -2204,7 +2201,6 @@ static int file_modified_flags(struct file *file, int flags)
 {
        int ret;
        struct inode *inode = file_inode(file);
-       struct timespec64 now = current_time(inode);
 
        /*
         * Clear the security bits if the process is not being run by root.
@@ -2217,13 +2213,13 @@ static int file_modified_flags(struct file *file, int flags)
        if (unlikely(file->f_mode & FMODE_NOCMTIME))
                return 0;
 
-       ret = inode_needs_update_time(inode, &now);
+       ret = inode_needs_update_time(inode);
        if (ret <= 0)
                return ret;
        if (flags & IOCB_NOWAIT)
                return -EAGAIN;
 
-       return __file_update_time(file, &now, ret);
+       return __file_update_time(file, ret);
 }
 
 /**
index 3afa2a6..0859122 100644 (file)
@@ -900,7 +900,7 @@ int orangefs_permission(struct mnt_idmap *idmap,
        return generic_permission(&nop_mnt_idmap, inode, mask);
 }
 
-int orangefs_update_time(struct inode *inode, struct timespec64 *time, int flags)
+int orangefs_update_time(struct inode *inode, int flags)
 {
        struct iattr iattr;
 
index ce20d34..b711654 100644 (file)
@@ -370,7 +370,7 @@ int orangefs_getattr(struct mnt_idmap *idmap, const struct path *path,
 int orangefs_permission(struct mnt_idmap *idmap,
                        struct inode *inode, int mask);
 
-int orangefs_update_time(struct inode *, struct timespec64 *, int);
+int orangefs_update_time(struct inode *, int);
 
 /*
  * defined in xattr.c
index a63e574..f22e27b 100644 (file)
@@ -693,7 +693,7 @@ int ovl_set_acl(struct mnt_idmap *idmap, struct dentry *dentry,
 }
 #endif
 
-int ovl_update_time(struct inode *inode, struct timespec64 *ts, int flags)
+int ovl_update_time(struct inode *inode, int flags)
 {
        if (flags & S_ATIME) {
                struct ovl_fs *ofs = inode->i_sb->s_fs_info;
index 9402591..8bbe617 100644 (file)
@@ -665,7 +665,7 @@ static inline struct posix_acl *ovl_get_acl_path(const struct path *path,
 }
 #endif
 
-int ovl_update_time(struct inode *inode, struct timespec64 *ts, int flags);
+int ovl_update_time(struct inode *inode, int flags);
 bool ovl_is_private_xattr(struct super_block *sb, const char *name);
 
 struct ovl_inode_params {
index 81d44a1..e5382f0 100644 (file)
@@ -1378,8 +1378,7 @@ static inline int mctime_update_needed(const struct inode *inode,
  *
  * This function updates time of the inode.
  */
-int ubifs_update_time(struct inode *inode, struct timespec64 *time,
-                            int flags)
+int ubifs_update_time(struct inode *inode, int flags)
 {
        struct ubifs_inode *ui = ubifs_inode(inode);
        struct ubifs_info *c = inode->i_sb->s_fs_info;
index 4c36044..ebb3ad6 100644 (file)
@@ -2027,7 +2027,7 @@ int ubifs_calc_dark(const struct ubifs_info *c, int spc);
 int ubifs_fsync(struct file *file, loff_t start, loff_t end, int datasync);
 int ubifs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
                  struct iattr *attr);
-int ubifs_update_time(struct inode *inode, struct timespec64 *time, int flags);
+int ubifs_update_time(struct inode *inode, int flags);
 
 /* dir.c */
 struct inode *ubifs_new_inode(struct ubifs_info *c, struct inode *dir,
index 549ad1f..1c1e617 100644 (file)
@@ -1029,7 +1029,6 @@ xfs_vn_setattr(
 STATIC int
 xfs_vn_update_time(
        struct inode            *inode,
-       struct timespec64       *time,
        int                     flags)
 {
        struct xfs_inode        *ip = XFS_I(inode);
index bb3c2c4..a83313f 100644 (file)
@@ -1887,7 +1887,7 @@ struct inode_operations {
        ssize_t (*listxattr) (struct dentry *, char *, size_t);
        int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start,
                      u64 len);
-       int (*update_time)(struct inode *, struct timespec64 *, int);
+       int (*update_time)(struct inode *, int);
        int (*atomic_open)(struct inode *, struct dentry *,
                           struct file *, unsigned open_flag,
                           umode_t create_mode);
@@ -2237,7 +2237,7 @@ enum file_time_flags {
 
 extern bool atime_needs_update(const struct path *, struct inode *);
 extern void touch_atime(const struct path *);
-int inode_update_time(struct inode *inode, struct timespec64 *time, int flags);
+int inode_update_time(struct inode *inode, int flags);
 
 static inline void file_accessed(struct file *file)
 {