* [PATCH v2 10/92] ubifs: convert to simple_rename_timestamp [not found] ` <20230705190309.579783-1-jlayton@kernel.org> @ 2023-07-05 19:00 ` Jeff Layton 2023-07-06 10:30 ` Jan Kara 2023-07-06 12:08 ` Zhihao Cheng 2023-07-05 19:01 ` [PATCH v2 54/92] jffs2: convert to ctime accessor functions Jeff Layton 2023-07-05 19:01 ` [PATCH v2 78/92] ubifs: " Jeff Layton 2 siblings, 2 replies; 8+ messages in thread From: Jeff Layton @ 2023-07-05 19:00 UTC (permalink / raw) To: Christian Brauner, Richard Weinberger Cc: Al Viro, Jan Kara, linux-fsdevel, linux-kernel, linux-mtd A rename potentially involves updating 4 different inode timestamps. Convert to the new simple_rename_timestamp helper function. Signed-off-by: Jeff Layton <jlayton@kernel.org> --- fs/ubifs/dir.c | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/fs/ubifs/dir.c b/fs/ubifs/dir.c index ef0499edc248..7ec25310bd8a 100644 --- a/fs/ubifs/dir.c +++ b/fs/ubifs/dir.c @@ -1414,8 +1414,7 @@ static int do_rename(struct inode *old_dir, struct dentry *old_dentry, * Like most other Unix systems, set the @i_ctime for inodes on a * rename. */ - time = current_time(old_dir); - old_inode->i_ctime = time; + simple_rename_timestamp(old_dir, old_dentry, new_dir, new_dentry); /* We must adjust parent link count when renaming directories */ if (is_dir) { @@ -1444,13 +1443,11 @@ static int do_rename(struct inode *old_dir, struct dentry *old_dentry, old_dir->i_size -= old_sz; ubifs_inode(old_dir)->ui_size = old_dir->i_size; - old_dir->i_mtime = old_dir->i_ctime = time; - new_dir->i_mtime = new_dir->i_ctime = time; /* * And finally, if we unlinked a direntry which happened to have the * same name as the moved direntry, we have to decrement @i_nlink of - * the unlinked inode and change its ctime. + * the unlinked inode. */ if (unlink) { /* @@ -1462,7 +1459,6 @@ static int do_rename(struct inode *old_dir, struct dentry *old_dentry, clear_nlink(new_inode); else drop_nlink(new_inode); - new_inode->i_ctime = time; } else { new_dir->i_size += new_sz; ubifs_inode(new_dir)->ui_size = new_dir->i_size; @@ -1557,7 +1553,6 @@ static int ubifs_xrename(struct inode *old_dir, struct dentry *old_dentry, int sync = IS_DIRSYNC(old_dir) || IS_DIRSYNC(new_dir); struct inode *fst_inode = d_inode(old_dentry); struct inode *snd_inode = d_inode(new_dentry); - struct timespec64 time; int err; struct fscrypt_name fst_nm, snd_nm; @@ -1588,11 +1583,7 @@ static int ubifs_xrename(struct inode *old_dir, struct dentry *old_dentry, lock_4_inodes(old_dir, new_dir, NULL, NULL); - time = current_time(old_dir); - fst_inode->i_ctime = time; - snd_inode->i_ctime = time; - old_dir->i_mtime = old_dir->i_ctime = time; - new_dir->i_mtime = new_dir->i_ctime = time; + simple_rename_timestamp(old_dir, old_dentry, new_dir, new_dentry); if (old_dir != new_dir) { if (S_ISDIR(fst_inode->i_mode) && !S_ISDIR(snd_inode->i_mode)) { -- 2.41.0 ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/ ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 10/92] ubifs: convert to simple_rename_timestamp 2023-07-05 19:00 ` [PATCH v2 10/92] ubifs: convert to simple_rename_timestamp Jeff Layton @ 2023-07-06 10:30 ` Jan Kara 2023-07-06 12:08 ` Zhihao Cheng 1 sibling, 0 replies; 8+ messages in thread From: Jan Kara @ 2023-07-06 10:30 UTC (permalink / raw) To: Jeff Layton Cc: Christian Brauner, Richard Weinberger, Al Viro, Jan Kara, linux-fsdevel, linux-kernel, linux-mtd On Wed 05-07-23 15:00:35, Jeff Layton wrote: > A rename potentially involves updating 4 different inode timestamps. > Convert to the new simple_rename_timestamp helper function. > > Signed-off-by: Jeff Layton <jlayton@kernel.org> Looks good. Feel free to add: Reviewed-by: Jan Kara <jack@suse.cz> Honza > --- > fs/ubifs/dir.c | 15 +++------------ > 1 file changed, 3 insertions(+), 12 deletions(-) > > diff --git a/fs/ubifs/dir.c b/fs/ubifs/dir.c > index ef0499edc248..7ec25310bd8a 100644 > --- a/fs/ubifs/dir.c > +++ b/fs/ubifs/dir.c > @@ -1414,8 +1414,7 @@ static int do_rename(struct inode *old_dir, struct dentry *old_dentry, > * Like most other Unix systems, set the @i_ctime for inodes on a > * rename. > */ > - time = current_time(old_dir); > - old_inode->i_ctime = time; > + simple_rename_timestamp(old_dir, old_dentry, new_dir, new_dentry); > > /* We must adjust parent link count when renaming directories */ > if (is_dir) { > @@ -1444,13 +1443,11 @@ static int do_rename(struct inode *old_dir, struct dentry *old_dentry, > > old_dir->i_size -= old_sz; > ubifs_inode(old_dir)->ui_size = old_dir->i_size; > - old_dir->i_mtime = old_dir->i_ctime = time; > - new_dir->i_mtime = new_dir->i_ctime = time; > > /* > * And finally, if we unlinked a direntry which happened to have the > * same name as the moved direntry, we have to decrement @i_nlink of > - * the unlinked inode and change its ctime. > + * the unlinked inode. > */ > if (unlink) { > /* > @@ -1462,7 +1459,6 @@ static int do_rename(struct inode *old_dir, struct dentry *old_dentry, > clear_nlink(new_inode); > else > drop_nlink(new_inode); > - new_inode->i_ctime = time; > } else { > new_dir->i_size += new_sz; > ubifs_inode(new_dir)->ui_size = new_dir->i_size; > @@ -1557,7 +1553,6 @@ static int ubifs_xrename(struct inode *old_dir, struct dentry *old_dentry, > int sync = IS_DIRSYNC(old_dir) || IS_DIRSYNC(new_dir); > struct inode *fst_inode = d_inode(old_dentry); > struct inode *snd_inode = d_inode(new_dentry); > - struct timespec64 time; > int err; > struct fscrypt_name fst_nm, snd_nm; > > @@ -1588,11 +1583,7 @@ static int ubifs_xrename(struct inode *old_dir, struct dentry *old_dentry, > > lock_4_inodes(old_dir, new_dir, NULL, NULL); > > - time = current_time(old_dir); > - fst_inode->i_ctime = time; > - snd_inode->i_ctime = time; > - old_dir->i_mtime = old_dir->i_ctime = time; > - new_dir->i_mtime = new_dir->i_ctime = time; > + simple_rename_timestamp(old_dir, old_dentry, new_dir, new_dentry); > > if (old_dir != new_dir) { > if (S_ISDIR(fst_inode->i_mode) && !S_ISDIR(snd_inode->i_mode)) { > -- > 2.41.0 > -- Jan Kara <jack@suse.com> SUSE Labs, CR ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 10/92] ubifs: convert to simple_rename_timestamp 2023-07-05 19:00 ` [PATCH v2 10/92] ubifs: convert to simple_rename_timestamp Jeff Layton 2023-07-06 10:30 ` Jan Kara @ 2023-07-06 12:08 ` Zhihao Cheng 1 sibling, 0 replies; 8+ messages in thread From: Zhihao Cheng @ 2023-07-06 12:08 UTC (permalink / raw) To: Jeff Layton, Christian Brauner, Richard Weinberger Cc: Al Viro, Jan Kara, linux-fsdevel, linux-kernel, linux-mtd 在 2023/7/6 3:00, Jeff Layton 写道: > A rename potentially involves updating 4 different inode timestamps. > Convert to the new simple_rename_timestamp helper function. > > Signed-off-by: Jeff Layton <jlayton@kernel.org> > --- > fs/ubifs/dir.c | 15 +++------------ > 1 file changed, 3 insertions(+), 12 deletions(-) > Reviewed-by: Zhihao Cheng <chengzhihao1@huawei.com> > diff --git a/fs/ubifs/dir.c b/fs/ubifs/dir.c > index ef0499edc248..7ec25310bd8a 100644 > --- a/fs/ubifs/dir.c > +++ b/fs/ubifs/dir.c > @@ -1414,8 +1414,7 @@ static int do_rename(struct inode *old_dir, struct dentry *old_dentry, > * Like most other Unix systems, set the @i_ctime for inodes on a > * rename. > */ > - time = current_time(old_dir); > - old_inode->i_ctime = time; > + simple_rename_timestamp(old_dir, old_dentry, new_dir, new_dentry); > > /* We must adjust parent link count when renaming directories */ > if (is_dir) { > @@ -1444,13 +1443,11 @@ static int do_rename(struct inode *old_dir, struct dentry *old_dentry, > > old_dir->i_size -= old_sz; > ubifs_inode(old_dir)->ui_size = old_dir->i_size; > - old_dir->i_mtime = old_dir->i_ctime = time; > - new_dir->i_mtime = new_dir->i_ctime = time; > > /* > * And finally, if we unlinked a direntry which happened to have the > * same name as the moved direntry, we have to decrement @i_nlink of > - * the unlinked inode and change its ctime. > + * the unlinked inode. > */ > if (unlink) { > /* > @@ -1462,7 +1459,6 @@ static int do_rename(struct inode *old_dir, struct dentry *old_dentry, > clear_nlink(new_inode); > else > drop_nlink(new_inode); > - new_inode->i_ctime = time; > } else { > new_dir->i_size += new_sz; > ubifs_inode(new_dir)->ui_size = new_dir->i_size; > @@ -1557,7 +1553,6 @@ static int ubifs_xrename(struct inode *old_dir, struct dentry *old_dentry, > int sync = IS_DIRSYNC(old_dir) || IS_DIRSYNC(new_dir); > struct inode *fst_inode = d_inode(old_dentry); > struct inode *snd_inode = d_inode(new_dentry); > - struct timespec64 time; > int err; > struct fscrypt_name fst_nm, snd_nm; > > @@ -1588,11 +1583,7 @@ static int ubifs_xrename(struct inode *old_dir, struct dentry *old_dentry, > > lock_4_inodes(old_dir, new_dir, NULL, NULL); > > - time = current_time(old_dir); > - fst_inode->i_ctime = time; > - snd_inode->i_ctime = time; > - old_dir->i_mtime = old_dir->i_ctime = time; > - new_dir->i_mtime = new_dir->i_ctime = time; > + simple_rename_timestamp(old_dir, old_dentry, new_dir, new_dentry); > > if (old_dir != new_dir) { > if (S_ISDIR(fst_inode->i_mode) && !S_ISDIR(snd_inode->i_mode)) { > ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/ ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 54/92] jffs2: convert to ctime accessor functions [not found] ` <20230705190309.579783-1-jlayton@kernel.org> 2023-07-05 19:00 ` [PATCH v2 10/92] ubifs: convert to simple_rename_timestamp Jeff Layton @ 2023-07-05 19:01 ` Jeff Layton 2023-07-06 13:25 ` Jan Kara 2023-07-05 19:01 ` [PATCH v2 78/92] ubifs: " Jeff Layton 2 siblings, 1 reply; 8+ messages in thread From: Jeff Layton @ 2023-07-05 19:01 UTC (permalink / raw) To: Christian Brauner, David Woodhouse, Richard Weinberger Cc: Al Viro, Jan Kara, linux-fsdevel, linux-kernel, linux-mtd 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> --- fs/jffs2/dir.c | 24 +++++++++++++++--------- fs/jffs2/file.c | 3 ++- fs/jffs2/fs.c | 10 +++++----- fs/jffs2/os-linux.h | 2 +- 4 files changed, 23 insertions(+), 16 deletions(-) diff --git a/fs/jffs2/dir.c b/fs/jffs2/dir.c index 5075a0a6d594..091ab0eaabbe 100644 --- a/fs/jffs2/dir.c +++ b/fs/jffs2/dir.c @@ -204,7 +204,8 @@ static int jffs2_create(struct mnt_idmap *idmap, struct inode *dir_i, if (ret) goto fail; - dir_i->i_mtime = dir_i->i_ctime = ITIME(je32_to_cpu(ri->ctime)); + dir_i->i_mtime = inode_set_ctime_to_ts(dir_i, + ITIME(je32_to_cpu(ri->ctime))); jffs2_free_raw_inode(ri); @@ -237,7 +238,7 @@ static int jffs2_unlink(struct inode *dir_i, struct dentry *dentry) if (dead_f->inocache) set_nlink(d_inode(dentry), dead_f->inocache->pino_nlink); if (!ret) - dir_i->i_mtime = dir_i->i_ctime = ITIME(now); + dir_i->i_mtime = inode_set_ctime_to_ts(dir_i, ITIME(now)); return ret; } /***********************************************************************/ @@ -271,7 +272,7 @@ static int jffs2_link (struct dentry *old_dentry, struct inode *dir_i, struct de set_nlink(d_inode(old_dentry), ++f->inocache->pino_nlink); mutex_unlock(&f->sem); d_instantiate(dentry, d_inode(old_dentry)); - dir_i->i_mtime = dir_i->i_ctime = ITIME(now); + dir_i->i_mtime = inode_set_ctime_to_ts(dir_i, ITIME(now)); ihold(d_inode(old_dentry)); } return ret; @@ -422,7 +423,8 @@ static int jffs2_symlink (struct mnt_idmap *idmap, struct inode *dir_i, goto fail; } - dir_i->i_mtime = dir_i->i_ctime = ITIME(je32_to_cpu(rd->mctime)); + dir_i->i_mtime = inode_set_ctime_to_ts(dir_i, + ITIME(je32_to_cpu(rd->mctime))); jffs2_free_raw_dirent(rd); @@ -566,7 +568,8 @@ static int jffs2_mkdir (struct mnt_idmap *idmap, struct inode *dir_i, goto fail; } - dir_i->i_mtime = dir_i->i_ctime = ITIME(je32_to_cpu(rd->mctime)); + dir_i->i_mtime = inode_set_ctime_to_ts(dir_i, + ITIME(je32_to_cpu(rd->mctime))); inc_nlink(dir_i); jffs2_free_raw_dirent(rd); @@ -607,7 +610,7 @@ static int jffs2_rmdir (struct inode *dir_i, struct dentry *dentry) ret = jffs2_do_unlink(c, dir_f, dentry->d_name.name, dentry->d_name.len, f, now); if (!ret) { - dir_i->i_mtime = dir_i->i_ctime = ITIME(now); + dir_i->i_mtime = inode_set_ctime_to_ts(dir_i, ITIME(now)); clear_nlink(d_inode(dentry)); drop_nlink(dir_i); } @@ -743,7 +746,8 @@ static int jffs2_mknod (struct mnt_idmap *idmap, struct inode *dir_i, goto fail; } - dir_i->i_mtime = dir_i->i_ctime = ITIME(je32_to_cpu(rd->mctime)); + dir_i->i_mtime = inode_set_ctime_to_ts(dir_i, + ITIME(je32_to_cpu(rd->mctime))); jffs2_free_raw_dirent(rd); @@ -864,14 +868,16 @@ static int jffs2_rename (struct mnt_idmap *idmap, * caller won't do it on its own since we are returning an error. */ d_invalidate(new_dentry); - new_dir_i->i_mtime = new_dir_i->i_ctime = ITIME(now); + new_dir_i->i_mtime = inode_set_ctime_to_ts(new_dir_i, + ITIME(now)); return ret; } if (d_is_dir(old_dentry)) drop_nlink(old_dir_i); - new_dir_i->i_mtime = new_dir_i->i_ctime = old_dir_i->i_mtime = old_dir_i->i_ctime = ITIME(now); + old_dir_i->i_mtime = inode_set_ctime_to_ts(old_dir_i, ITIME(now)); + new_dir_i->i_mtime = inode_set_ctime_to_ts(new_dir_i, ITIME(now)); return 0; } diff --git a/fs/jffs2/file.c b/fs/jffs2/file.c index 2345ca3f09ee..11c66793960e 100644 --- a/fs/jffs2/file.c +++ b/fs/jffs2/file.c @@ -317,7 +317,8 @@ static int jffs2_write_end(struct file *filp, struct address_space *mapping, inode->i_size = pos + writtenlen; inode->i_blocks = (inode->i_size + 511) >> 9; - inode->i_ctime = inode->i_mtime = ITIME(je32_to_cpu(ri->ctime)); + inode->i_mtime = inode_set_ctime_to_ts(inode, + ITIME(je32_to_cpu(ri->ctime))); } } diff --git a/fs/jffs2/fs.c b/fs/jffs2/fs.c index 038516bee1ab..0403efab4089 100644 --- a/fs/jffs2/fs.c +++ b/fs/jffs2/fs.c @@ -115,7 +115,7 @@ int jffs2_do_setattr (struct inode *inode, struct iattr *iattr) ri->isize = cpu_to_je32((ivalid & ATTR_SIZE)?iattr->ia_size:inode->i_size); ri->atime = cpu_to_je32(I_SEC((ivalid & ATTR_ATIME)?iattr->ia_atime:inode->i_atime)); ri->mtime = cpu_to_je32(I_SEC((ivalid & ATTR_MTIME)?iattr->ia_mtime:inode->i_mtime)); - ri->ctime = cpu_to_je32(I_SEC((ivalid & ATTR_CTIME)?iattr->ia_ctime:inode->i_ctime)); + ri->ctime = cpu_to_je32(I_SEC((ivalid & ATTR_CTIME)?iattr->ia_ctime:inode_get_ctime(inode))); ri->offset = cpu_to_je32(0); ri->csize = ri->dsize = cpu_to_je32(mdatalen); @@ -148,7 +148,7 @@ int jffs2_do_setattr (struct inode *inode, struct iattr *iattr) } /* It worked. Update the inode */ inode->i_atime = ITIME(je32_to_cpu(ri->atime)); - inode->i_ctime = ITIME(je32_to_cpu(ri->ctime)); + inode_set_ctime_to_ts(inode, ITIME(je32_to_cpu(ri->ctime))); inode->i_mtime = ITIME(je32_to_cpu(ri->mtime)); inode->i_mode = jemode_to_cpu(ri->mode); i_uid_write(inode, je16_to_cpu(ri->uid)); @@ -284,7 +284,7 @@ struct inode *jffs2_iget(struct super_block *sb, unsigned long ino) inode->i_size = je32_to_cpu(latest_node.isize); inode->i_atime = ITIME(je32_to_cpu(latest_node.atime)); inode->i_mtime = ITIME(je32_to_cpu(latest_node.mtime)); - inode->i_ctime = ITIME(je32_to_cpu(latest_node.ctime)); + inode_set_ctime_to_ts(inode, ITIME(je32_to_cpu(latest_node.ctime))); set_nlink(inode, f->inocache->pino_nlink); @@ -388,7 +388,7 @@ void jffs2_dirty_inode(struct inode *inode, int flags) iattr.ia_gid = inode->i_gid; iattr.ia_atime = inode->i_atime; iattr.ia_mtime = inode->i_mtime; - iattr.ia_ctime = inode->i_ctime; + iattr.ia_ctime = inode_get_ctime(inode); jffs2_do_setattr(inode, &iattr); } @@ -475,7 +475,7 @@ struct inode *jffs2_new_inode (struct inode *dir_i, umode_t mode, struct jffs2_r inode->i_mode = jemode_to_cpu(ri->mode); i_gid_write(inode, je16_to_cpu(ri->gid)); i_uid_write(inode, je16_to_cpu(ri->uid)); - inode->i_atime = inode->i_ctime = inode->i_mtime = current_time(inode); + inode->i_atime = inode->i_mtime = inode_set_ctime_current(inode); ri->atime = ri->mtime = ri->ctime = cpu_to_je32(I_SEC(inode->i_mtime)); inode->i_blocks = 0; diff --git a/fs/jffs2/os-linux.h b/fs/jffs2/os-linux.h index 8da19766c101..50727a1ff931 100644 --- a/fs/jffs2/os-linux.h +++ b/fs/jffs2/os-linux.h @@ -35,7 +35,7 @@ struct kvec; #define ITIME(sec) ((struct timespec64){sec, 0}) #define JFFS2_NOW() JFFS2_CLAMP_TIME(ktime_get_real_seconds()) #define I_SEC(tv) JFFS2_CLAMP_TIME((tv).tv_sec) -#define JFFS2_F_I_CTIME(f) I_SEC(OFNI_EDONI_2SFFJ(f)->i_ctime) +#define JFFS2_F_I_CTIME(f) I_SEC(inode_get_ctime(OFNI_EDONI_2SFFJ(f))) #define JFFS2_F_I_MTIME(f) I_SEC(OFNI_EDONI_2SFFJ(f)->i_mtime) #define JFFS2_F_I_ATIME(f) I_SEC(OFNI_EDONI_2SFFJ(f)->i_atime) #define sleep_on_spinunlock(wq, s) \ -- 2.41.0 ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/ ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 54/92] jffs2: convert to ctime accessor functions 2023-07-05 19:01 ` [PATCH v2 54/92] jffs2: convert to ctime accessor functions Jeff Layton @ 2023-07-06 13:25 ` Jan Kara 0 siblings, 0 replies; 8+ messages in thread From: Jan Kara @ 2023-07-06 13:25 UTC (permalink / raw) To: Jeff Layton Cc: Christian Brauner, David Woodhouse, Richard Weinberger, Al Viro, Jan Kara, linux-fsdevel, linux-kernel, linux-mtd On Wed 05-07-23 15:01:19, 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@kernel.org> Looks good. Feel free to add: Reviewed-by: Jan Kara <jack@suse.cz> Honza > --- > fs/jffs2/dir.c | 24 +++++++++++++++--------- > fs/jffs2/file.c | 3 ++- > fs/jffs2/fs.c | 10 +++++----- > fs/jffs2/os-linux.h | 2 +- > 4 files changed, 23 insertions(+), 16 deletions(-) > > diff --git a/fs/jffs2/dir.c b/fs/jffs2/dir.c > index 5075a0a6d594..091ab0eaabbe 100644 > --- a/fs/jffs2/dir.c > +++ b/fs/jffs2/dir.c > @@ -204,7 +204,8 @@ static int jffs2_create(struct mnt_idmap *idmap, struct inode *dir_i, > if (ret) > goto fail; > > - dir_i->i_mtime = dir_i->i_ctime = ITIME(je32_to_cpu(ri->ctime)); > + dir_i->i_mtime = inode_set_ctime_to_ts(dir_i, > + ITIME(je32_to_cpu(ri->ctime))); > > jffs2_free_raw_inode(ri); > > @@ -237,7 +238,7 @@ static int jffs2_unlink(struct inode *dir_i, struct dentry *dentry) > if (dead_f->inocache) > set_nlink(d_inode(dentry), dead_f->inocache->pino_nlink); > if (!ret) > - dir_i->i_mtime = dir_i->i_ctime = ITIME(now); > + dir_i->i_mtime = inode_set_ctime_to_ts(dir_i, ITIME(now)); > return ret; > } > /***********************************************************************/ > @@ -271,7 +272,7 @@ static int jffs2_link (struct dentry *old_dentry, struct inode *dir_i, struct de > set_nlink(d_inode(old_dentry), ++f->inocache->pino_nlink); > mutex_unlock(&f->sem); > d_instantiate(dentry, d_inode(old_dentry)); > - dir_i->i_mtime = dir_i->i_ctime = ITIME(now); > + dir_i->i_mtime = inode_set_ctime_to_ts(dir_i, ITIME(now)); > ihold(d_inode(old_dentry)); > } > return ret; > @@ -422,7 +423,8 @@ static int jffs2_symlink (struct mnt_idmap *idmap, struct inode *dir_i, > goto fail; > } > > - dir_i->i_mtime = dir_i->i_ctime = ITIME(je32_to_cpu(rd->mctime)); > + dir_i->i_mtime = inode_set_ctime_to_ts(dir_i, > + ITIME(je32_to_cpu(rd->mctime))); > > jffs2_free_raw_dirent(rd); > > @@ -566,7 +568,8 @@ static int jffs2_mkdir (struct mnt_idmap *idmap, struct inode *dir_i, > goto fail; > } > > - dir_i->i_mtime = dir_i->i_ctime = ITIME(je32_to_cpu(rd->mctime)); > + dir_i->i_mtime = inode_set_ctime_to_ts(dir_i, > + ITIME(je32_to_cpu(rd->mctime))); > inc_nlink(dir_i); > > jffs2_free_raw_dirent(rd); > @@ -607,7 +610,7 @@ static int jffs2_rmdir (struct inode *dir_i, struct dentry *dentry) > ret = jffs2_do_unlink(c, dir_f, dentry->d_name.name, > dentry->d_name.len, f, now); > if (!ret) { > - dir_i->i_mtime = dir_i->i_ctime = ITIME(now); > + dir_i->i_mtime = inode_set_ctime_to_ts(dir_i, ITIME(now)); > clear_nlink(d_inode(dentry)); > drop_nlink(dir_i); > } > @@ -743,7 +746,8 @@ static int jffs2_mknod (struct mnt_idmap *idmap, struct inode *dir_i, > goto fail; > } > > - dir_i->i_mtime = dir_i->i_ctime = ITIME(je32_to_cpu(rd->mctime)); > + dir_i->i_mtime = inode_set_ctime_to_ts(dir_i, > + ITIME(je32_to_cpu(rd->mctime))); > > jffs2_free_raw_dirent(rd); > > @@ -864,14 +868,16 @@ static int jffs2_rename (struct mnt_idmap *idmap, > * caller won't do it on its own since we are returning an error. > */ > d_invalidate(new_dentry); > - new_dir_i->i_mtime = new_dir_i->i_ctime = ITIME(now); > + new_dir_i->i_mtime = inode_set_ctime_to_ts(new_dir_i, > + ITIME(now)); > return ret; > } > > if (d_is_dir(old_dentry)) > drop_nlink(old_dir_i); > > - new_dir_i->i_mtime = new_dir_i->i_ctime = old_dir_i->i_mtime = old_dir_i->i_ctime = ITIME(now); > + old_dir_i->i_mtime = inode_set_ctime_to_ts(old_dir_i, ITIME(now)); > + new_dir_i->i_mtime = inode_set_ctime_to_ts(new_dir_i, ITIME(now)); > > return 0; > } > diff --git a/fs/jffs2/file.c b/fs/jffs2/file.c > index 2345ca3f09ee..11c66793960e 100644 > --- a/fs/jffs2/file.c > +++ b/fs/jffs2/file.c > @@ -317,7 +317,8 @@ static int jffs2_write_end(struct file *filp, struct address_space *mapping, > inode->i_size = pos + writtenlen; > inode->i_blocks = (inode->i_size + 511) >> 9; > > - inode->i_ctime = inode->i_mtime = ITIME(je32_to_cpu(ri->ctime)); > + inode->i_mtime = inode_set_ctime_to_ts(inode, > + ITIME(je32_to_cpu(ri->ctime))); > } > } > > diff --git a/fs/jffs2/fs.c b/fs/jffs2/fs.c > index 038516bee1ab..0403efab4089 100644 > --- a/fs/jffs2/fs.c > +++ b/fs/jffs2/fs.c > @@ -115,7 +115,7 @@ int jffs2_do_setattr (struct inode *inode, struct iattr *iattr) > ri->isize = cpu_to_je32((ivalid & ATTR_SIZE)?iattr->ia_size:inode->i_size); > ri->atime = cpu_to_je32(I_SEC((ivalid & ATTR_ATIME)?iattr->ia_atime:inode->i_atime)); > ri->mtime = cpu_to_je32(I_SEC((ivalid & ATTR_MTIME)?iattr->ia_mtime:inode->i_mtime)); > - ri->ctime = cpu_to_je32(I_SEC((ivalid & ATTR_CTIME)?iattr->ia_ctime:inode->i_ctime)); > + ri->ctime = cpu_to_je32(I_SEC((ivalid & ATTR_CTIME)?iattr->ia_ctime:inode_get_ctime(inode))); > > ri->offset = cpu_to_je32(0); > ri->csize = ri->dsize = cpu_to_je32(mdatalen); > @@ -148,7 +148,7 @@ int jffs2_do_setattr (struct inode *inode, struct iattr *iattr) > } > /* It worked. Update the inode */ > inode->i_atime = ITIME(je32_to_cpu(ri->atime)); > - inode->i_ctime = ITIME(je32_to_cpu(ri->ctime)); > + inode_set_ctime_to_ts(inode, ITIME(je32_to_cpu(ri->ctime))); > inode->i_mtime = ITIME(je32_to_cpu(ri->mtime)); > inode->i_mode = jemode_to_cpu(ri->mode); > i_uid_write(inode, je16_to_cpu(ri->uid)); > @@ -284,7 +284,7 @@ struct inode *jffs2_iget(struct super_block *sb, unsigned long ino) > inode->i_size = je32_to_cpu(latest_node.isize); > inode->i_atime = ITIME(je32_to_cpu(latest_node.atime)); > inode->i_mtime = ITIME(je32_to_cpu(latest_node.mtime)); > - inode->i_ctime = ITIME(je32_to_cpu(latest_node.ctime)); > + inode_set_ctime_to_ts(inode, ITIME(je32_to_cpu(latest_node.ctime))); > > set_nlink(inode, f->inocache->pino_nlink); > > @@ -388,7 +388,7 @@ void jffs2_dirty_inode(struct inode *inode, int flags) > iattr.ia_gid = inode->i_gid; > iattr.ia_atime = inode->i_atime; > iattr.ia_mtime = inode->i_mtime; > - iattr.ia_ctime = inode->i_ctime; > + iattr.ia_ctime = inode_get_ctime(inode); > > jffs2_do_setattr(inode, &iattr); > } > @@ -475,7 +475,7 @@ struct inode *jffs2_new_inode (struct inode *dir_i, umode_t mode, struct jffs2_r > inode->i_mode = jemode_to_cpu(ri->mode); > i_gid_write(inode, je16_to_cpu(ri->gid)); > i_uid_write(inode, je16_to_cpu(ri->uid)); > - inode->i_atime = inode->i_ctime = inode->i_mtime = current_time(inode); > + inode->i_atime = inode->i_mtime = inode_set_ctime_current(inode); > ri->atime = ri->mtime = ri->ctime = cpu_to_je32(I_SEC(inode->i_mtime)); > > inode->i_blocks = 0; > diff --git a/fs/jffs2/os-linux.h b/fs/jffs2/os-linux.h > index 8da19766c101..50727a1ff931 100644 > --- a/fs/jffs2/os-linux.h > +++ b/fs/jffs2/os-linux.h > @@ -35,7 +35,7 @@ struct kvec; > #define ITIME(sec) ((struct timespec64){sec, 0}) > #define JFFS2_NOW() JFFS2_CLAMP_TIME(ktime_get_real_seconds()) > #define I_SEC(tv) JFFS2_CLAMP_TIME((tv).tv_sec) > -#define JFFS2_F_I_CTIME(f) I_SEC(OFNI_EDONI_2SFFJ(f)->i_ctime) > +#define JFFS2_F_I_CTIME(f) I_SEC(inode_get_ctime(OFNI_EDONI_2SFFJ(f))) > #define JFFS2_F_I_MTIME(f) I_SEC(OFNI_EDONI_2SFFJ(f)->i_mtime) > #define JFFS2_F_I_ATIME(f) I_SEC(OFNI_EDONI_2SFFJ(f)->i_atime) > #define sleep_on_spinunlock(wq, s) \ > -- > 2.41.0 > -- Jan Kara <jack@suse.com> SUSE Labs, CR ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/ ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 78/92] ubifs: convert to ctime accessor functions [not found] ` <20230705190309.579783-1-jlayton@kernel.org> 2023-07-05 19:00 ` [PATCH v2 10/92] ubifs: convert to simple_rename_timestamp Jeff Layton 2023-07-05 19:01 ` [PATCH v2 54/92] jffs2: convert to ctime accessor functions Jeff Layton @ 2023-07-05 19:01 ` Jeff Layton 2023-07-06 12:07 ` Zhihao Cheng 2 siblings, 1 reply; 8+ messages in thread From: Jeff Layton @ 2023-07-05 19:01 UTC (permalink / raw) To: Christian Brauner, Richard Weinberger Cc: Al Viro, Jan Kara, linux-fsdevel, linux-kernel, linux-mtd 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> --- fs/ubifs/debug.c | 4 ++-- fs/ubifs/dir.c | 24 +++++++++++------------- fs/ubifs/file.c | 16 +++++++++------- fs/ubifs/ioctl.c | 2 +- fs/ubifs/journal.c | 4 ++-- fs/ubifs/super.c | 4 ++-- fs/ubifs/xattr.c | 6 +++--- 7 files changed, 30 insertions(+), 30 deletions(-) diff --git a/fs/ubifs/debug.c b/fs/ubifs/debug.c index 9c9d3f0e36a4..eef9e527d9ff 100644 --- a/fs/ubifs/debug.c +++ b/fs/ubifs/debug.c @@ -243,8 +243,8 @@ void ubifs_dump_inode(struct ubifs_info *c, const struct inode *inode) (unsigned int)inode->i_mtime.tv_sec, (unsigned int)inode->i_mtime.tv_nsec); pr_err("\tctime %u.%u\n", - (unsigned int)inode->i_ctime.tv_sec, - (unsigned int)inode->i_ctime.tv_nsec); + (unsigned int) inode_get_ctime(inode).tv_sec, + (unsigned int) inode_get_ctime(inode).tv_nsec); pr_err("\tcreat_sqnum %llu\n", ui->creat_sqnum); pr_err("\txattr_size %u\n", ui->xattr_size); pr_err("\txattr_cnt %u\n", ui->xattr_cnt); diff --git a/fs/ubifs/dir.c b/fs/ubifs/dir.c index 7ec25310bd8a..3a1ba8ba308a 100644 --- a/fs/ubifs/dir.c +++ b/fs/ubifs/dir.c @@ -96,8 +96,7 @@ struct inode *ubifs_new_inode(struct ubifs_info *c, struct inode *dir, inode->i_flags |= S_NOCMTIME; inode_init_owner(&nop_mnt_idmap, inode, dir, mode); - inode->i_mtime = inode->i_atime = inode->i_ctime = - current_time(inode); + inode->i_mtime = inode->i_atime = inode_set_ctime_current(inode); inode->i_mapping->nrpages = 0; if (!is_xattr) { @@ -325,7 +324,7 @@ static int ubifs_create(struct mnt_idmap *idmap, struct inode *dir, mutex_lock(&dir_ui->ui_mutex); dir->i_size += sz_change; dir_ui->ui_size = dir->i_size; - dir->i_mtime = dir->i_ctime = inode->i_ctime; + dir->i_mtime = inode_set_ctime_to_ts(dir, inode_get_ctime(inode)); err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); if (err) goto out_cancel; @@ -765,10 +764,10 @@ static int ubifs_link(struct dentry *old_dentry, struct inode *dir, inc_nlink(inode); ihold(inode); - inode->i_ctime = current_time(inode); + inode_set_ctime_current(inode); dir->i_size += sz_change; dir_ui->ui_size = dir->i_size; - dir->i_mtime = dir->i_ctime = inode->i_ctime; + dir->i_mtime = inode_set_ctime_to_ts(dir, inode_get_ctime(inode)); err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); if (err) goto out_cancel; @@ -838,11 +837,11 @@ static int ubifs_unlink(struct inode *dir, struct dentry *dentry) } lock_2_inodes(dir, inode); - inode->i_ctime = current_time(dir); + inode_set_ctime_current(inode); drop_nlink(inode); dir->i_size -= sz_change; dir_ui->ui_size = dir->i_size; - dir->i_mtime = dir->i_ctime = inode->i_ctime; + dir->i_mtime = inode_set_ctime_to_ts(dir, inode_get_ctime(inode)); err = ubifs_jnl_update(c, dir, &nm, inode, 1, 0); if (err) goto out_cancel; @@ -940,12 +939,12 @@ static int ubifs_rmdir(struct inode *dir, struct dentry *dentry) } lock_2_inodes(dir, inode); - inode->i_ctime = current_time(dir); + inode_set_ctime_current(inode); clear_nlink(inode); drop_nlink(dir); dir->i_size -= sz_change; dir_ui->ui_size = dir->i_size; - dir->i_mtime = dir->i_ctime = inode->i_ctime; + dir->i_mtime = inode_set_ctime_to_ts(dir, inode_get_ctime(inode)); err = ubifs_jnl_update(c, dir, &nm, inode, 1, 0); if (err) goto out_cancel; @@ -1019,7 +1018,7 @@ static int ubifs_mkdir(struct mnt_idmap *idmap, struct inode *dir, inc_nlink(dir); dir->i_size += sz_change; dir_ui->ui_size = dir->i_size; - dir->i_mtime = dir->i_ctime = inode->i_ctime; + dir->i_mtime = inode_set_ctime_to_ts(dir, inode_get_ctime(inode)); err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); if (err) { ubifs_err(c, "cannot create directory, error %d", err); @@ -1110,7 +1109,7 @@ static int ubifs_mknod(struct mnt_idmap *idmap, struct inode *dir, mutex_lock(&dir_ui->ui_mutex); dir->i_size += sz_change; dir_ui->ui_size = dir->i_size; - dir->i_mtime = dir->i_ctime = inode->i_ctime; + dir->i_mtime = inode_set_ctime_to_ts(dir, inode_get_ctime(inode)); err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); if (err) goto out_cancel; @@ -1210,7 +1209,7 @@ static int ubifs_symlink(struct mnt_idmap *idmap, struct inode *dir, mutex_lock(&dir_ui->ui_mutex); dir->i_size += sz_change; dir_ui->ui_size = dir->i_size; - dir->i_mtime = dir->i_ctime = inode->i_ctime; + dir->i_mtime = inode_set_ctime_to_ts(dir, inode_get_ctime(inode)); err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); if (err) goto out_cancel; @@ -1298,7 +1297,6 @@ static int do_rename(struct inode *old_dir, struct dentry *old_dentry, struct ubifs_budget_req ino_req = { .dirtied_ino = 1, .dirtied_ino_d = ALIGN(old_inode_ui->data_len, 8) }; struct ubifs_budget_req wht_req; - struct timespec64 time; unsigned int saved_nlink; struct fscrypt_name old_nm, new_nm; diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c index 6738fe43040b..436b27d7c58f 100644 --- a/fs/ubifs/file.c +++ b/fs/ubifs/file.c @@ -1092,7 +1092,7 @@ static void do_attr_changes(struct inode *inode, const struct iattr *attr) if (attr->ia_valid & ATTR_MTIME) inode->i_mtime = attr->ia_mtime; if (attr->ia_valid & ATTR_CTIME) - inode->i_ctime = attr->ia_ctime; + inode_set_ctime_to_ts(inode, attr->ia_ctime); if (attr->ia_valid & ATTR_MODE) { umode_t mode = attr->ia_mode; @@ -1192,7 +1192,7 @@ static int do_truncation(struct ubifs_info *c, struct inode *inode, mutex_lock(&ui->ui_mutex); ui->ui_size = inode->i_size; /* Truncation changes inode [mc]time */ - inode->i_mtime = inode->i_ctime = current_time(inode); + inode->i_mtime = inode_set_ctime_current(inode); /* Other attributes may be changed at the same time as well */ do_attr_changes(inode, attr); err = ubifs_jnl_truncate(c, inode, old_size, new_size); @@ -1239,7 +1239,7 @@ static int do_setattr(struct ubifs_info *c, struct inode *inode, mutex_lock(&ui->ui_mutex); if (attr->ia_valid & ATTR_SIZE) { /* Truncation changes inode [mc]time */ - inode->i_mtime = inode->i_ctime = current_time(inode); + inode->i_mtime = inode_set_ctime_current(inode); /* 'truncate_setsize()' changed @i_size, update @ui_size */ ui->ui_size = inode->i_size; } @@ -1364,8 +1364,10 @@ int ubifs_fsync(struct file *file, loff_t start, loff_t end, int datasync) static inline int mctime_update_needed(const struct inode *inode, const struct timespec64 *now) { + struct timespec64 ctime = inode_get_ctime(inode); + if (!timespec64_equal(&inode->i_mtime, now) || - !timespec64_equal(&inode->i_ctime, now)) + !timespec64_equal(&ctime, now)) return 1; return 0; } @@ -1396,7 +1398,7 @@ int ubifs_update_time(struct inode *inode, struct timespec64 *time, if (flags & S_ATIME) inode->i_atime = *time; if (flags & S_CTIME) - inode->i_ctime = *time; + inode_set_ctime_to_ts(inode, *time); if (flags & S_MTIME) inode->i_mtime = *time; @@ -1432,7 +1434,7 @@ static int update_mctime(struct inode *inode) return err; mutex_lock(&ui->ui_mutex); - inode->i_mtime = inode->i_ctime = current_time(inode); + inode->i_mtime = inode_set_ctime_current(inode); release = ui->dirty; mark_inode_dirty_sync(inode); mutex_unlock(&ui->ui_mutex); @@ -1570,7 +1572,7 @@ static vm_fault_t ubifs_vm_page_mkwrite(struct vm_fault *vmf) struct ubifs_inode *ui = ubifs_inode(inode); mutex_lock(&ui->ui_mutex); - inode->i_mtime = inode->i_ctime = current_time(inode); + inode->i_mtime = inode_set_ctime_current(inode); release = ui->dirty; mark_inode_dirty_sync(inode); mutex_unlock(&ui->ui_mutex); diff --git a/fs/ubifs/ioctl.c b/fs/ubifs/ioctl.c index 67c5108abd89..d79cabe193c3 100644 --- a/fs/ubifs/ioctl.c +++ b/fs/ubifs/ioctl.c @@ -118,7 +118,7 @@ static int setflags(struct inode *inode, int flags) ui->flags &= ~ioctl2ubifs(UBIFS_SETTABLE_IOCTL_FLAGS); ui->flags |= ioctl2ubifs(flags); ubifs_set_inode_flags(inode); - inode->i_ctime = current_time(inode); + inode_set_ctime_current(inode); release = ui->dirty; mark_inode_dirty_sync(inode); mutex_unlock(&ui->ui_mutex); diff --git a/fs/ubifs/journal.c b/fs/ubifs/journal.c index dc52ac0f4a34..ffc9beee7be6 100644 --- a/fs/ubifs/journal.c +++ b/fs/ubifs/journal.c @@ -454,8 +454,8 @@ static void pack_inode(struct ubifs_info *c, struct ubifs_ino_node *ino, ino->creat_sqnum = cpu_to_le64(ui->creat_sqnum); ino->atime_sec = cpu_to_le64(inode->i_atime.tv_sec); ino->atime_nsec = cpu_to_le32(inode->i_atime.tv_nsec); - ino->ctime_sec = cpu_to_le64(inode->i_ctime.tv_sec); - ino->ctime_nsec = cpu_to_le32(inode->i_ctime.tv_nsec); + ino->ctime_sec = cpu_to_le64(inode_get_ctime(inode).tv_sec); + ino->ctime_nsec = cpu_to_le32(inode_get_ctime(inode).tv_nsec); ino->mtime_sec = cpu_to_le64(inode->i_mtime.tv_sec); ino->mtime_nsec = cpu_to_le32(inode->i_mtime.tv_nsec); ino->uid = cpu_to_le32(i_uid_read(inode)); diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c index 32cb14759796..b08fb28d16b5 100644 --- a/fs/ubifs/super.c +++ b/fs/ubifs/super.c @@ -146,8 +146,8 @@ struct inode *ubifs_iget(struct super_block *sb, unsigned long inum) inode->i_atime.tv_nsec = le32_to_cpu(ino->atime_nsec); inode->i_mtime.tv_sec = (int64_t)le64_to_cpu(ino->mtime_sec); inode->i_mtime.tv_nsec = le32_to_cpu(ino->mtime_nsec); - inode->i_ctime.tv_sec = (int64_t)le64_to_cpu(ino->ctime_sec); - inode->i_ctime.tv_nsec = le32_to_cpu(ino->ctime_nsec); + inode_set_ctime(inode, (int64_t)le64_to_cpu(ino->ctime_sec), + le32_to_cpu(ino->ctime_nsec)); inode->i_mode = le32_to_cpu(ino->mode); inode->i_size = le64_to_cpu(ino->size); diff --git a/fs/ubifs/xattr.c b/fs/ubifs/xattr.c index 349228dd1191..406c82eab513 100644 --- a/fs/ubifs/xattr.c +++ b/fs/ubifs/xattr.c @@ -134,7 +134,7 @@ static int create_xattr(struct ubifs_info *c, struct inode *host, ui->data_len = size; mutex_lock(&host_ui->ui_mutex); - host->i_ctime = current_time(host); + inode_set_ctime_current(host); host_ui->xattr_cnt += 1; host_ui->xattr_size += CALC_DENT_SIZE(fname_len(nm)); host_ui->xattr_size += CALC_XATTR_BYTES(size); @@ -215,7 +215,7 @@ static int change_xattr(struct ubifs_info *c, struct inode *host, ui->data_len = size; mutex_lock(&host_ui->ui_mutex); - host->i_ctime = current_time(host); + inode_set_ctime_current(host); host_ui->xattr_size -= CALC_XATTR_BYTES(old_size); host_ui->xattr_size += CALC_XATTR_BYTES(size); @@ -474,7 +474,7 @@ static int remove_xattr(struct ubifs_info *c, struct inode *host, return err; mutex_lock(&host_ui->ui_mutex); - host->i_ctime = current_time(host); + inode_set_ctime_current(host); host_ui->xattr_cnt -= 1; host_ui->xattr_size -= CALC_DENT_SIZE(fname_len(nm)); host_ui->xattr_size -= CALC_XATTR_BYTES(ui->data_len); -- 2.41.0 ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/ ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 78/92] ubifs: convert to ctime accessor functions 2023-07-05 19:01 ` [PATCH v2 78/92] ubifs: " Jeff Layton @ 2023-07-06 12:07 ` Zhihao Cheng 2023-07-06 12:10 ` Jeff Layton 0 siblings, 1 reply; 8+ messages in thread From: Zhihao Cheng @ 2023-07-06 12:07 UTC (permalink / raw) To: Jeff Layton, Christian Brauner, Richard Weinberger Cc: Al Viro, Jan Kara, linux-fsdevel, linux-kernel, linux-mtd 在 2023/7/6 3:01, Jeff Layton 写道: > 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> > --- > fs/ubifs/debug.c | 4 ++-- > fs/ubifs/dir.c | 24 +++++++++++------------- > fs/ubifs/file.c | 16 +++++++++------- > fs/ubifs/ioctl.c | 2 +- > fs/ubifs/journal.c | 4 ++-- > fs/ubifs/super.c | 4 ++-- > fs/ubifs/xattr.c | 6 +++--- > 7 files changed, 30 insertions(+), 30 deletions(-) > > diff --git a/fs/ubifs/debug.c b/fs/ubifs/debug.c > index 9c9d3f0e36a4..eef9e527d9ff 100644 > --- a/fs/ubifs/debug.c > +++ b/fs/ubifs/debug.c > @@ -243,8 +243,8 @@ void ubifs_dump_inode(struct ubifs_info *c, const struct inode *inode) > (unsigned int)inode->i_mtime.tv_sec, > (unsigned int)inode->i_mtime.tv_nsec); > pr_err("\tctime %u.%u\n", > - (unsigned int)inode->i_ctime.tv_sec, > - (unsigned int)inode->i_ctime.tv_nsec); > + (unsigned int) inode_get_ctime(inode).tv_sec, > + (unsigned int) inode_get_ctime(inode).tv_nsec); > pr_err("\tcreat_sqnum %llu\n", ui->creat_sqnum); > pr_err("\txattr_size %u\n", ui->xattr_size); > pr_err("\txattr_cnt %u\n", ui->xattr_cnt); > diff --git a/fs/ubifs/dir.c b/fs/ubifs/dir.c > index 7ec25310bd8a..3a1ba8ba308a 100644 > --- a/fs/ubifs/dir.c > +++ b/fs/ubifs/dir.c > @@ -96,8 +96,7 @@ struct inode *ubifs_new_inode(struct ubifs_info *c, struct inode *dir, > inode->i_flags |= S_NOCMTIME; > > inode_init_owner(&nop_mnt_idmap, inode, dir, mode); > - inode->i_mtime = inode->i_atime = inode->i_ctime = > - current_time(inode); > + inode->i_mtime = inode->i_atime = inode_set_ctime_current(inode); > inode->i_mapping->nrpages = 0; > > if (!is_xattr) { > @@ -325,7 +324,7 @@ static int ubifs_create(struct mnt_idmap *idmap, struct inode *dir, > mutex_lock(&dir_ui->ui_mutex); > dir->i_size += sz_change; > dir_ui->ui_size = dir->i_size; > - dir->i_mtime = dir->i_ctime = inode->i_ctime; > + dir->i_mtime = inode_set_ctime_to_ts(dir, inode_get_ctime(inode)); > err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); > if (err) > goto out_cancel; > @@ -765,10 +764,10 @@ static int ubifs_link(struct dentry *old_dentry, struct inode *dir, > > inc_nlink(inode); > ihold(inode); > - inode->i_ctime = current_time(inode); > + inode_set_ctime_current(inode); > dir->i_size += sz_change; > dir_ui->ui_size = dir->i_size; > - dir->i_mtime = dir->i_ctime = inode->i_ctime; > + dir->i_mtime = inode_set_ctime_to_ts(dir, inode_get_ctime(inode)); > err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); > if (err) > goto out_cancel; > @@ -838,11 +837,11 @@ static int ubifs_unlink(struct inode *dir, struct dentry *dentry) > } > > lock_2_inodes(dir, inode); > - inode->i_ctime = current_time(dir); > + inode_set_ctime_current(inode); > drop_nlink(inode); > dir->i_size -= sz_change; > dir_ui->ui_size = dir->i_size; > - dir->i_mtime = dir->i_ctime = inode->i_ctime; > + dir->i_mtime = inode_set_ctime_to_ts(dir, inode_get_ctime(inode)); > err = ubifs_jnl_update(c, dir, &nm, inode, 1, 0); > if (err) > goto out_cancel; > @@ -940,12 +939,12 @@ static int ubifs_rmdir(struct inode *dir, struct dentry *dentry) > } > > lock_2_inodes(dir, inode); > - inode->i_ctime = current_time(dir); > + inode_set_ctime_current(inode); > clear_nlink(inode); > drop_nlink(dir); > dir->i_size -= sz_change; > dir_ui->ui_size = dir->i_size; > - dir->i_mtime = dir->i_ctime = inode->i_ctime; > + dir->i_mtime = inode_set_ctime_to_ts(dir, inode_get_ctime(inode)); > err = ubifs_jnl_update(c, dir, &nm, inode, 1, 0); > if (err) > goto out_cancel; > @@ -1019,7 +1018,7 @@ static int ubifs_mkdir(struct mnt_idmap *idmap, struct inode *dir, > inc_nlink(dir); > dir->i_size += sz_change; > dir_ui->ui_size = dir->i_size; > - dir->i_mtime = dir->i_ctime = inode->i_ctime; > + dir->i_mtime = inode_set_ctime_to_ts(dir, inode_get_ctime(inode)); > err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); > if (err) { > ubifs_err(c, "cannot create directory, error %d", err); > @@ -1110,7 +1109,7 @@ static int ubifs_mknod(struct mnt_idmap *idmap, struct inode *dir, > mutex_lock(&dir_ui->ui_mutex); > dir->i_size += sz_change; > dir_ui->ui_size = dir->i_size; > - dir->i_mtime = dir->i_ctime = inode->i_ctime; > + dir->i_mtime = inode_set_ctime_to_ts(dir, inode_get_ctime(inode)); > err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); > if (err) > goto out_cancel; > @@ -1210,7 +1209,7 @@ static int ubifs_symlink(struct mnt_idmap *idmap, struct inode *dir, > mutex_lock(&dir_ui->ui_mutex); > dir->i_size += sz_change; > dir_ui->ui_size = dir->i_size; > - dir->i_mtime = dir->i_ctime = inode->i_ctime; > + dir->i_mtime = inode_set_ctime_to_ts(dir, inode_get_ctime(inode)); > err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); > if (err) > goto out_cancel; > @@ -1298,7 +1297,6 @@ static int do_rename(struct inode *old_dir, struct dentry *old_dentry, > struct ubifs_budget_req ino_req = { .dirtied_ino = 1, > .dirtied_ino_d = ALIGN(old_inode_ui->data_len, 8) }; > struct ubifs_budget_req wht_req; > - struct timespec64 time; > unsigned int saved_nlink; > struct fscrypt_name old_nm, new_nm; > It would be better to put the change of do_rename in '[PATCH v2 10/92] ubifs: convert to simple_rename_timestamp'. Reviewed-by: Zhihao Cheng <chengzhihao1@huawei.com> > diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c > index 6738fe43040b..436b27d7c58f 100644 > --- a/fs/ubifs/file.c > +++ b/fs/ubifs/file.c > @@ -1092,7 +1092,7 @@ static void do_attr_changes(struct inode *inode, const struct iattr *attr) > if (attr->ia_valid & ATTR_MTIME) > inode->i_mtime = attr->ia_mtime; > if (attr->ia_valid & ATTR_CTIME) > - inode->i_ctime = attr->ia_ctime; > + inode_set_ctime_to_ts(inode, attr->ia_ctime); > if (attr->ia_valid & ATTR_MODE) { > umode_t mode = attr->ia_mode; > > @@ -1192,7 +1192,7 @@ static int do_truncation(struct ubifs_info *c, struct inode *inode, > mutex_lock(&ui->ui_mutex); > ui->ui_size = inode->i_size; > /* Truncation changes inode [mc]time */ > - inode->i_mtime = inode->i_ctime = current_time(inode); > + inode->i_mtime = inode_set_ctime_current(inode); > /* Other attributes may be changed at the same time as well */ > do_attr_changes(inode, attr); > err = ubifs_jnl_truncate(c, inode, old_size, new_size); > @@ -1239,7 +1239,7 @@ static int do_setattr(struct ubifs_info *c, struct inode *inode, > mutex_lock(&ui->ui_mutex); > if (attr->ia_valid & ATTR_SIZE) { > /* Truncation changes inode [mc]time */ > - inode->i_mtime = inode->i_ctime = current_time(inode); > + inode->i_mtime = inode_set_ctime_current(inode); > /* 'truncate_setsize()' changed @i_size, update @ui_size */ > ui->ui_size = inode->i_size; > } > @@ -1364,8 +1364,10 @@ int ubifs_fsync(struct file *file, loff_t start, loff_t end, int datasync) > static inline int mctime_update_needed(const struct inode *inode, > const struct timespec64 *now) > { > + struct timespec64 ctime = inode_get_ctime(inode); > + > if (!timespec64_equal(&inode->i_mtime, now) || > - !timespec64_equal(&inode->i_ctime, now)) > + !timespec64_equal(&ctime, now)) > return 1; > return 0; > } > @@ -1396,7 +1398,7 @@ int ubifs_update_time(struct inode *inode, struct timespec64 *time, > if (flags & S_ATIME) > inode->i_atime = *time; > if (flags & S_CTIME) > - inode->i_ctime = *time; > + inode_set_ctime_to_ts(inode, *time); > if (flags & S_MTIME) > inode->i_mtime = *time; > > @@ -1432,7 +1434,7 @@ static int update_mctime(struct inode *inode) > return err; > > mutex_lock(&ui->ui_mutex); > - inode->i_mtime = inode->i_ctime = current_time(inode); > + inode->i_mtime = inode_set_ctime_current(inode); > release = ui->dirty; > mark_inode_dirty_sync(inode); > mutex_unlock(&ui->ui_mutex); > @@ -1570,7 +1572,7 @@ static vm_fault_t ubifs_vm_page_mkwrite(struct vm_fault *vmf) > struct ubifs_inode *ui = ubifs_inode(inode); > > mutex_lock(&ui->ui_mutex); > - inode->i_mtime = inode->i_ctime = current_time(inode); > + inode->i_mtime = inode_set_ctime_current(inode); > release = ui->dirty; > mark_inode_dirty_sync(inode); > mutex_unlock(&ui->ui_mutex); > diff --git a/fs/ubifs/ioctl.c b/fs/ubifs/ioctl.c > index 67c5108abd89..d79cabe193c3 100644 > --- a/fs/ubifs/ioctl.c > +++ b/fs/ubifs/ioctl.c > @@ -118,7 +118,7 @@ static int setflags(struct inode *inode, int flags) > ui->flags &= ~ioctl2ubifs(UBIFS_SETTABLE_IOCTL_FLAGS); > ui->flags |= ioctl2ubifs(flags); > ubifs_set_inode_flags(inode); > - inode->i_ctime = current_time(inode); > + inode_set_ctime_current(inode); > release = ui->dirty; > mark_inode_dirty_sync(inode); > mutex_unlock(&ui->ui_mutex); > diff --git a/fs/ubifs/journal.c b/fs/ubifs/journal.c > index dc52ac0f4a34..ffc9beee7be6 100644 > --- a/fs/ubifs/journal.c > +++ b/fs/ubifs/journal.c > @@ -454,8 +454,8 @@ static void pack_inode(struct ubifs_info *c, struct ubifs_ino_node *ino, > ino->creat_sqnum = cpu_to_le64(ui->creat_sqnum); > ino->atime_sec = cpu_to_le64(inode->i_atime.tv_sec); > ino->atime_nsec = cpu_to_le32(inode->i_atime.tv_nsec); > - ino->ctime_sec = cpu_to_le64(inode->i_ctime.tv_sec); > - ino->ctime_nsec = cpu_to_le32(inode->i_ctime.tv_nsec); > + ino->ctime_sec = cpu_to_le64(inode_get_ctime(inode).tv_sec); > + ino->ctime_nsec = cpu_to_le32(inode_get_ctime(inode).tv_nsec); > ino->mtime_sec = cpu_to_le64(inode->i_mtime.tv_sec); > ino->mtime_nsec = cpu_to_le32(inode->i_mtime.tv_nsec); > ino->uid = cpu_to_le32(i_uid_read(inode)); > diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c > index 32cb14759796..b08fb28d16b5 100644 > --- a/fs/ubifs/super.c > +++ b/fs/ubifs/super.c > @@ -146,8 +146,8 @@ struct inode *ubifs_iget(struct super_block *sb, unsigned long inum) > inode->i_atime.tv_nsec = le32_to_cpu(ino->atime_nsec); > inode->i_mtime.tv_sec = (int64_t)le64_to_cpu(ino->mtime_sec); > inode->i_mtime.tv_nsec = le32_to_cpu(ino->mtime_nsec); > - inode->i_ctime.tv_sec = (int64_t)le64_to_cpu(ino->ctime_sec); > - inode->i_ctime.tv_nsec = le32_to_cpu(ino->ctime_nsec); > + inode_set_ctime(inode, (int64_t)le64_to_cpu(ino->ctime_sec), > + le32_to_cpu(ino->ctime_nsec)); > inode->i_mode = le32_to_cpu(ino->mode); > inode->i_size = le64_to_cpu(ino->size); > > diff --git a/fs/ubifs/xattr.c b/fs/ubifs/xattr.c > index 349228dd1191..406c82eab513 100644 > --- a/fs/ubifs/xattr.c > +++ b/fs/ubifs/xattr.c > @@ -134,7 +134,7 @@ static int create_xattr(struct ubifs_info *c, struct inode *host, > ui->data_len = size; > > mutex_lock(&host_ui->ui_mutex); > - host->i_ctime = current_time(host); > + inode_set_ctime_current(host); > host_ui->xattr_cnt += 1; > host_ui->xattr_size += CALC_DENT_SIZE(fname_len(nm)); > host_ui->xattr_size += CALC_XATTR_BYTES(size); > @@ -215,7 +215,7 @@ static int change_xattr(struct ubifs_info *c, struct inode *host, > ui->data_len = size; > > mutex_lock(&host_ui->ui_mutex); > - host->i_ctime = current_time(host); > + inode_set_ctime_current(host); > host_ui->xattr_size -= CALC_XATTR_BYTES(old_size); > host_ui->xattr_size += CALC_XATTR_BYTES(size); > > @@ -474,7 +474,7 @@ static int remove_xattr(struct ubifs_info *c, struct inode *host, > return err; > > mutex_lock(&host_ui->ui_mutex); > - host->i_ctime = current_time(host); > + inode_set_ctime_current(host); > host_ui->xattr_cnt -= 1; > host_ui->xattr_size -= CALC_DENT_SIZE(fname_len(nm)); > host_ui->xattr_size -= CALC_XATTR_BYTES(ui->data_len); > ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 78/92] ubifs: convert to ctime accessor functions 2023-07-06 12:07 ` Zhihao Cheng @ 2023-07-06 12:10 ` Jeff Layton 0 siblings, 0 replies; 8+ messages in thread From: Jeff Layton @ 2023-07-06 12:10 UTC (permalink / raw) To: Zhihao Cheng, Christian Brauner, Richard Weinberger Cc: Al Viro, Jan Kara, linux-fsdevel, linux-kernel, linux-mtd On Thu, 2023-07-06 at 20:07 +0800, Zhihao Cheng wrote: > 在 2023/7/6 3:01, Jeff Layton 写道: > > 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> > > --- > > fs/ubifs/debug.c | 4 ++-- > > fs/ubifs/dir.c | 24 +++++++++++------------- > > fs/ubifs/file.c | 16 +++++++++------- > > fs/ubifs/ioctl.c | 2 +- > > fs/ubifs/journal.c | 4 ++-- > > fs/ubifs/super.c | 4 ++-- > > fs/ubifs/xattr.c | 6 +++--- > > 7 files changed, 30 insertions(+), 30 deletions(-) > > > > diff --git a/fs/ubifs/debug.c b/fs/ubifs/debug.c > > index 9c9d3f0e36a4..eef9e527d9ff 100644 > > --- a/fs/ubifs/debug.c > > +++ b/fs/ubifs/debug.c > > @@ -243,8 +243,8 @@ void ubifs_dump_inode(struct ubifs_info *c, const struct inode *inode) > > (unsigned int)inode->i_mtime.tv_sec, > > (unsigned int)inode->i_mtime.tv_nsec); > > pr_err("\tctime %u.%u\n", > > - (unsigned int)inode->i_ctime.tv_sec, > > - (unsigned int)inode->i_ctime.tv_nsec); > > + (unsigned int) inode_get_ctime(inode).tv_sec, > > + (unsigned int) inode_get_ctime(inode).tv_nsec); > > pr_err("\tcreat_sqnum %llu\n", ui->creat_sqnum); > > pr_err("\txattr_size %u\n", ui->xattr_size); > > pr_err("\txattr_cnt %u\n", ui->xattr_cnt); > > diff --git a/fs/ubifs/dir.c b/fs/ubifs/dir.c > > index 7ec25310bd8a..3a1ba8ba308a 100644 > > --- a/fs/ubifs/dir.c > > +++ b/fs/ubifs/dir.c > > @@ -96,8 +96,7 @@ struct inode *ubifs_new_inode(struct ubifs_info *c, struct inode *dir, > > inode->i_flags |= S_NOCMTIME; > > > > inode_init_owner(&nop_mnt_idmap, inode, dir, mode); > > - inode->i_mtime = inode->i_atime = inode->i_ctime = > > - current_time(inode); > > + inode->i_mtime = inode->i_atime = inode_set_ctime_current(inode); > > inode->i_mapping->nrpages = 0; > > > > if (!is_xattr) { > > @@ -325,7 +324,7 @@ static int ubifs_create(struct mnt_idmap *idmap, struct inode *dir, > > mutex_lock(&dir_ui->ui_mutex); > > dir->i_size += sz_change; > > dir_ui->ui_size = dir->i_size; > > - dir->i_mtime = dir->i_ctime = inode->i_ctime; > > + dir->i_mtime = inode_set_ctime_to_ts(dir, inode_get_ctime(inode)); > > err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); > > if (err) > > goto out_cancel; > > @@ -765,10 +764,10 @@ static int ubifs_link(struct dentry *old_dentry, struct inode *dir, > > > > inc_nlink(inode); > > ihold(inode); > > - inode->i_ctime = current_time(inode); > > + inode_set_ctime_current(inode); > > dir->i_size += sz_change; > > dir_ui->ui_size = dir->i_size; > > - dir->i_mtime = dir->i_ctime = inode->i_ctime; > > + dir->i_mtime = inode_set_ctime_to_ts(dir, inode_get_ctime(inode)); > > err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); > > if (err) > > goto out_cancel; > > @@ -838,11 +837,11 @@ static int ubifs_unlink(struct inode *dir, struct dentry *dentry) > > } > > > > lock_2_inodes(dir, inode); > > - inode->i_ctime = current_time(dir); > > + inode_set_ctime_current(inode); > > drop_nlink(inode); > > dir->i_size -= sz_change; > > dir_ui->ui_size = dir->i_size; > > - dir->i_mtime = dir->i_ctime = inode->i_ctime; > > + dir->i_mtime = inode_set_ctime_to_ts(dir, inode_get_ctime(inode)); > > err = ubifs_jnl_update(c, dir, &nm, inode, 1, 0); > > if (err) > > goto out_cancel; > > @@ -940,12 +939,12 @@ static int ubifs_rmdir(struct inode *dir, struct dentry *dentry) > > } > > > > lock_2_inodes(dir, inode); > > - inode->i_ctime = current_time(dir); > > + inode_set_ctime_current(inode); > > clear_nlink(inode); > > drop_nlink(dir); > > dir->i_size -= sz_change; > > dir_ui->ui_size = dir->i_size; > > - dir->i_mtime = dir->i_ctime = inode->i_ctime; > > + dir->i_mtime = inode_set_ctime_to_ts(dir, inode_get_ctime(inode)); > > err = ubifs_jnl_update(c, dir, &nm, inode, 1, 0); > > if (err) > > goto out_cancel; > > @@ -1019,7 +1018,7 @@ static int ubifs_mkdir(struct mnt_idmap *idmap, struct inode *dir, > > inc_nlink(dir); > > dir->i_size += sz_change; > > dir_ui->ui_size = dir->i_size; > > - dir->i_mtime = dir->i_ctime = inode->i_ctime; > > + dir->i_mtime = inode_set_ctime_to_ts(dir, inode_get_ctime(inode)); > > err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); > > if (err) { > > ubifs_err(c, "cannot create directory, error %d", err); > > @@ -1110,7 +1109,7 @@ static int ubifs_mknod(struct mnt_idmap *idmap, struct inode *dir, > > mutex_lock(&dir_ui->ui_mutex); > > dir->i_size += sz_change; > > dir_ui->ui_size = dir->i_size; > > - dir->i_mtime = dir->i_ctime = inode->i_ctime; > > + dir->i_mtime = inode_set_ctime_to_ts(dir, inode_get_ctime(inode)); > > err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); > > if (err) > > goto out_cancel; > > @@ -1210,7 +1209,7 @@ static int ubifs_symlink(struct mnt_idmap *idmap, struct inode *dir, > > mutex_lock(&dir_ui->ui_mutex); > > dir->i_size += sz_change; > > dir_ui->ui_size = dir->i_size; > > - dir->i_mtime = dir->i_ctime = inode->i_ctime; > > + dir->i_mtime = inode_set_ctime_to_ts(dir, inode_get_ctime(inode)); > > err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); > > if (err) > > goto out_cancel; > > @@ -1298,7 +1297,6 @@ static int do_rename(struct inode *old_dir, struct dentry *old_dentry, > > struct ubifs_budget_req ino_req = { .dirtied_ino = 1, > > .dirtied_ino_d = ALIGN(old_inode_ui->data_len, 8) }; > > struct ubifs_budget_req wht_req; > > - struct timespec64 time; > > unsigned int saved_nlink; > > struct fscrypt_name old_nm, new_nm; > > > > It would be better to put the change of do_rename in '[PATCH v2 10/92] > ubifs: convert to simple_rename_timestamp'. > > Reviewed-by: Zhihao Cheng <chengzhihao1@huawei.com> > Good catch. I'll fix that up in my tree. Thanks! > > diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c > > index 6738fe43040b..436b27d7c58f 100644 > > --- a/fs/ubifs/file.c > > +++ b/fs/ubifs/file.c > > @@ -1092,7 +1092,7 @@ static void do_attr_changes(struct inode *inode, const struct iattr *attr) > > if (attr->ia_valid & ATTR_MTIME) > > inode->i_mtime = attr->ia_mtime; > > if (attr->ia_valid & ATTR_CTIME) > > - inode->i_ctime = attr->ia_ctime; > > + inode_set_ctime_to_ts(inode, attr->ia_ctime); > > if (attr->ia_valid & ATTR_MODE) { > > umode_t mode = attr->ia_mode; > > > > @@ -1192,7 +1192,7 @@ static int do_truncation(struct ubifs_info *c, struct inode *inode, > > mutex_lock(&ui->ui_mutex); > > ui->ui_size = inode->i_size; > > /* Truncation changes inode [mc]time */ > > - inode->i_mtime = inode->i_ctime = current_time(inode); > > + inode->i_mtime = inode_set_ctime_current(inode); > > /* Other attributes may be changed at the same time as well */ > > do_attr_changes(inode, attr); > > err = ubifs_jnl_truncate(c, inode, old_size, new_size); > > @@ -1239,7 +1239,7 @@ static int do_setattr(struct ubifs_info *c, struct inode *inode, > > mutex_lock(&ui->ui_mutex); > > if (attr->ia_valid & ATTR_SIZE) { > > /* Truncation changes inode [mc]time */ > > - inode->i_mtime = inode->i_ctime = current_time(inode); > > + inode->i_mtime = inode_set_ctime_current(inode); > > /* 'truncate_setsize()' changed @i_size, update @ui_size */ > > ui->ui_size = inode->i_size; > > } > > @@ -1364,8 +1364,10 @@ int ubifs_fsync(struct file *file, loff_t start, loff_t end, int datasync) > > static inline int mctime_update_needed(const struct inode *inode, > > const struct timespec64 *now) > > { > > + struct timespec64 ctime = inode_get_ctime(inode); > > + > > if (!timespec64_equal(&inode->i_mtime, now) || > > - !timespec64_equal(&inode->i_ctime, now)) > > + !timespec64_equal(&ctime, now)) > > return 1; > > return 0; > > } > > @@ -1396,7 +1398,7 @@ int ubifs_update_time(struct inode *inode, struct timespec64 *time, > > if (flags & S_ATIME) > > inode->i_atime = *time; > > if (flags & S_CTIME) > > - inode->i_ctime = *time; > > + inode_set_ctime_to_ts(inode, *time); > > if (flags & S_MTIME) > > inode->i_mtime = *time; > > > > @@ -1432,7 +1434,7 @@ static int update_mctime(struct inode *inode) > > return err; > > > > mutex_lock(&ui->ui_mutex); > > - inode->i_mtime = inode->i_ctime = current_time(inode); > > + inode->i_mtime = inode_set_ctime_current(inode); > > release = ui->dirty; > > mark_inode_dirty_sync(inode); > > mutex_unlock(&ui->ui_mutex); > > @@ -1570,7 +1572,7 @@ static vm_fault_t ubifs_vm_page_mkwrite(struct vm_fault *vmf) > > struct ubifs_inode *ui = ubifs_inode(inode); > > > > mutex_lock(&ui->ui_mutex); > > - inode->i_mtime = inode->i_ctime = current_time(inode); > > + inode->i_mtime = inode_set_ctime_current(inode); > > release = ui->dirty; > > mark_inode_dirty_sync(inode); > > mutex_unlock(&ui->ui_mutex); > > diff --git a/fs/ubifs/ioctl.c b/fs/ubifs/ioctl.c > > index 67c5108abd89..d79cabe193c3 100644 > > --- a/fs/ubifs/ioctl.c > > +++ b/fs/ubifs/ioctl.c > > @@ -118,7 +118,7 @@ static int setflags(struct inode *inode, int flags) > > ui->flags &= ~ioctl2ubifs(UBIFS_SETTABLE_IOCTL_FLAGS); > > ui->flags |= ioctl2ubifs(flags); > > ubifs_set_inode_flags(inode); > > - inode->i_ctime = current_time(inode); > > + inode_set_ctime_current(inode); > > release = ui->dirty; > > mark_inode_dirty_sync(inode); > > mutex_unlock(&ui->ui_mutex); > > diff --git a/fs/ubifs/journal.c b/fs/ubifs/journal.c > > index dc52ac0f4a34..ffc9beee7be6 100644 > > --- a/fs/ubifs/journal.c > > +++ b/fs/ubifs/journal.c > > @@ -454,8 +454,8 @@ static void pack_inode(struct ubifs_info *c, struct ubifs_ino_node *ino, > > ino->creat_sqnum = cpu_to_le64(ui->creat_sqnum); > > ino->atime_sec = cpu_to_le64(inode->i_atime.tv_sec); > > ino->atime_nsec = cpu_to_le32(inode->i_atime.tv_nsec); > > - ino->ctime_sec = cpu_to_le64(inode->i_ctime.tv_sec); > > - ino->ctime_nsec = cpu_to_le32(inode->i_ctime.tv_nsec); > > + ino->ctime_sec = cpu_to_le64(inode_get_ctime(inode).tv_sec); > > + ino->ctime_nsec = cpu_to_le32(inode_get_ctime(inode).tv_nsec); > > ino->mtime_sec = cpu_to_le64(inode->i_mtime.tv_sec); > > ino->mtime_nsec = cpu_to_le32(inode->i_mtime.tv_nsec); > > ino->uid = cpu_to_le32(i_uid_read(inode)); > > diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c > > index 32cb14759796..b08fb28d16b5 100644 > > --- a/fs/ubifs/super.c > > +++ b/fs/ubifs/super.c > > @@ -146,8 +146,8 @@ struct inode *ubifs_iget(struct super_block *sb, unsigned long inum) > > inode->i_atime.tv_nsec = le32_to_cpu(ino->atime_nsec); > > inode->i_mtime.tv_sec = (int64_t)le64_to_cpu(ino->mtime_sec); > > inode->i_mtime.tv_nsec = le32_to_cpu(ino->mtime_nsec); > > - inode->i_ctime.tv_sec = (int64_t)le64_to_cpu(ino->ctime_sec); > > - inode->i_ctime.tv_nsec = le32_to_cpu(ino->ctime_nsec); > > + inode_set_ctime(inode, (int64_t)le64_to_cpu(ino->ctime_sec), > > + le32_to_cpu(ino->ctime_nsec)); > > inode->i_mode = le32_to_cpu(ino->mode); > > inode->i_size = le64_to_cpu(ino->size); > > > > diff --git a/fs/ubifs/xattr.c b/fs/ubifs/xattr.c > > index 349228dd1191..406c82eab513 100644 > > --- a/fs/ubifs/xattr.c > > +++ b/fs/ubifs/xattr.c > > @@ -134,7 +134,7 @@ static int create_xattr(struct ubifs_info *c, struct inode *host, > > ui->data_len = size; > > > > mutex_lock(&host_ui->ui_mutex); > > - host->i_ctime = current_time(host); > > + inode_set_ctime_current(host); > > host_ui->xattr_cnt += 1; > > host_ui->xattr_size += CALC_DENT_SIZE(fname_len(nm)); > > host_ui->xattr_size += CALC_XATTR_BYTES(size); > > @@ -215,7 +215,7 @@ static int change_xattr(struct ubifs_info *c, struct inode *host, > > ui->data_len = size; > > > > mutex_lock(&host_ui->ui_mutex); > > - host->i_ctime = current_time(host); > > + inode_set_ctime_current(host); > > host_ui->xattr_size -= CALC_XATTR_BYTES(old_size); > > host_ui->xattr_size += CALC_XATTR_BYTES(size); > > > > @@ -474,7 +474,7 @@ static int remove_xattr(struct ubifs_info *c, struct inode *host, > > return err; > > > > mutex_lock(&host_ui->ui_mutex); > > - host->i_ctime = current_time(host); > > + inode_set_ctime_current(host); > > host_ui->xattr_cnt -= 1; > > host_ui->xattr_size -= CALC_DENT_SIZE(fname_len(nm)); > > host_ui->xattr_size -= CALC_XATTR_BYTES(ui->data_len); > > > -- Jeff Layton <jlayton@kernel.org> ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/ ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2023-07-06 13:25 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20230705185755.579053-1-jlayton@kernel.org>
[not found] ` <20230705190309.579783-1-jlayton@kernel.org>
2023-07-05 19:00 ` [PATCH v2 10/92] ubifs: convert to simple_rename_timestamp Jeff Layton
2023-07-06 10:30 ` Jan Kara
2023-07-06 12:08 ` Zhihao Cheng
2023-07-05 19:01 ` [PATCH v2 54/92] jffs2: convert to ctime accessor functions Jeff Layton
2023-07-06 13:25 ` Jan Kara
2023-07-05 19:01 ` [PATCH v2 78/92] ubifs: " Jeff Layton
2023-07-06 12:07 ` Zhihao Cheng
2023-07-06 12:10 ` Jeff Layton
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox