mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
fuse: convert to new timestamp accessors
Convert to using the new inode timestamp accessor functions. Signed-off-by: Jeff Layton <jlayton@kernel.org> Link: https://lore.kernel.org/r/20231004185347.80880-37-jlayton@kernel.org Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
parent
5ec1b39e69
commit
3c0d5df2d0
@ -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;
|
||||
|
@ -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? */
|
||||
|
@ -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,
|
||||
|
@ -476,7 +476,7 @@ retry_locked:
|
||||
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 @@ retry_locked:
|
||||
* 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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user