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

Signed-off-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: Jan Kara <jack@suse.cz>
Message-Id: <20230705190309.579783-41-jlayton@kernel.org>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/f2fs/dir.c
fs/f2fs/f2fs.h
fs/f2fs/file.c
fs/f2fs/inline.c
fs/f2fs/inode.c
fs/f2fs/namei.c
fs/f2fs/recovery.c
fs/f2fs/super.c
fs/f2fs/xattr.c

index d635c58..8aa29fe 100644 (file)
@@ -455,7 +455,7 @@ void f2fs_set_link(struct inode *dir, struct f2fs_dir_entry *de,
        de->file_type = fs_umode_to_ftype(inode->i_mode);
        set_page_dirty(page);
 
-       dir->i_mtime = dir->i_ctime = current_time(dir);
+       dir->i_mtime = inode_set_ctime_current(dir);
        f2fs_mark_inode_dirty_sync(dir, false);
        f2fs_put_page(page, 1);
 }
@@ -609,7 +609,7 @@ void f2fs_update_parent_metadata(struct inode *dir, struct inode *inode,
                        f2fs_i_links_write(dir, true);
                clear_inode_flag(inode, FI_NEW_INODE);
        }
-       dir->i_mtime = dir->i_ctime = current_time(dir);
+       dir->i_mtime = inode_set_ctime_current(dir);
        f2fs_mark_inode_dirty_sync(dir, false);
 
        if (F2FS_I(dir)->i_current_depth != current_depth)
@@ -858,7 +858,7 @@ void f2fs_drop_nlink(struct inode *dir, struct inode *inode)
 
        if (S_ISDIR(inode->i_mode))
                f2fs_i_links_write(dir, false);
-       inode->i_ctime = current_time(inode);
+       inode_set_ctime_current(inode);
 
        f2fs_i_links_write(inode, false);
        if (S_ISDIR(inode->i_mode)) {
@@ -919,7 +919,7 @@ void f2fs_delete_entry(struct f2fs_dir_entry *dentry, struct page *page,
        }
        f2fs_put_page(page, 1);
 
-       dir->i_ctime = dir->i_mtime = current_time(dir);
+       dir->i_mtime = inode_set_ctime_current(dir);
        f2fs_mark_inode_dirty_sync(dir, false);
 
        if (inode)
index c7cb217..e18272a 100644 (file)
@@ -3303,9 +3303,11 @@ static inline void clear_file(struct inode *inode, int type)
 
 static inline bool f2fs_is_time_consistent(struct inode *inode)
 {
+       struct timespec64 ctime = inode_get_ctime(inode);
+
        if (!timespec64_equal(F2FS_I(inode)->i_disk_time, &inode->i_atime))
                return false;
-       if (!timespec64_equal(F2FS_I(inode)->i_disk_time + 1, &inode->i_ctime))
+       if (!timespec64_equal(F2FS_I(inode)->i_disk_time + 1, &ctime))
                return false;
        if (!timespec64_equal(F2FS_I(inode)->i_disk_time + 2, &inode->i_mtime))
                return false;
index 093039d..b018800 100644 (file)
@@ -794,7 +794,7 @@ int f2fs_truncate(struct inode *inode)
        if (err)
                return err;
 
-       inode->i_mtime = inode->i_ctime = current_time(inode);
+       inode->i_mtime = inode_set_ctime_current(inode);
        f2fs_mark_inode_dirty_sync(inode, false);
        return 0;
 }
@@ -905,7 +905,7 @@ static void __setattr_copy(struct mnt_idmap *idmap,
        if (ia_valid & ATTR_MTIME)
                inode->i_mtime = attr->ia_mtime;
        if (ia_valid & ATTR_CTIME)
-               inode->i_ctime = attr->ia_ctime;
+               inode_set_ctime_to_ts(inode, attr->ia_ctime);
        if (ia_valid & ATTR_MODE) {
                umode_t mode = attr->ia_mode;
                vfsgid_t vfsgid = i_gid_into_vfsgid(idmap, inode);
@@ -1008,7 +1008,7 @@ int f2fs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
                        return err;
 
                spin_lock(&F2FS_I(inode)->i_size_lock);
-               inode->i_mtime = inode->i_ctime = current_time(inode);
+               inode->i_mtime = inode_set_ctime_current(inode);
                F2FS_I(inode)->last_disk_size = i_size_read(inode);
                spin_unlock(&F2FS_I(inode)->i_size_lock);
        }
@@ -1835,7 +1835,7 @@ static long f2fs_fallocate(struct file *file, int mode,
        }
 
        if (!ret) {
-               inode->i_mtime = inode->i_ctime = current_time(inode);
+               inode->i_mtime = inode_set_ctime_current(inode);
                f2fs_mark_inode_dirty_sync(inode, false);
                f2fs_update_time(F2FS_I_SB(inode), REQ_TIME);
        }
@@ -1937,7 +1937,7 @@ static int f2fs_setflags_common(struct inode *inode, u32 iflags, u32 mask)
        else
                clear_inode_flag(inode, FI_PROJ_INHERIT);
 
-       inode->i_ctime = current_time(inode);
+       inode_set_ctime_current(inode);
        f2fs_set_inode_flags(inode);
        f2fs_mark_inode_dirty_sync(inode, true);
        return 0;
@@ -2874,10 +2874,10 @@ out_src:
        if (ret)
                goto out_unlock;
 
-       src->i_mtime = src->i_ctime = current_time(src);
+       src->i_mtime = inode_set_ctime_current(src);
        f2fs_mark_inode_dirty_sync(src, false);
        if (src != dst) {
-               dst->i_mtime = dst->i_ctime = current_time(dst);
+               dst->i_mtime = inode_set_ctime_current(dst);
                f2fs_mark_inode_dirty_sync(dst, false);
        }
        f2fs_update_time(sbi, REQ_TIME);
@@ -3073,7 +3073,7 @@ static int f2fs_ioc_setproject(struct inode *inode, __u32 projid)
                goto out_unlock;
 
        fi->i_projid = kprojid;
-       inode->i_ctime = current_time(inode);
+       inode_set_ctime_current(inode);
        f2fs_mark_inode_dirty_sync(inode, true);
 out_unlock:
        f2fs_unlock_op(sbi);
@@ -3511,7 +3511,7 @@ static int f2fs_release_compress_blocks(struct file *filp, unsigned long arg)
        }
 
        set_inode_flag(inode, FI_COMPRESS_RELEASED);
-       inode->i_ctime = current_time(inode);
+       inode_set_ctime_current(inode);
        f2fs_mark_inode_dirty_sync(inode, true);
 
        f2fs_down_write(&F2FS_I(inode)->i_gc_rwsem[WRITE]);
@@ -3710,7 +3710,7 @@ static int f2fs_reserve_compress_blocks(struct file *filp, unsigned long arg)
 
        if (ret >= 0) {
                clear_inode_flag(inode, FI_COMPRESS_RELEASED);
-               inode->i_ctime = current_time(inode);
+               inode_set_ctime_current(inode);
                f2fs_mark_inode_dirty_sync(inode, true);
        }
 unlock_inode:
index 4638fee..88fc920 100644 (file)
@@ -698,7 +698,7 @@ void f2fs_delete_inline_entry(struct f2fs_dir_entry *dentry, struct page *page,
        set_page_dirty(page);
        f2fs_put_page(page, 1);
 
-       dir->i_ctime = dir->i_mtime = current_time(dir);
+       dir->i_mtime = inode_set_ctime_current(dir);
        f2fs_mark_inode_dirty_sync(dir, false);
 
        if (inode)
index 09e986b..c1c2ba9 100644 (file)
@@ -403,7 +403,7 @@ static void init_idisk_time(struct inode *inode)
        struct f2fs_inode_info *fi = F2FS_I(inode);
 
        fi->i_disk_time[0] = inode->i_atime;
-       fi->i_disk_time[1] = inode->i_ctime;
+       fi->i_disk_time[1] = inode_get_ctime(inode);
        fi->i_disk_time[2] = inode->i_mtime;
 }
 
@@ -434,10 +434,10 @@ static int do_read_inode(struct inode *inode)
        inode->i_blocks = SECTOR_FROM_BLOCK(le64_to_cpu(ri->i_blocks) - 1);
 
        inode->i_atime.tv_sec = le64_to_cpu(ri->i_atime);
-       inode->i_ctime.tv_sec = le64_to_cpu(ri->i_ctime);
+       inode_set_ctime(inode, le64_to_cpu(ri->i_ctime),
+                       le32_to_cpu(ri->i_ctime_nsec));
        inode->i_mtime.tv_sec = le64_to_cpu(ri->i_mtime);
        inode->i_atime.tv_nsec = le32_to_cpu(ri->i_atime_nsec);
-       inode->i_ctime.tv_nsec = le32_to_cpu(ri->i_ctime_nsec);
        inode->i_mtime.tv_nsec = le32_to_cpu(ri->i_mtime_nsec);
        inode->i_generation = le32_to_cpu(ri->i_generation);
        if (S_ISDIR(inode->i_mode))
@@ -714,10 +714,10 @@ void f2fs_update_inode(struct inode *inode, struct page *node_page)
        set_raw_inline(inode, ri);
 
        ri->i_atime = cpu_to_le64(inode->i_atime.tv_sec);
-       ri->i_ctime = cpu_to_le64(inode->i_ctime.tv_sec);
+       ri->i_ctime = cpu_to_le64(inode_get_ctime(inode).tv_sec);
        ri->i_mtime = cpu_to_le64(inode->i_mtime.tv_sec);
        ri->i_atime_nsec = cpu_to_le32(inode->i_atime.tv_nsec);
-       ri->i_ctime_nsec = cpu_to_le32(inode->i_ctime.tv_nsec);
+       ri->i_ctime_nsec = cpu_to_le32(inode_get_ctime(inode).tv_nsec);
        ri->i_mtime_nsec = cpu_to_le32(inode->i_mtime.tv_nsec);
        if (S_ISDIR(inode->i_mode))
                ri->i_current_depth =
index bee0568..193b22a 100644 (file)
@@ -243,7 +243,7 @@ static struct inode *f2fs_new_inode(struct mnt_idmap *idmap,
 
        inode->i_ino = ino;
        inode->i_blocks = 0;
-       inode->i_mtime = inode->i_atime = inode->i_ctime = current_time(inode);
+       inode->i_mtime = inode->i_atime = inode_set_ctime_current(inode);
        F2FS_I(inode)->i_crtime = inode->i_mtime;
        inode->i_generation = get_random_u32();
 
@@ -420,7 +420,7 @@ static int f2fs_link(struct dentry *old_dentry, struct inode *dir,
 
        f2fs_balance_fs(sbi, true);
 
-       inode->i_ctime = current_time(inode);
+       inode_set_ctime_current(inode);
        ihold(inode);
 
        set_inode_flag(inode, FI_INC_LINK);
@@ -1052,7 +1052,7 @@ static int f2fs_rename(struct mnt_idmap *idmap, struct inode *old_dir,
                f2fs_set_link(new_dir, new_entry, new_page, old_inode);
                new_page = NULL;
 
-               new_inode->i_ctime = current_time(new_inode);
+               inode_set_ctime_current(new_inode);
                f2fs_down_write(&F2FS_I(new_inode)->i_sem);
                if (old_dir_entry)
                        f2fs_i_links_write(new_inode, false);
@@ -1086,7 +1086,7 @@ static int f2fs_rename(struct mnt_idmap *idmap, struct inode *old_dir,
                f2fs_i_pino_write(old_inode, new_dir->i_ino);
        f2fs_up_write(&F2FS_I(old_inode)->i_sem);
 
-       old_inode->i_ctime = current_time(old_inode);
+       inode_set_ctime_current(old_inode);
        f2fs_mark_inode_dirty_sync(old_inode, false);
 
        f2fs_delete_entry(old_entry, old_page, old_dir, NULL);
@@ -1251,7 +1251,7 @@ static int f2fs_cross_rename(struct inode *old_dir, struct dentry *old_dentry,
                f2fs_i_pino_write(old_inode, new_dir->i_ino);
        f2fs_up_write(&F2FS_I(old_inode)->i_sem);
 
-       old_dir->i_ctime = current_time(old_dir);
+       inode_set_ctime_current(old_dir);
        if (old_nlink) {
                f2fs_down_write(&F2FS_I(old_dir)->i_sem);
                f2fs_i_links_write(old_dir, old_nlink > 0);
@@ -1270,7 +1270,7 @@ static int f2fs_cross_rename(struct inode *old_dir, struct dentry *old_dentry,
                f2fs_i_pino_write(new_inode, old_dir->i_ino);
        f2fs_up_write(&F2FS_I(new_inode)->i_sem);
 
-       new_dir->i_ctime = current_time(new_dir);
+       inode_set_ctime_current(new_dir);
        if (new_nlink) {
                f2fs_down_write(&F2FS_I(new_dir)->i_sem);
                f2fs_i_links_write(new_dir, new_nlink > 0);
index 4e7d4ce..b8637e8 100644 (file)
@@ -321,10 +321,10 @@ static int recover_inode(struct inode *inode, struct page *page)
 
        f2fs_i_size_write(inode, le64_to_cpu(raw->i_size));
        inode->i_atime.tv_sec = le64_to_cpu(raw->i_atime);
-       inode->i_ctime.tv_sec = le64_to_cpu(raw->i_ctime);
+       inode_set_ctime(inode, le64_to_cpu(raw->i_ctime),
+                       le32_to_cpu(raw->i_ctime_nsec));
        inode->i_mtime.tv_sec = le64_to_cpu(raw->i_mtime);
        inode->i_atime.tv_nsec = le32_to_cpu(raw->i_atime_nsec);
-       inode->i_ctime.tv_nsec = le32_to_cpu(raw->i_ctime_nsec);
        inode->i_mtime.tv_nsec = le32_to_cpu(raw->i_mtime_nsec);
 
        F2FS_I(inode)->i_advise = raw->i_advise;
index ca31163..28aeffc 100644 (file)
@@ -2703,7 +2703,7 @@ retry:
 
        if (len == towrite)
                return err;
-       inode->i_mtime = inode->i_ctime = current_time(inode);
+       inode->i_mtime = inode_set_ctime_current(inode);
        f2fs_mark_inode_dirty_sync(inode, false);
        return len - towrite;
 }
index 476b186..4ae93e1 100644 (file)
@@ -764,7 +764,7 @@ static int __f2fs_setxattr(struct inode *inode, int index,
 same:
        if (is_inode_flag_set(inode, FI_ACL_MODE)) {
                inode->i_mode = F2FS_I(inode)->i_acl_mode;
-               inode->i_ctime = current_time(inode);
+               inode_set_ctime_current(inode);
                clear_inode_flag(inode, FI_ACL_MODE);
        }