overlayfs: convert to ctime accessor functions
authorJeff Layton <jlayton@kernel.org>
Wed, 5 Jul 2023 19:01:31 +0000 (15:01 -0400)
committerChristian Brauner <brauner@kernel.org>
Mon, 24 Jul 2023 08:30:03 +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.

Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: Jan Kara <jack@suse.cz>
Message-Id: <20230705190309.579783-64-jlayton@kernel.org>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/overlayfs/file.c
fs/overlayfs/util.c

index 21245b00722af97e7dd04f652733f96bffacad4b..7e7876aae01cc28562422262272b524ef780b32b 100644 (file)
@@ -239,6 +239,7 @@ static loff_t ovl_llseek(struct file *file, loff_t offset, int whence)
 static void ovl_file_accessed(struct file *file)
 {
        struct inode *inode, *upperinode;
+       struct timespec64 ctime, uctime;
 
        if (file->f_flags & O_NOATIME)
                return;
@@ -249,10 +250,12 @@ static void ovl_file_accessed(struct file *file)
        if (!upperinode)
                return;
 
+       ctime = inode_get_ctime(inode);
+       uctime = inode_get_ctime(upperinode);
        if ((!timespec64_equal(&inode->i_mtime, &upperinode->i_mtime) ||
-            !timespec64_equal(&inode->i_ctime, &upperinode->i_ctime))) {
+            !timespec64_equal(&ctime, &uctime))) {
                inode->i_mtime = upperinode->i_mtime;
-               inode->i_ctime = upperinode->i_ctime;
+               inode_set_ctime_to_ts(inode, uctime);
        }
 
        touch_atime(&file->f_path);
index 7ef9e13c404acb62d74daf7004bffccec1659390..c210b5d496a857994eae80e4bca7b3ef8f65c96e 100644 (file)
@@ -1202,6 +1202,6 @@ void ovl_copyattr(struct inode *inode)
        inode->i_mode = realinode->i_mode;
        inode->i_atime = realinode->i_atime;
        inode->i_mtime = realinode->i_mtime;
-       inode->i_ctime = realinode->i_ctime;
+       inode_set_ctime_to_ts(inode, inode_get_ctime(realinode));
        i_size_write(inode, i_size_read(realinode));
 }