kernfs: convert to ctime accessor functions
authorJeff Layton <jlayton@kernel.org>
Wed, 5 Jul 2023 19:01:21 +0000 (15:01 -0400)
committerChristian Brauner <brauner@kernel.org>
Mon, 24 Jul 2023 08:30:01 +0000 (10:30 +0200)
In later patches, we're going to change how the inode's ctime field is
used. Switch to using accessor functions instead of raw accesses of
inode->i_ctime.

Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: Jan Kara <jack@suse.cz>
Message-Id: <20230705190309.579783-54-jlayton@kernel.org>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/kernfs/inode.c
fs/libfs.c
fs/minix/bitmap.c
fs/minix/dir.c
fs/minix/inode.c
fs/minix/itree_common.c
fs/minix/namei.c

index b22b74d1a115099e45043bdf50c20ba7a51fd7d5..89a9b4dcf109771a68f1dbbdae9cac5de19e1a5b 100644 (file)
@@ -151,8 +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->i_ctime = current_time(inode);
+       inode->i_atime = inode->i_mtime = inode_set_ctime_current(inode);
 }
 
 static inline void set_inode_attr(struct inode *inode,
@@ -162,7 +161,7 @@ static inline void set_inode_attr(struct inode *inode,
        inode->i_gid = attrs->ia_gid;
        inode->i_atime = attrs->ia_atime;
        inode->i_mtime = attrs->ia_mtime;
-       inode->i_ctime = attrs->ia_ctime;
+       inode_set_ctime_to_ts(inode, attrs->ia_ctime);
 }
 
 static void kernfs_refresh_inode(struct kernfs_node *kn, struct inode *inode)
index ea0a8459188631fcbdc550d77184d5e3d1260d80..1f5245e8bfdc4cbd05a82347e54a294074437af3 100644 (file)
@@ -275,7 +275,7 @@ void simple_recursive_removal(struct dentry *dentry,
                while ((child = find_next_child(this, victim)) == NULL) {
                        // kill and ascend
                        // update metadata while it's still locked
-                       inode->i_ctime = current_time(inode);
+                       inode_set_ctime_current(inode);
                        clear_nlink(inode);
                        inode_unlock(inode);
                        victim = this;
@@ -293,8 +293,7 @@ void simple_recursive_removal(struct dentry *dentry,
                                dput(victim);           // unpin it
                        }
                        if (victim == dentry) {
-                               inode->i_ctime = inode->i_mtime =
-                                       current_time(inode);
+                               inode->i_mtime = inode_set_ctime_current(inode);
                                if (d_is_dir(dentry))
                                        drop_nlink(inode);
                                inode_unlock(inode);
@@ -335,7 +334,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 = root->i_ctime = current_time(root);
+       root->i_atime = root->i_mtime = inode_set_ctime_current(root);
        s->s_root = d_make_root(root);
        if (!s->s_root)
                return -ENOMEM;
@@ -391,7 +390,8 @@ int simple_link(struct dentry *old_dentry, struct inode *dir, struct dentry *den
 {
        struct inode *inode = d_inode(old_dentry);
 
-       inode->i_ctime = dir->i_ctime = dir->i_mtime = current_time(inode);
+       dir->i_mtime = inode_set_ctime_to_ts(dir,
+                                            inode_set_ctime_current(inode));
        inc_nlink(inode);
        ihold(inode);
        dget(dentry);
@@ -425,7 +425,8 @@ int simple_unlink(struct inode *dir, struct dentry *dentry)
 {
        struct inode *inode = d_inode(dentry);
 
-       inode->i_ctime = dir->i_ctime = dir->i_mtime = current_time(inode);
+       dir->i_mtime = inode_set_ctime_to_ts(dir,
+                                            inode_set_ctime_current(inode));
        drop_nlink(inode);
        dput(dentry);
        return 0;
@@ -677,7 +678,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->i_ctime = current_time(inode);
+       inode->i_atime = inode->i_mtime = inode_set_ctime_current(inode);
        inode->i_op = &simple_dir_inode_operations;
        inode->i_fop = &simple_dir_operations;
        set_nlink(inode, 2);
@@ -703,7 +704,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->i_ctime = current_time(inode);
+               inode->i_atime = inode->i_mtime = inode_set_ctime_current(inode);
                inode->i_fop = files->ops;
                inode->i_ino = i;
                d_add(dentry, inode);
@@ -1271,7 +1272,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->i_ctime = current_time(inode);
+       inode->i_atime = inode->i_mtime = inode_set_ctime_current(inode);
        return inode;
 }
 EXPORT_SYMBOL(alloc_anon_inode);
index 870207ba23f1c46acd30ebcad7c63c8243db9049..25c08fbfcb9dbafb891aadf659f4c85b299dd1d8 100644 (file)
@@ -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->i_ctime = current_time(inode);
+       inode->i_mtime = inode->i_atime = inode_set_ctime_current(inode);
        inode->i_blocks = 0;
        memset(&minix_i(inode)->u, 0, sizeof(minix_i(inode)->u));
        insert_inode_hash(inode);
index bf9858f76b6ae1d1d68249964587e638d76564f7..20f23e6e58ad44462996fb093a1a0ed7bc1274b7 100644 (file)
@@ -281,7 +281,7 @@ got_it:
                de->inode = inode->i_ino;
        }
        dir_commit_chunk(page, pos, sbi->s_dirsize);
-       dir->i_mtime = dir->i_ctime = current_time(dir);
+       dir->i_mtime = 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_ctime = inode->i_mtime = current_time(inode);
+       inode->i_mtime = 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 = dir->i_ctime = current_time(dir);
+       dir->i_mtime = inode_set_ctime_current(dir);
        mark_inode_dirty(dir);
        return minix_handle_dirsync(dir);
 }
index e9fbb5303a222958a53fa95575be1814327f9adc..8a4fc9420b36c764e8b3169d01764e0101763f20 100644 (file)
@@ -501,10 +501,7 @@ 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.tv_sec = inode->i_atime.tv_sec = inode->i_ctime.tv_sec = raw_inode->i_time;
-       inode->i_mtime.tv_nsec = 0;
-       inode->i_atime.tv_nsec = 0;
-       inode->i_ctime.tv_nsec = 0;
+       inode->i_mtime = inode->i_atime = 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];
@@ -543,10 +540,9 @@ static struct inode *V2_minix_iget(struct inode *inode)
        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->i_ctime.tv_sec = raw_inode->i_ctime;
+       inode_set_ctime(inode, raw_inode->i_ctime, 0);
        inode->i_mtime.tv_nsec = 0;
        inode->i_atime.tv_nsec = 0;
-       inode->i_ctime.tv_nsec = 0;
        inode->i_blocks = 0;
        for (i = 0; i < 10; i++)
                minix_inode->u.i2_data[i] = raw_inode->i_zone[i];
@@ -622,7 +618,7 @@ static struct buffer_head * V2_minix_update_inode(struct inode * inode)
        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->i_ctime.tv_sec;
+       raw_inode->i_ctime = inode_get_ctime(inode).tv_sec;
        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++)
index 446148792f4115e6fc10eb7c6007f4393c0003b3..ce18ae37c29d85b19879e0ebc1e2fff413baaaee 100644 (file)
@@ -131,7 +131,7 @@ static inline int splice_branch(struct inode *inode,
 
        /* We are done with atomic stuff, now do the rest of housekeeping */
 
-       inode->i_ctime = current_time(inode);
+       inode_set_ctime_current(inode);
 
        /* had we spliced it onto indirect block? */
        if (where->bh)
@@ -350,7 +350,7 @@ do_indirects:
                }
                first_whole++;
        }
-       inode->i_mtime = inode->i_ctime = current_time(inode);
+       inode->i_mtime = inode_set_ctime_current(inode);
        mark_inode_dirty(inode);
 }
 
index 956d5183828dcbf0ce3371df09b2b1d6c4ebf7f0..114084d5636aea1cb29ac1fd47324bd6b4184df8 100644 (file)
@@ -98,7 +98,7 @@ static int minix_link(struct dentry * old_dentry, struct inode * dir,
 {
        struct inode *inode = d_inode(old_dentry);
 
-       inode->i_ctime = current_time(inode);
+       inode_set_ctime_current(inode);
        inode_inc_link_count(inode);
        ihold(inode);
        return add_nondir(dentry, inode);
@@ -154,7 +154,7 @@ static int minix_unlink(struct inode * dir, struct dentry *dentry)
 
        if (err)
                return err;
-       inode->i_ctime = dir->i_ctime;
+       inode_set_ctime_to_ts(inode, inode_get_ctime(dir));
        inode_dec_link_count(inode);
        return 0;
 }
@@ -218,7 +218,7 @@ static int minix_rename(struct mnt_idmap *idmap,
                put_page(new_page);
                if (err)
                        goto out_dir;
-               new_inode->i_ctime = current_time(new_inode);
+               inode_set_ctime_current(new_inode);
                if (dir_de)
                        drop_nlink(new_inode);
                inode_dec_link_count(new_inode);