Merge tag 'vfs-6.7.fsid' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs
[linux-2.6-block.git] / fs / fuse / inode.c
index e63f966698a5acb35d8cb67caaecae5f4bc83ce0..74d4f09d5827e8af92aef881eb8060fa69e4afca 100644 (file)
@@ -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);
@@ -1424,17 +1421,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,