2023-07-05 19:09:15

by Jeff Layton

[permalink] [raw]
Subject: [PATCH v2 57/92] nfs: 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/nfs/callback_proc.c | 2 +-
fs/nfs/fscache.h | 4 ++--
fs/nfs/inode.c | 20 ++++++++++----------
3 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/fs/nfs/callback_proc.c b/fs/nfs/callback_proc.c
index c1eda73254e1..6bed1394d748 100644
--- a/fs/nfs/callback_proc.c
+++ b/fs/nfs/callback_proc.c
@@ -59,7 +59,7 @@ __be32 nfs4_callback_getattr(void *argp, void *resp,
res->change_attr = delegation->change_attr;
if (nfs_have_writebacks(inode))
res->change_attr++;
- res->ctime = inode->i_ctime;
+ res->ctime = inode_get_ctime(inode);
res->mtime = inode->i_mtime;
res->bitmap[0] = (FATTR4_WORD0_CHANGE|FATTR4_WORD0_SIZE) &
args->bitmap[0];
diff --git a/fs/nfs/fscache.h b/fs/nfs/fscache.h
index e1706e736c64..2dc64454492b 100644
--- a/fs/nfs/fscache.h
+++ b/fs/nfs/fscache.h
@@ -116,8 +116,8 @@ static inline void nfs_fscache_update_auxdata(struct nfs_fscache_inode_auxdata *
memset(auxdata, 0, sizeof(*auxdata));
auxdata->mtime_sec = inode->i_mtime.tv_sec;
auxdata->mtime_nsec = inode->i_mtime.tv_nsec;
- auxdata->ctime_sec = inode->i_ctime.tv_sec;
- auxdata->ctime_nsec = inode->i_ctime.tv_nsec;
+ auxdata->ctime_sec = inode_get_ctime(inode).tv_sec;
+ auxdata->ctime_nsec = inode_get_ctime(inode).tv_nsec;

if (NFS_SERVER(inode)->nfs_client->rpc_ops->version == 4)
auxdata->change_attr = inode_peek_iversion_raw(inode);
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c
index 8172dd4135a1..1283fdfa4b0a 100644
--- a/fs/nfs/inode.c
+++ b/fs/nfs/inode.c
@@ -514,7 +514,7 @@ nfs_fhget(struct super_block *sb, struct nfs_fh *fh, struct nfs_fattr *fattr)

memset(&inode->i_atime, 0, sizeof(inode->i_atime));
memset(&inode->i_mtime, 0, sizeof(inode->i_mtime));
- memset(&inode->i_ctime, 0, sizeof(inode->i_ctime));
+ inode_set_ctime(inode, 0, 0);
inode_set_iversion_raw(inode, 0);
inode->i_size = 0;
clear_nlink(inode);
@@ -535,7 +535,7 @@ nfs_fhget(struct super_block *sb, struct nfs_fh *fh, struct nfs_fattr *fattr)
else if (fattr_supported & NFS_ATTR_FATTR_MTIME)
nfs_set_cache_invalid(inode, NFS_INO_INVALID_MTIME);
if (fattr->valid & NFS_ATTR_FATTR_CTIME)
- inode->i_ctime = fattr->ctime;
+ inode_set_ctime_to_ts(inode, fattr->ctime);
else if (fattr_supported & NFS_ATTR_FATTR_CTIME)
nfs_set_cache_invalid(inode, NFS_INO_INVALID_CTIME);
if (fattr->valid & NFS_ATTR_FATTR_CHANGE)
@@ -731,7 +731,7 @@ void nfs_setattr_update_inode(struct inode *inode, struct iattr *attr,
if ((attr->ia_valid & ATTR_GID) != 0)
inode->i_gid = attr->ia_gid;
if (fattr->valid & NFS_ATTR_FATTR_CTIME)
- inode->i_ctime = fattr->ctime;
+ inode_set_ctime_to_ts(inode, fattr->ctime);
else
nfs_set_cache_invalid(inode, NFS_INO_INVALID_CHANGE
| NFS_INO_INVALID_CTIME);
@@ -749,7 +749,7 @@ void nfs_setattr_update_inode(struct inode *inode, struct iattr *attr,
nfs_set_cache_invalid(inode, NFS_INO_INVALID_ATIME);

if (fattr->valid & NFS_ATTR_FATTR_CTIME)
- inode->i_ctime = fattr->ctime;
+ inode_set_ctime_to_ts(inode, fattr->ctime);
else
nfs_set_cache_invalid(inode, NFS_INO_INVALID_CHANGE
| NFS_INO_INVALID_CTIME);
@@ -765,7 +765,7 @@ void nfs_setattr_update_inode(struct inode *inode, struct iattr *attr,
nfs_set_cache_invalid(inode, NFS_INO_INVALID_MTIME);

if (fattr->valid & NFS_ATTR_FATTR_CTIME)
- inode->i_ctime = fattr->ctime;
+ inode_set_ctime_to_ts(inode, fattr->ctime);
else
nfs_set_cache_invalid(inode, NFS_INO_INVALID_CHANGE
| NFS_INO_INVALID_CTIME);
@@ -1444,11 +1444,11 @@ static void nfs_wcc_update_inode(struct inode *inode, struct nfs_fattr *fattr)
nfs_set_cache_invalid(inode, NFS_INO_INVALID_XATTR);
}
/* If we have atomic WCC data, we may update some attributes */
- ts = inode->i_ctime;
+ ts = inode_get_ctime(inode);
if ((fattr->valid & NFS_ATTR_FATTR_PRECTIME)
&& (fattr->valid & NFS_ATTR_FATTR_CTIME)
&& timespec64_equal(&ts, &fattr->pre_ctime)) {
- inode->i_ctime = fattr->ctime;
+ inode_set_ctime_to_ts(inode, fattr->ctime);
}

ts = inode->i_mtime;
@@ -1510,7 +1510,7 @@ static int nfs_check_inode_attributes(struct inode *inode, struct nfs_fattr *fat
if ((fattr->valid & NFS_ATTR_FATTR_MTIME) && !timespec64_equal(&ts, &fattr->mtime))
invalid |= NFS_INO_INVALID_MTIME;

- ts = inode->i_ctime;
+ ts = inode_get_ctime(inode);
if ((fattr->valid & NFS_ATTR_FATTR_CTIME) && !timespec64_equal(&ts, &fattr->ctime))
invalid |= NFS_INO_INVALID_CTIME;

@@ -1997,7 +1997,7 @@ int nfs_post_op_update_inode_force_wcc_locked(struct inode *inode, struct nfs_fa
}
if ((fattr->valid & NFS_ATTR_FATTR_CTIME) != 0 &&
(fattr->valid & NFS_ATTR_FATTR_PRECTIME) == 0) {
- fattr->pre_ctime = inode->i_ctime;
+ fattr->pre_ctime = inode_get_ctime(inode);
fattr->valid |= NFS_ATTR_FATTR_PRECTIME;
}
if ((fattr->valid & NFS_ATTR_FATTR_MTIME) != 0 &&
@@ -2190,7 +2190,7 @@ static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr)
save_cache_validity & NFS_INO_INVALID_MTIME;

if (fattr->valid & NFS_ATTR_FATTR_CTIME)
- inode->i_ctime = fattr->ctime;
+ inode_set_ctime_to_ts(inode, fattr->ctime);
else if (fattr_supported & NFS_ATTR_FATTR_CTIME)
nfsi->cache_validity |=
save_cache_validity & NFS_INO_INVALID_CTIME;
--
2.41.0



2023-07-06 13:40:48

by Jan Kara

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

On Wed 05-07-23 15:01:22, 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]>

Looks good. Feel free to add:

Reviewed-by: Jan Kara <[email protected]>

Honza

> ---
> fs/nfs/callback_proc.c | 2 +-
> fs/nfs/fscache.h | 4 ++--
> fs/nfs/inode.c | 20 ++++++++++----------
> 3 files changed, 13 insertions(+), 13 deletions(-)
>
> diff --git a/fs/nfs/callback_proc.c b/fs/nfs/callback_proc.c
> index c1eda73254e1..6bed1394d748 100644
> --- a/fs/nfs/callback_proc.c
> +++ b/fs/nfs/callback_proc.c
> @@ -59,7 +59,7 @@ __be32 nfs4_callback_getattr(void *argp, void *resp,
> res->change_attr = delegation->change_attr;
> if (nfs_have_writebacks(inode))
> res->change_attr++;
> - res->ctime = inode->i_ctime;
> + res->ctime = inode_get_ctime(inode);
> res->mtime = inode->i_mtime;
> res->bitmap[0] = (FATTR4_WORD0_CHANGE|FATTR4_WORD0_SIZE) &
> args->bitmap[0];
> diff --git a/fs/nfs/fscache.h b/fs/nfs/fscache.h
> index e1706e736c64..2dc64454492b 100644
> --- a/fs/nfs/fscache.h
> +++ b/fs/nfs/fscache.h
> @@ -116,8 +116,8 @@ static inline void nfs_fscache_update_auxdata(struct nfs_fscache_inode_auxdata *
> memset(auxdata, 0, sizeof(*auxdata));
> auxdata->mtime_sec = inode->i_mtime.tv_sec;
> auxdata->mtime_nsec = inode->i_mtime.tv_nsec;
> - auxdata->ctime_sec = inode->i_ctime.tv_sec;
> - auxdata->ctime_nsec = inode->i_ctime.tv_nsec;
> + auxdata->ctime_sec = inode_get_ctime(inode).tv_sec;
> + auxdata->ctime_nsec = inode_get_ctime(inode).tv_nsec;
>
> if (NFS_SERVER(inode)->nfs_client->rpc_ops->version == 4)
> auxdata->change_attr = inode_peek_iversion_raw(inode);
> diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c
> index 8172dd4135a1..1283fdfa4b0a 100644
> --- a/fs/nfs/inode.c
> +++ b/fs/nfs/inode.c
> @@ -514,7 +514,7 @@ nfs_fhget(struct super_block *sb, struct nfs_fh *fh, struct nfs_fattr *fattr)
>
> memset(&inode->i_atime, 0, sizeof(inode->i_atime));
> memset(&inode->i_mtime, 0, sizeof(inode->i_mtime));
> - memset(&inode->i_ctime, 0, sizeof(inode->i_ctime));
> + inode_set_ctime(inode, 0, 0);
> inode_set_iversion_raw(inode, 0);
> inode->i_size = 0;
> clear_nlink(inode);
> @@ -535,7 +535,7 @@ nfs_fhget(struct super_block *sb, struct nfs_fh *fh, struct nfs_fattr *fattr)
> else if (fattr_supported & NFS_ATTR_FATTR_MTIME)
> nfs_set_cache_invalid(inode, NFS_INO_INVALID_MTIME);
> if (fattr->valid & NFS_ATTR_FATTR_CTIME)
> - inode->i_ctime = fattr->ctime;
> + inode_set_ctime_to_ts(inode, fattr->ctime);
> else if (fattr_supported & NFS_ATTR_FATTR_CTIME)
> nfs_set_cache_invalid(inode, NFS_INO_INVALID_CTIME);
> if (fattr->valid & NFS_ATTR_FATTR_CHANGE)
> @@ -731,7 +731,7 @@ void nfs_setattr_update_inode(struct inode *inode, struct iattr *attr,
> if ((attr->ia_valid & ATTR_GID) != 0)
> inode->i_gid = attr->ia_gid;
> if (fattr->valid & NFS_ATTR_FATTR_CTIME)
> - inode->i_ctime = fattr->ctime;
> + inode_set_ctime_to_ts(inode, fattr->ctime);
> else
> nfs_set_cache_invalid(inode, NFS_INO_INVALID_CHANGE
> | NFS_INO_INVALID_CTIME);
> @@ -749,7 +749,7 @@ void nfs_setattr_update_inode(struct inode *inode, struct iattr *attr,
> nfs_set_cache_invalid(inode, NFS_INO_INVALID_ATIME);
>
> if (fattr->valid & NFS_ATTR_FATTR_CTIME)
> - inode->i_ctime = fattr->ctime;
> + inode_set_ctime_to_ts(inode, fattr->ctime);
> else
> nfs_set_cache_invalid(inode, NFS_INO_INVALID_CHANGE
> | NFS_INO_INVALID_CTIME);
> @@ -765,7 +765,7 @@ void nfs_setattr_update_inode(struct inode *inode, struct iattr *attr,
> nfs_set_cache_invalid(inode, NFS_INO_INVALID_MTIME);
>
> if (fattr->valid & NFS_ATTR_FATTR_CTIME)
> - inode->i_ctime = fattr->ctime;
> + inode_set_ctime_to_ts(inode, fattr->ctime);
> else
> nfs_set_cache_invalid(inode, NFS_INO_INVALID_CHANGE
> | NFS_INO_INVALID_CTIME);
> @@ -1444,11 +1444,11 @@ static void nfs_wcc_update_inode(struct inode *inode, struct nfs_fattr *fattr)
> nfs_set_cache_invalid(inode, NFS_INO_INVALID_XATTR);
> }
> /* If we have atomic WCC data, we may update some attributes */
> - ts = inode->i_ctime;
> + ts = inode_get_ctime(inode);
> if ((fattr->valid & NFS_ATTR_FATTR_PRECTIME)
> && (fattr->valid & NFS_ATTR_FATTR_CTIME)
> && timespec64_equal(&ts, &fattr->pre_ctime)) {
> - inode->i_ctime = fattr->ctime;
> + inode_set_ctime_to_ts(inode, fattr->ctime);
> }
>
> ts = inode->i_mtime;
> @@ -1510,7 +1510,7 @@ static int nfs_check_inode_attributes(struct inode *inode, struct nfs_fattr *fat
> if ((fattr->valid & NFS_ATTR_FATTR_MTIME) && !timespec64_equal(&ts, &fattr->mtime))
> invalid |= NFS_INO_INVALID_MTIME;
>
> - ts = inode->i_ctime;
> + ts = inode_get_ctime(inode);
> if ((fattr->valid & NFS_ATTR_FATTR_CTIME) && !timespec64_equal(&ts, &fattr->ctime))
> invalid |= NFS_INO_INVALID_CTIME;
>
> @@ -1997,7 +1997,7 @@ int nfs_post_op_update_inode_force_wcc_locked(struct inode *inode, struct nfs_fa
> }
> if ((fattr->valid & NFS_ATTR_FATTR_CTIME) != 0 &&
> (fattr->valid & NFS_ATTR_FATTR_PRECTIME) == 0) {
> - fattr->pre_ctime = inode->i_ctime;
> + fattr->pre_ctime = inode_get_ctime(inode);
> fattr->valid |= NFS_ATTR_FATTR_PRECTIME;
> }
> if ((fattr->valid & NFS_ATTR_FATTR_MTIME) != 0 &&
> @@ -2190,7 +2190,7 @@ static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr)
> save_cache_validity & NFS_INO_INVALID_MTIME;
>
> if (fattr->valid & NFS_ATTR_FATTR_CTIME)
> - inode->i_ctime = fattr->ctime;
> + inode_set_ctime_to_ts(inode, fattr->ctime);
> else if (fattr_supported & NFS_ATTR_FATTR_CTIME)
> nfsi->cache_validity |=
> save_cache_validity & NFS_INO_INVALID_CTIME;
> --
> 2.41.0
>
--
Jan Kara <[email protected]>
SUSE Labs, CR