mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
kernfs: convert to ctime accessor functions
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>
This commit is contained in:
parent
ad9dc5df36
commit
f7f438589f
@ -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)
|
||||
|
19
fs/libfs.c
19
fs/libfs.c
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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++)
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user