Re: [PATCH v7 12/14] nilfs2: use the new ->i_state accessors

Jan Kara
2025-10-10T14:18:57Z

On Thu 09-10-25 09:59:26, Mateusz Guzik wrote:
> Change generated with coccinelle and fixed up by hand as appropriate.
>
> Signed-off-by: Mateusz Guzik <mjguzik@gmail.com>

Looks good. Feel free to add:

Reviewed-by: Jan Kara <jack@suse.cz>

Honza

> ---
>
> cheat sheet:
>
> If ->i_lock is held, then:
>
> state = inode->i_state => state = inode_state_read(inode)
> inode->i_state |= (I_A | I_B) => inode_state_set(inode, I_A | I_B)
> inode->i_state &= ~(I_A | I_B) => inode_state_clear(inode, I_A | I_B)
> inode->i_state = I_A | I_B => inode_state_assign(inode, I_A | I_B)
>
> If ->i_lock is not held or only held conditionally:
>
> state = inode->i_state => state = inode_state_read_once(inode)
> inode->i_state |= (I_A | I_B) => inode_state_set_raw(inode, I_A | I_B)
> inode->i_state &= ~(I_A | I_B) => inode_state_clear_raw(inode, I_A | I_B)
> inode->i_state = I_A | I_B => inode_state_assign_raw(inode, I_A | I_B)
>
> fs/nilfs2/cpfile.c | 2 +-
> fs/nilfs2/dat.c | 2 +-
> fs/nilfs2/ifile.c | 2 +-
> fs/nilfs2/inode.c | 10 +++++-----
> fs/nilfs2/sufile.c | 2 +-
> 5 files changed, 9 insertions(+), 9 deletions(-)
>
> diff --git a/fs/nilfs2/cpfile.c b/fs/nilfs2/cpfile.c
> index bcc7d76269ac..4bbdc832d7f2 100644
> --- a/fs/nilfs2/cpfile.c
> +++ b/fs/nilfs2/cpfile.c
> @@ -1148,7 +1148,7 @@ int nilfs_cpfile_read(struct super_block *sb, size_t cpsize,
> cpfile = nilfs_iget_locked(sb, NULL, NILFS_CPFILE_INO);
> if (unlikely(!cpfile))
> return -ENOMEM;
> - if (!(cpfile->i_state & I_NEW))
> + if (!(inode_state_read_once(cpfile) & I_NEW))
> goto out;
>
> err = nilfs_mdt_init(cpfile, NILFS_MDT_GFP, 0);
> diff --git a/fs/nilfs2/dat.c b/fs/nilfs2/dat.c
> index c664daba56ae..674380837ab9 100644
> --- a/fs/nilfs2/dat.c
> +++ b/fs/nilfs2/dat.c
> @@ -506,7 +506,7 @@ int nilfs_dat_read(struct super_block *sb, size_t entry_size,
> dat = nilfs_iget_locked(sb, NULL, NILFS_DAT_INO);
> if (unlikely(!dat))
> return -ENOMEM;
> - if (!(dat->i_state & I_NEW))
> + if (!(inode_state_read_once(dat) & I_NEW))
> goto out;
>
> err = nilfs_mdt_init(dat, NILFS_MDT_GFP, sizeof(*di));
> diff --git a/fs/nilfs2/ifile.c b/fs/nilfs2/ifile.c
> index c4cd4a4dedd0..99eb8a59009e 100644
> --- a/fs/nilfs2/ifile.c
> +++ b/fs/nilfs2/ifile.c
> @@ -188,7 +188,7 @@ int nilfs_ifile_read(struct super_block *sb, struct nilfs_root *root,
> ifile = nilfs_iget_locked(sb, root, NILFS_IFILE_INO);
> if (unlikely(!ifile))
> return -ENOMEM;
> - if (!(ifile->i_state & I_NEW))
> + if (!(inode_state_read_once(ifile) & I_NEW))
> goto out;
>
> err = nilfs_mdt_init(ifile, NILFS_MDT_GFP,
> diff --git a/fs/nilfs2/inode.c b/fs/nilfs2/inode.c
> index 87ddde159f0c..51bde45d5865 100644
> --- a/fs/nilfs2/inode.c
> +++ b/fs/nilfs2/inode.c
> @@ -365,7 +365,7 @@ struct inode *nilfs_new_inode(struct inode *dir, umode_t mode)
>
> failed_after_creation:
> clear_nlink(inode);
> - if (inode->i_state & I_NEW)
> + if (inode_state_read_once(inode) & I_NEW)
> unlock_new_inode(inode);
> iput(inode); /*
> * raw_inode will be deleted through
> @@ -562,7 +562,7 @@ struct inode *nilfs_iget(struct super_block *sb, struct nilfs_root *root,
> if (unlikely(!inode))
> return ERR_PTR(-ENOMEM);
>
> - if (!(inode->i_state & I_NEW)) {
> + if (!(inode_state_read_once(inode) & I_NEW)) {
> if (!inode->i_nlink) {
> iput(inode);
> return ERR_PTR(-ESTALE);
> @@ -591,7 +591,7 @@ struct inode *nilfs_iget_for_gc(struct super_block *sb, unsigned long ino,
> inode = iget5_locked(sb, ino, nilfs_iget_test, nilfs_iget_set, &args);
> if (unlikely(!inode))
> return ERR_PTR(-ENOMEM);
> - if (!(inode->i_state & I_NEW))
> + if (!(inode_state_read_once(inode) & I_NEW))
> return inode;
>
> err = nilfs_init_gcinode(inode);
> @@ -631,7 +631,7 @@ int nilfs_attach_btree_node_cache(struct inode *inode)
> nilfs_iget_set, &args);
> if (unlikely(!btnc_inode))
> return -ENOMEM;
> - if (btnc_inode->i_state & I_NEW) {
> + if (inode_state_read_once(btnc_inode) & I_NEW) {
> nilfs_init_btnc_inode(btnc_inode);
> unlock_new_inode(btnc_inode);
> }
> @@ -686,7 +686,7 @@ struct inode *nilfs_iget_for_shadow(struct inode *inode)
> nilfs_iget_set, &args);
> if (unlikely(!s_inode))
> return ERR_PTR(-ENOMEM);
> - if (!(s_inode->i_state & I_NEW))
> + if (!(inode_state_read_once(s_inode) & I_NEW))
> return inode;
>
> NILFS_I(s_inode)->i_flags = 0;
> diff --git a/fs/nilfs2/sufile.c b/fs/nilfs2/sufile.c
> index 330f269abedf..83f93337c01b 100644
> --- a/fs/nilfs2/sufile.c
> +++ b/fs/nilfs2/sufile.c
> @@ -1226,7 +1226,7 @@ int nilfs_sufile_read(struct super_block *sb, size_t susize,
> sufile = nilfs_iget_locked(sb, NULL, NILFS_SUFILE_INO);
> if (unlikely(!sufile))
> return -ENOMEM;
> - if (!(sufile->i_state & I_NEW))
> + if (!(inode_state_read_once(sufile) & I_NEW))
> goto out;
>
> err = nilfs_mdt_init(sufile, NILFS_MDT_GFP, sizeof(*sui));
> --
> 2.34.1
>
--
Jan Kara <jack@suse.com>
SUSE Labs, CR