mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
fuse: 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. Signed-off-by: Jeff Layton <jlayton@kernel.org> Reviewed-by: Jan Kara <jack@suse.cz> Message-Id: <20230705190309.579783-44-jlayton@kernel.org> Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
parent
529d8a290a
commit
ceb2d5e92f
@ -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->i_ctime = current_time(inode);
|
||||
inode->i_atime = inode->i_mtime = inode_set_ctime_current(inode);
|
||||
/* setting ->i_op to NULL is not allowed */
|
||||
if (iop)
|
||||
inode->i_op = iop;
|
||||
|
@ -935,7 +935,7 @@ void fuse_flush_time_update(struct inode *inode)
|
||||
static void fuse_update_ctime_in_cache(struct inode *inode)
|
||||
{
|
||||
if (!IS_NOCMTIME(inode)) {
|
||||
inode->i_ctime = current_time(inode);
|
||||
inode_set_ctime_current(inode);
|
||||
mark_inode_dirty_sync(inode);
|
||||
fuse_flush_time_update(inode);
|
||||
}
|
||||
@ -1717,8 +1717,8 @@ int fuse_flush_times(struct inode *inode, struct fuse_file *ff)
|
||||
inarg.mtimensec = inode->i_mtime.tv_nsec;
|
||||
if (fm->fc->minor >= 23) {
|
||||
inarg.valid |= FATTR_CTIME;
|
||||
inarg.ctime = inode->i_ctime.tv_sec;
|
||||
inarg.ctimensec = inode->i_ctime.tv_nsec;
|
||||
inarg.ctime = inode_get_ctime(inode).tv_sec;
|
||||
inarg.ctimensec = inode_get_ctime(inode).tv_nsec;
|
||||
}
|
||||
if (ff) {
|
||||
inarg.valid |= FATTR_FH;
|
||||
@ -1859,7 +1859,7 @@ int fuse_do_setattr(struct dentry *dentry, struct iattr *attr,
|
||||
if (attr->ia_valid & ATTR_MTIME)
|
||||
inode->i_mtime = attr->ia_mtime;
|
||||
if (attr->ia_valid & ATTR_CTIME)
|
||||
inode->i_ctime = attr->ia_ctime;
|
||||
inode_set_ctime_to_ts(inode, attr->ia_ctime);
|
||||
/* FIXME: clear I_DIRTY_SYNC? */
|
||||
}
|
||||
|
||||
|
@ -194,8 +194,7 @@ void fuse_change_attributes_common(struct inode *inode, struct fuse_attr *attr,
|
||||
inode->i_mtime.tv_nsec = attr->mtimensec;
|
||||
}
|
||||
if (!(cache_mask & STATX_CTIME)) {
|
||||
inode->i_ctime.tv_sec = attr->ctime;
|
||||
inode->i_ctime.tv_nsec = attr->ctimensec;
|
||||
inode_set_ctime(inode, attr->ctime, attr->ctimensec);
|
||||
}
|
||||
|
||||
if (attr->blksize != 0)
|
||||
@ -259,8 +258,8 @@ void fuse_change_attributes(struct inode *inode, struct fuse_attr *attr,
|
||||
attr->mtimensec = inode->i_mtime.tv_nsec;
|
||||
}
|
||||
if (cache_mask & STATX_CTIME) {
|
||||
attr->ctime = inode->i_ctime.tv_sec;
|
||||
attr->ctimensec = inode->i_ctime.tv_nsec;
|
||||
attr->ctime = inode_get_ctime(inode).tv_sec;
|
||||
attr->ctimensec = inode_get_ctime(inode).tv_nsec;
|
||||
}
|
||||
|
||||
if ((attr_version != 0 && fi->attr_version > attr_version) ||
|
||||
@ -318,8 +317,7 @@ static void fuse_init_inode(struct inode *inode, struct fuse_attr *attr,
|
||||
inode->i_size = attr->size;
|
||||
inode->i_mtime.tv_sec = attr->mtime;
|
||||
inode->i_mtime.tv_nsec = attr->mtimensec;
|
||||
inode->i_ctime.tv_sec = attr->ctime;
|
||||
inode->i_ctime.tv_nsec = attr->ctimensec;
|
||||
inode_set_ctime(inode, attr->ctime, attr->ctimensec);
|
||||
if (S_ISREG(inode->i_mode)) {
|
||||
fuse_init_common(inode);
|
||||
fuse_init_file_inode(inode, attr->flags);
|
||||
@ -1397,16 +1395,18 @@ EXPORT_SYMBOL_GPL(fuse_dev_free);
|
||||
static void fuse_fill_attr_from_inode(struct fuse_attr *attr,
|
||||
const struct fuse_inode *fi)
|
||||
{
|
||||
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,
|
||||
.ctime = fi->inode.i_ctime.tv_sec,
|
||||
.ctime = ctime.tv_sec,
|
||||
.atimensec = fi->inode.i_atime.tv_nsec,
|
||||
.mtimensec = fi->inode.i_mtime.tv_nsec,
|
||||
.ctimensec = fi->inode.i_ctime.tv_nsec,
|
||||
.ctimensec = ctime.tv_nsec,
|
||||
.mode = fi->inode.i_mode,
|
||||
.nlink = fi->inode.i_nlink,
|
||||
.uid = fi->inode.i_uid.val,
|
||||
|
Loading…
Reference in New Issue
Block a user