On Wed 05-07-23 15:01:12, Jeff Layton wrote: > 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@xxxxxxxxxx> Looks good to me. Feel free to add: Reviewed-by: Jan Kara <jack@xxxxxxx> Honza > --- > fs/gfs2/acl.c | 2 +- > fs/gfs2/bmap.c | 11 +++++------ > fs/gfs2/dir.c | 15 ++++++++------- > fs/gfs2/file.c | 2 +- > fs/gfs2/glops.c | 4 ++-- > fs/gfs2/inode.c | 8 ++++---- > fs/gfs2/super.c | 4 ++-- > fs/gfs2/xattr.c | 8 ++++---- > 8 files changed, 27 insertions(+), 27 deletions(-) > > diff --git a/fs/gfs2/acl.c b/fs/gfs2/acl.c > index a392aa0f041d..443640e6fb9c 100644 > --- a/fs/gfs2/acl.c > +++ b/fs/gfs2/acl.c > @@ -142,7 +142,7 @@ int gfs2_set_acl(struct mnt_idmap *idmap, struct dentry *dentry, > > ret = __gfs2_set_acl(inode, acl, type); > if (!ret && mode != inode->i_mode) { > - inode->i_ctime = current_time(inode); > + inode_set_ctime_current(inode); > inode->i_mode = mode; > mark_inode_dirty(inode); > } > diff --git a/fs/gfs2/bmap.c b/fs/gfs2/bmap.c > index 8d611fbcf0bd..45ea63f7167d 100644 > --- a/fs/gfs2/bmap.c > +++ b/fs/gfs2/bmap.c > @@ -1386,7 +1386,7 @@ static int trunc_start(struct inode *inode, u64 newsize) > ip->i_diskflags |= GFS2_DIF_TRUNC_IN_PROG; > > i_size_write(inode, newsize); > - ip->i_inode.i_mtime = ip->i_inode.i_ctime = current_time(&ip->i_inode); > + ip->i_inode.i_mtime = inode_set_ctime_current(&ip->i_inode); > gfs2_dinode_out(ip, dibh->b_data); > > if (journaled) > @@ -1583,8 +1583,7 @@ static int sweep_bh_for_rgrps(struct gfs2_inode *ip, struct gfs2_holder *rd_gh, > > /* Every transaction boundary, we rewrite the dinode > to keep its di_blocks current in case of failure. */ > - ip->i_inode.i_mtime = ip->i_inode.i_ctime = > - current_time(&ip->i_inode); > + ip->i_inode.i_mtime = inode_set_ctime_current(&ip->i_inode); > gfs2_trans_add_meta(ip->i_gl, dibh); > gfs2_dinode_out(ip, dibh->b_data); > brelse(dibh); > @@ -1950,7 +1949,7 @@ static int punch_hole(struct gfs2_inode *ip, u64 offset, u64 length) > gfs2_statfs_change(sdp, 0, +btotal, 0); > gfs2_quota_change(ip, -(s64)btotal, ip->i_inode.i_uid, > ip->i_inode.i_gid); > - ip->i_inode.i_mtime = ip->i_inode.i_ctime = current_time(&ip->i_inode); > + ip->i_inode.i_mtime = inode_set_ctime_current(&ip->i_inode); > gfs2_trans_add_meta(ip->i_gl, dibh); > gfs2_dinode_out(ip, dibh->b_data); > up_write(&ip->i_rw_mutex); > @@ -1993,7 +1992,7 @@ static int trunc_end(struct gfs2_inode *ip) > gfs2_buffer_clear_tail(dibh, sizeof(struct gfs2_dinode)); > gfs2_ordered_del_inode(ip); > } > - ip->i_inode.i_mtime = ip->i_inode.i_ctime = current_time(&ip->i_inode); > + ip->i_inode.i_mtime = inode_set_ctime_current(&ip->i_inode); > ip->i_diskflags &= ~GFS2_DIF_TRUNC_IN_PROG; > > gfs2_trans_add_meta(ip->i_gl, dibh); > @@ -2094,7 +2093,7 @@ static int do_grow(struct inode *inode, u64 size) > goto do_end_trans; > > truncate_setsize(inode, size); > - ip->i_inode.i_mtime = ip->i_inode.i_ctime = current_time(&ip->i_inode); > + ip->i_inode.i_mtime = inode_set_ctime_current(&ip->i_inode); > gfs2_trans_add_meta(ip->i_gl, dibh); > gfs2_dinode_out(ip, dibh->b_data); > brelse(dibh); > diff --git a/fs/gfs2/dir.c b/fs/gfs2/dir.c > index 54a6d17b8c25..1a2afa88f8be 100644 > --- a/fs/gfs2/dir.c > +++ b/fs/gfs2/dir.c > @@ -130,7 +130,7 @@ static int gfs2_dir_write_stuffed(struct gfs2_inode *ip, const char *buf, > memcpy(dibh->b_data + offset + sizeof(struct gfs2_dinode), buf, size); > if (ip->i_inode.i_size < offset + size) > i_size_write(&ip->i_inode, offset + size); > - ip->i_inode.i_mtime = ip->i_inode.i_ctime = current_time(&ip->i_inode); > + ip->i_inode.i_mtime = inode_set_ctime_current(&ip->i_inode); > gfs2_dinode_out(ip, dibh->b_data); > > brelse(dibh); > @@ -227,7 +227,7 @@ static int gfs2_dir_write_data(struct gfs2_inode *ip, const char *buf, > > if (ip->i_inode.i_size < offset + copied) > i_size_write(&ip->i_inode, offset + copied); > - ip->i_inode.i_mtime = ip->i_inode.i_ctime = current_time(&ip->i_inode); > + ip->i_inode.i_mtime = inode_set_ctime_current(&ip->i_inode); > > gfs2_trans_add_meta(ip->i_gl, dibh); > gfs2_dinode_out(ip, dibh->b_data); > @@ -1814,7 +1814,7 @@ int gfs2_dir_add(struct inode *inode, const struct qstr *name, > gfs2_inum_out(nip, dent); > dent->de_type = cpu_to_be16(IF2DT(nip->i_inode.i_mode)); > dent->de_rahead = cpu_to_be16(gfs2_inode_ra_len(nip)); > - tv = current_time(&ip->i_inode); > + tv = inode_set_ctime_current(&ip->i_inode); > if (ip->i_diskflags & GFS2_DIF_EXHASH) { > leaf = (struct gfs2_leaf *)bh->b_data; > be16_add_cpu(&leaf->lf_entries, 1); > @@ -1825,7 +1825,7 @@ int gfs2_dir_add(struct inode *inode, const struct qstr *name, > da->bh = NULL; > brelse(bh); > ip->i_entries++; > - ip->i_inode.i_mtime = ip->i_inode.i_ctime = tv; > + ip->i_inode.i_mtime = tv; > if (S_ISDIR(nip->i_inode.i_mode)) > inc_nlink(&ip->i_inode); > mark_inode_dirty(inode); > @@ -1876,7 +1876,7 @@ int gfs2_dir_del(struct gfs2_inode *dip, const struct dentry *dentry) > const struct qstr *name = &dentry->d_name; > struct gfs2_dirent *dent, *prev = NULL; > struct buffer_head *bh; > - struct timespec64 tv = current_time(&dip->i_inode); > + struct timespec64 tv; > > /* Returns _either_ the entry (if its first in block) or the > previous entry otherwise */ > @@ -1896,6 +1896,7 @@ int gfs2_dir_del(struct gfs2_inode *dip, const struct dentry *dentry) > } > > dirent_del(dip, bh, prev, dent); > + tv = inode_set_ctime_current(&dip->i_inode); > if (dip->i_diskflags & GFS2_DIF_EXHASH) { > struct gfs2_leaf *leaf = (struct gfs2_leaf *)bh->b_data; > u16 entries = be16_to_cpu(leaf->lf_entries); > @@ -1910,7 +1911,7 @@ int gfs2_dir_del(struct gfs2_inode *dip, const struct dentry *dentry) > if (!dip->i_entries) > gfs2_consist_inode(dip); > dip->i_entries--; > - dip->i_inode.i_mtime = dip->i_inode.i_ctime = tv; > + dip->i_inode.i_mtime = tv; > if (d_is_dir(dentry)) > drop_nlink(&dip->i_inode); > mark_inode_dirty(&dip->i_inode); > @@ -1951,7 +1952,7 @@ int gfs2_dir_mvino(struct gfs2_inode *dip, const struct qstr *filename, > dent->de_type = cpu_to_be16(new_type); > brelse(bh); > > - dip->i_inode.i_mtime = dip->i_inode.i_ctime = current_time(&dip->i_inode); > + dip->i_inode.i_mtime = inode_set_ctime_current(&dip->i_inode); > mark_inode_dirty_sync(&dip->i_inode); > return 0; > } > diff --git a/fs/gfs2/file.c b/fs/gfs2/file.c > index 1bf3c4453516..ecbfbc6df621 100644 > --- a/fs/gfs2/file.c > +++ b/fs/gfs2/file.c > @@ -260,7 +260,7 @@ static int do_gfs2_set_flags(struct inode *inode, u32 reqflags, u32 mask) > error = gfs2_meta_inode_buffer(ip, &bh); > if (error) > goto out_trans_end; > - inode->i_ctime = current_time(inode); > + inode_set_ctime_current(inode); > gfs2_trans_add_meta(ip->i_gl, bh); > ip->i_diskflags = new_flags; > gfs2_dinode_out(ip, bh->b_data); > diff --git a/fs/gfs2/glops.c b/fs/gfs2/glops.c > index 54319328b16b..aecdac3cfbe1 100644 > --- a/fs/gfs2/glops.c > +++ b/fs/gfs2/glops.c > @@ -437,8 +437,8 @@ static int gfs2_dinode_in(struct gfs2_inode *ip, const void *buf) > inode->i_atime = atime; > inode->i_mtime.tv_sec = be64_to_cpu(str->di_mtime); > inode->i_mtime.tv_nsec = be32_to_cpu(str->di_mtime_nsec); > - inode->i_ctime.tv_sec = be64_to_cpu(str->di_ctime); > - inode->i_ctime.tv_nsec = be32_to_cpu(str->di_ctime_nsec); > + inode_set_ctime(inode, be64_to_cpu(str->di_ctime), > + be32_to_cpu(str->di_ctime_nsec)); > > ip->i_goal = be64_to_cpu(str->di_goal_meta); > ip->i_generation = be64_to_cpu(str->di_generation); > diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c > index 17c994a0c0d0..2ded6c813f20 100644 > --- a/fs/gfs2/inode.c > +++ b/fs/gfs2/inode.c > @@ -690,7 +690,7 @@ static int gfs2_create_inode(struct inode *dir, struct dentry *dentry, > set_nlink(inode, S_ISDIR(mode) ? 2 : 1); > inode->i_rdev = dev; > inode->i_size = size; > - inode->i_atime = inode->i_mtime = inode->i_ctime = current_time(inode); > + inode->i_atime = inode->i_mtime = inode_set_ctime_current(inode); > munge_mode_uid_gid(dip, inode); > check_and_update_goal(dip); > ip->i_goal = dip->i_goal; > @@ -1029,7 +1029,7 @@ static int gfs2_link(struct dentry *old_dentry, struct inode *dir, > > gfs2_trans_add_meta(ip->i_gl, dibh); > inc_nlink(&ip->i_inode); > - ip->i_inode.i_ctime = current_time(&ip->i_inode); > + inode_set_ctime_current(&ip->i_inode); > ihold(inode); > d_instantiate(dentry, inode); > mark_inode_dirty(inode); > @@ -1114,7 +1114,7 @@ static int gfs2_unlink_inode(struct gfs2_inode *dip, > return error; > > ip->i_entries = 0; > - inode->i_ctime = current_time(inode); > + inode_set_ctime_current(inode); > if (S_ISDIR(inode->i_mode)) > clear_nlink(inode); > else > @@ -1371,7 +1371,7 @@ static int update_moved_ino(struct gfs2_inode *ip, struct gfs2_inode *ndip, > if (dir_rename) > return gfs2_dir_mvino(ip, &gfs2_qdotdot, ndip, DT_DIR); > > - ip->i_inode.i_ctime = current_time(&ip->i_inode); > + inode_set_ctime_current(&ip->i_inode); > mark_inode_dirty_sync(&ip->i_inode); > return 0; > } > diff --git a/fs/gfs2/super.c b/fs/gfs2/super.c > index 9f4d5d6549ee..ec0296b35dfe 100644 > --- a/fs/gfs2/super.c > +++ b/fs/gfs2/super.c > @@ -412,7 +412,7 @@ void gfs2_dinode_out(const struct gfs2_inode *ip, void *buf) > str->di_blocks = cpu_to_be64(gfs2_get_inode_blocks(inode)); > str->di_atime = cpu_to_be64(inode->i_atime.tv_sec); > str->di_mtime = cpu_to_be64(inode->i_mtime.tv_sec); > - str->di_ctime = cpu_to_be64(inode->i_ctime.tv_sec); > + str->di_ctime = cpu_to_be64(inode_get_ctime(inode).tv_sec); > > str->di_goal_meta = cpu_to_be64(ip->i_goal); > str->di_goal_data = cpu_to_be64(ip->i_goal); > @@ -429,7 +429,7 @@ void gfs2_dinode_out(const struct gfs2_inode *ip, void *buf) > str->di_eattr = cpu_to_be64(ip->i_eattr); > str->di_atime_nsec = cpu_to_be32(inode->i_atime.tv_nsec); > str->di_mtime_nsec = cpu_to_be32(inode->i_mtime.tv_nsec); > - str->di_ctime_nsec = cpu_to_be32(inode->i_ctime.tv_nsec); > + str->di_ctime_nsec = cpu_to_be32(inode_get_ctime(inode).tv_nsec); > } > > /** > diff --git a/fs/gfs2/xattr.c b/fs/gfs2/xattr.c > index 93b36d026bb4..4fea70c0fe3d 100644 > --- a/fs/gfs2/xattr.c > +++ b/fs/gfs2/xattr.c > @@ -311,7 +311,7 @@ static int ea_dealloc_unstuffed(struct gfs2_inode *ip, struct buffer_head *bh, > ea->ea_num_ptrs = 0; > } > > - ip->i_inode.i_ctime = current_time(&ip->i_inode); > + inode_set_ctime_current(&ip->i_inode); > __mark_inode_dirty(&ip->i_inode, I_DIRTY_DATASYNC); > > gfs2_trans_end(sdp); > @@ -763,7 +763,7 @@ static int ea_alloc_skeleton(struct gfs2_inode *ip, struct gfs2_ea_request *er, > if (error) > goto out_end_trans; > > - ip->i_inode.i_ctime = current_time(&ip->i_inode); > + inode_set_ctime_current(&ip->i_inode); > __mark_inode_dirty(&ip->i_inode, I_DIRTY_DATASYNC); > > out_end_trans: > @@ -888,7 +888,7 @@ static int ea_set_simple_noalloc(struct gfs2_inode *ip, struct buffer_head *bh, > if (es->es_el) > ea_set_remove_stuffed(ip, es->es_el); > > - ip->i_inode.i_ctime = current_time(&ip->i_inode); > + inode_set_ctime_current(&ip->i_inode); > __mark_inode_dirty(&ip->i_inode, I_DIRTY_DATASYNC); > > gfs2_trans_end(GFS2_SB(&ip->i_inode)); > @@ -1106,7 +1106,7 @@ static int ea_remove_stuffed(struct gfs2_inode *ip, struct gfs2_ea_location *el) > ea->ea_type = GFS2_EATYPE_UNUSED; > } > > - ip->i_inode.i_ctime = current_time(&ip->i_inode); > + inode_set_ctime_current(&ip->i_inode); > __mark_inode_dirty(&ip->i_inode, I_DIRTY_DATASYNC); > > gfs2_trans_end(GFS2_SB(&ip->i_inode)); > -- > 2.41.0 > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR