ceph: convert to ctime accessor functions
authorJeff Layton <jlayton@kernel.org>
Wed, 5 Jul 2023 19:00:55 +0000 (15:00 -0400)
committerChristian Brauner <brauner@kernel.org>
Thu, 13 Jul 2023 08:28:05 +0000 (10:28 +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: Xiubo Li <xiubli@redhat.com>
Signed-off-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: Jan Kara <jack@suse.cz>
Message-Id: <20230705190309.579783-28-jlayton@kernel.org>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/ceph/acl.c
fs/ceph/caps.c
fs/ceph/inode.c
fs/ceph/snap.c
fs/ceph/xattr.c

index 6945a938d396959cb554c37df3651311d8f3010e..c91b293267d748af2f35e4fdcfa67563337e15f9 100644 (file)
@@ -93,7 +93,7 @@ int ceph_set_acl(struct mnt_idmap *idmap, struct dentry *dentry,
        char *value = NULL;
        struct iattr newattrs;
        struct inode *inode = d_inode(dentry);
-       struct timespec64 old_ctime = inode->i_ctime;
+       struct timespec64 old_ctime = inode_get_ctime(inode);
        umode_t new_mode = inode->i_mode, old_mode = inode->i_mode;
 
        if (ceph_snap(inode) != CEPH_NOSNAP) {
index e2bb0d0072da5adc215d199765ee21a46d478e1f..09cd6d334604e7b7c47beed10f35a8e843b968d7 100644 (file)
@@ -1400,7 +1400,7 @@ static void __prep_cap(struct cap_msg_args *arg, struct ceph_cap *cap,
 
        arg->mtime = inode->i_mtime;
        arg->atime = inode->i_atime;
-       arg->ctime = inode->i_ctime;
+       arg->ctime = inode_get_ctime(inode);
        arg->btime = ci->i_btime;
        arg->change_attr = inode_peek_iversion_raw(inode);
 
index 8e5f41d4528395fa0fa6868aa185c42269871791..5f6e93714f5a4b8afe54dd1ed2eeda8e328b6104 100644 (file)
@@ -100,7 +100,7 @@ struct inode *ceph_get_snapdir(struct inode *parent)
        inode->i_uid = parent->i_uid;
        inode->i_gid = parent->i_gid;
        inode->i_mtime = parent->i_mtime;
-       inode->i_ctime = parent->i_ctime;
+       inode_set_ctime_to_ts(inode, inode_get_ctime(parent));
        inode->i_atime = parent->i_atime;
        ci->i_rbytes = 0;
        ci->i_btime = ceph_inode(parent)->i_btime;
@@ -688,6 +688,7 @@ void ceph_fill_file_time(struct inode *inode, int issued,
                         struct timespec64 *mtime, struct timespec64 *atime)
 {
        struct ceph_inode_info *ci = ceph_inode(inode);
+       struct timespec64 ictime = inode_get_ctime(inode);
        int warn = 0;
 
        if (issued & (CEPH_CAP_FILE_EXCL|
@@ -696,11 +697,11 @@ void ceph_fill_file_time(struct inode *inode, int issued,
                      CEPH_CAP_AUTH_EXCL|
                      CEPH_CAP_XATTR_EXCL)) {
                if (ci->i_version == 0 ||
-                   timespec64_compare(ctime, &inode->i_ctime) > 0) {
+                   timespec64_compare(ctime, &ictime) > 0) {
                        dout("ctime %lld.%09ld -> %lld.%09ld inc w/ cap\n",
-                            inode->i_ctime.tv_sec, inode->i_ctime.tv_nsec,
+                            ictime.tv_sec, ictime.tv_nsec,
                             ctime->tv_sec, ctime->tv_nsec);
-                       inode->i_ctime = *ctime;
+                       inode_set_ctime_to_ts(inode, *ctime);
                }
                if (ci->i_version == 0 ||
                    ceph_seq_cmp(time_warp_seq, ci->i_time_warp_seq) > 0) {
@@ -738,7 +739,7 @@ void ceph_fill_file_time(struct inode *inode, int issued,
        } else {
                /* we have no write|excl caps; whatever the MDS says is true */
                if (ceph_seq_cmp(time_warp_seq, ci->i_time_warp_seq) >= 0) {
-                       inode->i_ctime = *ctime;
+                       inode_set_ctime_to_ts(inode, *ctime);
                        inode->i_mtime = *mtime;
                        inode->i_atime = *atime;
                        ci->i_time_warp_seq = time_warp_seq;
@@ -2166,7 +2167,8 @@ int __ceph_setattr(struct inode *inode, struct iattr *attr)
                bool only = (ia_valid & (ATTR_SIZE|ATTR_MTIME|ATTR_ATIME|
                                         ATTR_MODE|ATTR_UID|ATTR_GID)) == 0;
                dout("setattr %p ctime %lld.%ld -> %lld.%ld (%s)\n", inode,
-                    inode->i_ctime.tv_sec, inode->i_ctime.tv_nsec,
+                    inode_get_ctime(inode).tv_sec,
+                    inode_get_ctime(inode).tv_nsec,
                     attr->ia_ctime.tv_sec, attr->ia_ctime.tv_nsec,
                     only ? "ctime only" : "ignored");
                if (only) {
@@ -2191,7 +2193,7 @@ int __ceph_setattr(struct inode *inode, struct iattr *attr)
        if (dirtied) {
                inode_dirty_flags = __ceph_mark_dirty_caps(ci, dirtied,
                                                           &prealloc_cf);
-               inode->i_ctime = attr->ia_ctime;
+               inode_set_ctime_to_ts(inode, attr->ia_ctime);
                inode_inc_iversion_raw(inode);
        }
 
index 343d738448dcd9e8c55d5dec2b67eca554334a99..c9920ade15f5f497a8acdb2378ec99b5f2960186 100644 (file)
@@ -660,7 +660,7 @@ int __ceph_finish_cap_snap(struct ceph_inode_info *ci,
        capsnap->size = i_size_read(inode);
        capsnap->mtime = inode->i_mtime;
        capsnap->atime = inode->i_atime;
-       capsnap->ctime = inode->i_ctime;
+       capsnap->ctime = inode_get_ctime(inode);
        capsnap->btime = ci->i_btime;
        capsnap->change_attr = inode_peek_iversion_raw(inode);
        capsnap->time_warp_seq = ci->i_time_warp_seq;
index 806183959c475c10be896d2480bc53ee9cb4089a..1cbd84cc82a83724193a4e8d0a33ab2f7b73cc92 100644 (file)
@@ -1238,7 +1238,7 @@ retry:
                dirty = __ceph_mark_dirty_caps(ci, CEPH_CAP_XATTR_EXCL,
                                               &prealloc_cf);
                ci->i_xattrs.dirty = true;
-               inode->i_ctime = current_time(inode);
+               inode_set_ctime_current(inode);
        }
 
        spin_unlock(&ci->i_ceph_lock);