2023-07-05 19:10:23

by Jeff Layton

[permalink] [raw]
Subject: [PATCH v2 51/92] hpfs: convert to ctime accessor functions

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 <[email protected]>
---
fs/hpfs/dir.c | 8 ++++----
fs/hpfs/inode.c | 6 +++---
fs/hpfs/namei.c | 26 +++++++++++++++-----------
fs/hpfs/super.c | 5 +++--
4 files changed, 25 insertions(+), 20 deletions(-)

diff --git a/fs/hpfs/dir.c b/fs/hpfs/dir.c
index f32f15669996..f36566d61215 100644
--- a/fs/hpfs/dir.c
+++ b/fs/hpfs/dir.c
@@ -277,10 +277,10 @@ struct dentry *hpfs_lookup(struct inode *dir, struct dentry *dentry, unsigned in
* inode.
*/

- if (!result->i_ctime.tv_sec) {
- if (!(result->i_ctime.tv_sec = local_to_gmt(dir->i_sb, le32_to_cpu(de->creation_date))))
- result->i_ctime.tv_sec = 1;
- result->i_ctime.tv_nsec = 0;
+ if (!inode_get_ctime(result).tv_sec) {
+ time64_t csec = local_to_gmt(dir->i_sb, le32_to_cpu(de->creation_date));
+
+ inode_set_ctime(result, csec ? csec : 1, 0);
result->i_mtime.tv_sec = local_to_gmt(dir->i_sb, le32_to_cpu(de->write_date));
result->i_mtime.tv_nsec = 0;
result->i_atime.tv_sec = local_to_gmt(dir->i_sb, le32_to_cpu(de->read_date));
diff --git a/fs/hpfs/inode.c b/fs/hpfs/inode.c
index e50e92a42432..479166378bae 100644
--- a/fs/hpfs/inode.c
+++ b/fs/hpfs/inode.c
@@ -36,7 +36,7 @@ void hpfs_init_inode(struct inode *i)
hpfs_inode->i_rddir_off = NULL;
hpfs_inode->i_dirty = 0;

- i->i_ctime.tv_sec = i->i_ctime.tv_nsec = 0;
+ inode_set_ctime(i, 0, 0);
i->i_mtime.tv_sec = i->i_mtime.tv_nsec = 0;
i->i_atime.tv_sec = i->i_atime.tv_nsec = 0;
}
@@ -232,7 +232,7 @@ void hpfs_write_inode_nolock(struct inode *i)
if (de) {
de->write_date = cpu_to_le32(gmt_to_local(i->i_sb, i->i_mtime.tv_sec));
de->read_date = cpu_to_le32(gmt_to_local(i->i_sb, i->i_atime.tv_sec));
- de->creation_date = cpu_to_le32(gmt_to_local(i->i_sb, i->i_ctime.tv_sec));
+ de->creation_date = cpu_to_le32(gmt_to_local(i->i_sb, inode_get_ctime(i).tv_sec));
de->read_only = !(i->i_mode & 0222);
de->ea_size = cpu_to_le32(hpfs_inode->i_ea_size);
hpfs_mark_4buffers_dirty(&qbh);
@@ -242,7 +242,7 @@ void hpfs_write_inode_nolock(struct inode *i)
if ((de = map_dirent(i, hpfs_inode->i_dno, "\001\001", 2, NULL, &qbh))) {
de->write_date = cpu_to_le32(gmt_to_local(i->i_sb, i->i_mtime.tv_sec));
de->read_date = cpu_to_le32(gmt_to_local(i->i_sb, i->i_atime.tv_sec));
- de->creation_date = cpu_to_le32(gmt_to_local(i->i_sb, i->i_ctime.tv_sec));
+ de->creation_date = cpu_to_le32(gmt_to_local(i->i_sb, inode_get_ctime(i).tv_sec));
de->read_only = !(i->i_mode & 0222);
de->ea_size = cpu_to_le32(/*hpfs_inode->i_ea_size*/0);
de->file_size = cpu_to_le32(0);
diff --git a/fs/hpfs/namei.c b/fs/hpfs/namei.c
index 69fb40b2c99a..36babb78b510 100644
--- a/fs/hpfs/namei.c
+++ b/fs/hpfs/namei.c
@@ -13,10 +13,10 @@ static void hpfs_update_directory_times(struct inode *dir)
{
time64_t t = local_to_gmt(dir->i_sb, local_get_seconds(dir->i_sb));
if (t == dir->i_mtime.tv_sec &&
- t == dir->i_ctime.tv_sec)
+ t == inode_get_ctime(dir).tv_sec)
return;
- dir->i_mtime.tv_sec = dir->i_ctime.tv_sec = t;
- dir->i_mtime.tv_nsec = dir->i_ctime.tv_nsec = 0;
+ dir->i_mtime.tv_sec = inode_set_ctime(dir, t, 0).tv_sec;
+ dir->i_mtime.tv_nsec = 0;
hpfs_write_inode_nolock(dir);
}

@@ -59,8 +59,9 @@ static int hpfs_mkdir(struct mnt_idmap *idmap, struct inode *dir,
result->i_ino = fno;
hpfs_i(result)->i_parent_dir = dir->i_ino;
hpfs_i(result)->i_dno = dno;
- result->i_ctime.tv_sec = result->i_mtime.tv_sec = result->i_atime.tv_sec = local_to_gmt(dir->i_sb, le32_to_cpu(dee.creation_date));
- result->i_ctime.tv_nsec = 0;
+ inode_set_ctime(result,
+ result->i_mtime.tv_sec = result->i_atime.tv_sec = local_to_gmt(dir->i_sb, le32_to_cpu(dee.creation_date)),
+ 0);
result->i_mtime.tv_nsec = 0;
result->i_atime.tv_nsec = 0;
hpfs_i(result)->i_ea_size = 0;
@@ -167,8 +168,9 @@ static int hpfs_create(struct mnt_idmap *idmap, struct inode *dir,
result->i_fop = &hpfs_file_ops;
set_nlink(result, 1);
hpfs_i(result)->i_parent_dir = dir->i_ino;
- result->i_ctime.tv_sec = result->i_mtime.tv_sec = result->i_atime.tv_sec = local_to_gmt(dir->i_sb, le32_to_cpu(dee.creation_date));
- result->i_ctime.tv_nsec = 0;
+ inode_set_ctime(result,
+ result->i_mtime.tv_sec = result->i_atime.tv_sec = local_to_gmt(dir->i_sb, le32_to_cpu(dee.creation_date)),
+ 0);
result->i_mtime.tv_nsec = 0;
result->i_atime.tv_nsec = 0;
hpfs_i(result)->i_ea_size = 0;
@@ -250,8 +252,9 @@ static int hpfs_mknod(struct mnt_idmap *idmap, struct inode *dir,
hpfs_init_inode(result);
result->i_ino = fno;
hpfs_i(result)->i_parent_dir = dir->i_ino;
- result->i_ctime.tv_sec = result->i_mtime.tv_sec = result->i_atime.tv_sec = local_to_gmt(dir->i_sb, le32_to_cpu(dee.creation_date));
- result->i_ctime.tv_nsec = 0;
+ inode_set_ctime(result,
+ result->i_mtime.tv_sec = result->i_atime.tv_sec = local_to_gmt(dir->i_sb, le32_to_cpu(dee.creation_date)),
+ 0);
result->i_mtime.tv_nsec = 0;
result->i_atime.tv_nsec = 0;
hpfs_i(result)->i_ea_size = 0;
@@ -326,8 +329,9 @@ static int hpfs_symlink(struct mnt_idmap *idmap, struct inode *dir,
result->i_ino = fno;
hpfs_init_inode(result);
hpfs_i(result)->i_parent_dir = dir->i_ino;
- result->i_ctime.tv_sec = result->i_mtime.tv_sec = result->i_atime.tv_sec = local_to_gmt(dir->i_sb, le32_to_cpu(dee.creation_date));
- result->i_ctime.tv_nsec = 0;
+ inode_set_ctime(result,
+ result->i_mtime.tv_sec = result->i_atime.tv_sec = local_to_gmt(dir->i_sb, le32_to_cpu(dee.creation_date)),
+ 0);
result->i_mtime.tv_nsec = 0;
result->i_atime.tv_nsec = 0;
hpfs_i(result)->i_ea_size = 0;
diff --git a/fs/hpfs/super.c b/fs/hpfs/super.c
index 1cb89595b875..758a51564124 100644
--- a/fs/hpfs/super.c
+++ b/fs/hpfs/super.c
@@ -729,8 +729,9 @@ static int hpfs_fill_super(struct super_block *s, void *options, int silent)
root->i_atime.tv_nsec = 0;
root->i_mtime.tv_sec = local_to_gmt(s, le32_to_cpu(de->write_date));
root->i_mtime.tv_nsec = 0;
- root->i_ctime.tv_sec = local_to_gmt(s, le32_to_cpu(de->creation_date));
- root->i_ctime.tv_nsec = 0;
+ inode_set_ctime(root,
+ local_to_gmt(s, le32_to_cpu(de->creation_date)),
+ 0);
hpfs_i(root)->i_ea_size = le32_to_cpu(de->ea_size);
hpfs_i(root)->i_parent_dir = root->i_ino;
if (root->i_size == -1)
--
2.41.0



2023-07-06 12:54:41

by Jan Kara

[permalink] [raw]
Subject: Re: [PATCH v2 51/92] hpfs: convert to ctime accessor functions

On Wed 05-07-23 15:01:16, 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 <[email protected]>

...

> diff --git a/fs/hpfs/namei.c b/fs/hpfs/namei.c
> index 69fb40b2c99a..36babb78b510 100644
> --- a/fs/hpfs/namei.c
> +++ b/fs/hpfs/namei.c
> @@ -13,10 +13,10 @@ static void hpfs_update_directory_times(struct inode *dir)
> {
> time64_t t = local_to_gmt(dir->i_sb, local_get_seconds(dir->i_sb));
> if (t == dir->i_mtime.tv_sec &&
> - t == dir->i_ctime.tv_sec)
> + t == inode_get_ctime(dir).tv_sec)
> return;
> - dir->i_mtime.tv_sec = dir->i_ctime.tv_sec = t;
> - dir->i_mtime.tv_nsec = dir->i_ctime.tv_nsec = 0;
> + dir->i_mtime.tv_sec = inode_set_ctime(dir, t, 0).tv_sec;
> + dir->i_mtime.tv_nsec = 0;

Easier to read:

dir->i_mtime = inode_set_ctime(dir, t, 0);

> @@ -59,8 +59,9 @@ static int hpfs_mkdir(struct mnt_idmap *idmap, struct inode *dir,
> result->i_ino = fno;
> hpfs_i(result)->i_parent_dir = dir->i_ino;
> hpfs_i(result)->i_dno = dno;
> - result->i_ctime.tv_sec = result->i_mtime.tv_sec = result->i_atime.tv_sec = local_to_gmt(dir->i_sb, le32_to_cpu(dee.creation_date));
> - result->i_ctime.tv_nsec = 0;
> + inode_set_ctime(result,
> + result->i_mtime.tv_sec = result->i_atime.tv_sec = local_to_gmt(dir->i_sb, le32_to_cpu(dee.creation_date)),
> + 0);
> result->i_mtime.tv_nsec = 0;
> result->i_atime.tv_nsec = 0;

Here also:
result->i_mtime = result->i_atime = inode_set_ctime(result,
local_to_gmt(dir->i_sb, le32_to_cpu(dee.creation_date)), 0)

> @@ -167,8 +168,9 @@ static int hpfs_create(struct mnt_idmap *idmap, struct inode *dir,
> result->i_fop = &hpfs_file_ops;
> set_nlink(result, 1);
> hpfs_i(result)->i_parent_dir = dir->i_ino;
> - result->i_ctime.tv_sec = result->i_mtime.tv_sec = result->i_atime.tv_sec = local_to_gmt(dir->i_sb, le32_to_cpu(dee.creation_date));
> - result->i_ctime.tv_nsec = 0;
> + inode_set_ctime(result,
> + result->i_mtime.tv_sec = result->i_atime.tv_sec = local_to_gmt(dir->i_sb, le32_to_cpu(dee.creation_date)),
> + 0);
> result->i_mtime.tv_nsec = 0;
> result->i_atime.tv_nsec = 0;

And here exactly the same.

> @@ -250,8 +252,9 @@ static int hpfs_mknod(struct mnt_idmap *idmap, struct inode *dir,
> hpfs_init_inode(result);
> result->i_ino = fno;
> hpfs_i(result)->i_parent_dir = dir->i_ino;
> - result->i_ctime.tv_sec = result->i_mtime.tv_sec = result->i_atime.tv_sec = local_to_gmt(dir->i_sb, le32_to_cpu(dee.creation_date));
> - result->i_ctime.tv_nsec = 0;
> + inode_set_ctime(result,
> + result->i_mtime.tv_sec = result->i_atime.tv_sec = local_to_gmt(dir->i_sb, le32_to_cpu(dee.creation_date)),
> + 0);
> result->i_mtime.tv_nsec = 0;
> result->i_atime.tv_nsec = 0;
> hpfs_i(result)->i_ea_size = 0;
> @@ -326,8 +329,9 @@ static int hpfs_symlink(struct mnt_idmap *idmap, struct inode *dir,
> result->i_ino = fno;
> hpfs_init_inode(result);
> hpfs_i(result)->i_parent_dir = dir->i_ino;
> - result->i_ctime.tv_sec = result->i_mtime.tv_sec = result->i_atime.tv_sec = local_to_gmt(dir->i_sb, le32_to_cpu(dee.creation_date));
> - result->i_ctime.tv_nsec = 0;
> + inode_set_ctime(result,
> + result->i_mtime.tv_sec = result->i_atime.tv_sec = local_to_gmt(dir->i_sb, le32_to_cpu(dee.creation_date)),
> + 0);
> result->i_mtime.tv_nsec = 0;
> result->i_atime.tv_nsec = 0;
> hpfs_i(result)->i_ea_size = 0;

And in above two as well.

Honza
--
Jan Kara <[email protected]>
SUSE Labs, CR

2023-07-06 13:19:47

by Jeff Layton

[permalink] [raw]
Subject: Re: [PATCH v2 51/92] hpfs: convert to ctime accessor functions

On Thu, 2023-07-06 at 14:47 +0200, Jan Kara wrote:
> On Wed 05-07-23 15:01:16, 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 <[email protected]>
>
> ...
>
> > diff --git a/fs/hpfs/namei.c b/fs/hpfs/namei.c
> > index 69fb40b2c99a..36babb78b510 100644
> > --- a/fs/hpfs/namei.c
> > +++ b/fs/hpfs/namei.c
> > @@ -13,10 +13,10 @@ static void hpfs_update_directory_times(struct inode *dir)
> > {
> > time64_t t = local_to_gmt(dir->i_sb, local_get_seconds(dir->i_sb));
> > if (t == dir->i_mtime.tv_sec &&
> > - t == dir->i_ctime.tv_sec)
> > + t == inode_get_ctime(dir).tv_sec)
> > return;
> > - dir->i_mtime.tv_sec = dir->i_ctime.tv_sec = t;
> > - dir->i_mtime.tv_nsec = dir->i_ctime.tv_nsec = 0;
> > + dir->i_mtime.tv_sec = inode_set_ctime(dir, t, 0).tv_sec;
> > + dir->i_mtime.tv_nsec = 0;
>
> Easier to read:
>
> dir->i_mtime = inode_set_ctime(dir, t, 0);
>
> > @@ -59,8 +59,9 @@ static int hpfs_mkdir(struct mnt_idmap *idmap, struct inode *dir,
> > result->i_ino = fno;
> > hpfs_i(result)->i_parent_dir = dir->i_ino;
> > hpfs_i(result)->i_dno = dno;
> > - result->i_ctime.tv_sec = result->i_mtime.tv_sec = result->i_atime.tv_sec = local_to_gmt(dir->i_sb, le32_to_cpu(dee.creation_date));
> > - result->i_ctime.tv_nsec = 0;
> > + inode_set_ctime(result,
> > + result->i_mtime.tv_sec = result->i_atime.tv_sec = local_to_gmt(dir->i_sb, le32_to_cpu(dee.creation_date)),
> > + 0);
> > result->i_mtime.tv_nsec = 0;
> > result->i_atime.tv_nsec = 0;
>
> Here also:
> result->i_mtime = result->i_atime = inode_set_ctime(result,
> local_to_gmt(dir->i_sb, le32_to_cpu(dee.creation_date)), 0)
>
> > @@ -167,8 +168,9 @@ static int hpfs_create(struct mnt_idmap *idmap, struct inode *dir,
> > result->i_fop = &hpfs_file_ops;
> > set_nlink(result, 1);
> > hpfs_i(result)->i_parent_dir = dir->i_ino;
> > - result->i_ctime.tv_sec = result->i_mtime.tv_sec = result->i_atime.tv_sec = local_to_gmt(dir->i_sb, le32_to_cpu(dee.creation_date));
> > - result->i_ctime.tv_nsec = 0;
> > + inode_set_ctime(result,
> > + result->i_mtime.tv_sec = result->i_atime.tv_sec = local_to_gmt(dir->i_sb, le32_to_cpu(dee.creation_date)),
> > + 0);
> > result->i_mtime.tv_nsec = 0;
> > result->i_atime.tv_nsec = 0;
>
> And here exactly the same.
>
> > @@ -250,8 +252,9 @@ static int hpfs_mknod(struct mnt_idmap *idmap, struct inode *dir,
> > hpfs_init_inode(result);
> > result->i_ino = fno;
> > hpfs_i(result)->i_parent_dir = dir->i_ino;
> > - result->i_ctime.tv_sec = result->i_mtime.tv_sec = result->i_atime.tv_sec = local_to_gmt(dir->i_sb, le32_to_cpu(dee.creation_date));
> > - result->i_ctime.tv_nsec = 0;
> > + inode_set_ctime(result,
> > + result->i_mtime.tv_sec = result->i_atime.tv_sec = local_to_gmt(dir->i_sb, le32_to_cpu(dee.creation_date)),
> > + 0);
> > result->i_mtime.tv_nsec = 0;
> > result->i_atime.tv_nsec = 0;
> > hpfs_i(result)->i_ea_size = 0;
> > @@ -326,8 +329,9 @@ static int hpfs_symlink(struct mnt_idmap *idmap, struct inode *dir,
> > result->i_ino = fno;
> > hpfs_init_inode(result);
> > hpfs_i(result)->i_parent_dir = dir->i_ino;
> > - result->i_ctime.tv_sec = result->i_mtime.tv_sec = result->i_atime.tv_sec = local_to_gmt(dir->i_sb, le32_to_cpu(dee.creation_date));
> > - result->i_ctime.tv_nsec = 0;
> > + inode_set_ctime(result,
> > + result->i_mtime.tv_sec = result->i_atime.tv_sec = local_to_gmt(dir->i_sb, le32_to_cpu(dee.creation_date)),
> > + 0);
> > result->i_mtime.tv_nsec = 0;
> > result->i_atime.tv_nsec = 0;
> > hpfs_i(result)->i_ea_size = 0;
>
> And in above two as well.
>
> Honza

Thanks. I fixed those up in my tree.
--
Jeff Layton <[email protected]>