On Sat, 2023-04-08 at 19:42 +0300, Amir Goldstein wrote: > Instead of open coded instances, because we are about to split > the two apart. > > Signed-off-by: Amir Goldstein <amir73il@xxxxxxxxx> Reviewed-by: Alexander Larsson <alexl@xxxxxxxxxx> > --- > fs/overlayfs/export.c | 2 +- > fs/overlayfs/namei.c | 8 ++++---- > fs/overlayfs/ovl_entry.h | 5 +++++ > fs/overlayfs/super.c | 2 +- > fs/overlayfs/util.c | 20 ++++++++++---------- > 5 files changed, 21 insertions(+), 16 deletions(-) > > diff --git a/fs/overlayfs/export.c b/fs/overlayfs/export.c > index 5c36fb3a7bab..2cfdfcca5659 100644 > --- a/fs/overlayfs/export.c > +++ b/fs/overlayfs/export.c > @@ -341,7 +341,7 @@ static struct dentry *ovl_obtain_alias(struct > super_block *sb, > /* Get the upper or lower dentry in stack whose on layer @idx */ > static struct dentry *ovl_dentry_real_at(struct dentry *dentry, int > idx) > { > - struct ovl_entry *oe = dentry->d_fsdata; > + struct ovl_entry *oe = OVL_E(dentry); > int i; > > if (!idx) > diff --git a/fs/overlayfs/namei.c b/fs/overlayfs/namei.c > index 100a492d2b2a..e66352f19755 100644 > --- a/fs/overlayfs/namei.c > +++ b/fs/overlayfs/namei.c > @@ -790,7 +790,7 @@ struct dentry *ovl_lookup_index(struct ovl_fs > *ofs, struct dentry *upper, > */ > int ovl_path_next(int idx, struct dentry *dentry, struct path *path) > { > - struct ovl_entry *oe = dentry->d_fsdata; > + struct ovl_entry *oe = OVL_E(dentry); > > BUG_ON(idx < 0); > if (idx == 0) { > @@ -833,8 +833,8 @@ struct dentry *ovl_lookup(struct inode *dir, > struct dentry *dentry, > struct ovl_entry *oe; > const struct cred *old_cred; > struct ovl_fs *ofs = dentry->d_sb->s_fs_info; > - struct ovl_entry *poe = dentry->d_parent->d_fsdata; > - struct ovl_entry *roe = dentry->d_sb->s_root->d_fsdata; > + struct ovl_entry *poe = OVL_E(dentry->d_parent); > + struct ovl_entry *roe = OVL_E(dentry->d_sb->s_root); > struct ovl_path *stack = NULL, *origin_path = NULL; > struct dentry *upperdir, *upperdentry = NULL; > struct dentry *origin = NULL; > @@ -1157,7 +1157,7 @@ struct dentry *ovl_lookup(struct inode *dir, > struct dentry *dentry, > > bool ovl_lower_positive(struct dentry *dentry) > { > - struct ovl_entry *poe = dentry->d_parent->d_fsdata; > + struct ovl_entry *poe = OVL_E(dentry->d_parent); > const struct qstr *name = &dentry->d_name; > const struct cred *old_cred; > unsigned int i; > diff --git a/fs/overlayfs/ovl_entry.h b/fs/overlayfs/ovl_entry.h > index fd11fe6d6d45..4c7312126b3b 100644 > --- a/fs/overlayfs/ovl_entry.h > +++ b/fs/overlayfs/ovl_entry.h > @@ -124,6 +124,11 @@ static inline struct ovl_entry *OVL_E(struct > dentry *dentry) > return (struct ovl_entry *) dentry->d_fsdata; > } > > +static inline unsigned long *OVL_E_FLAGS(struct dentry *dentry) > +{ > + return &OVL_E(dentry)->flags; > +} > + > struct ovl_inode { > union { > struct ovl_dir_cache *cache; /* directory */ > diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c > index 49b6956468f9..108824b359e6 100644 > --- a/fs/overlayfs/super.c > +++ b/fs/overlayfs/super.c > @@ -138,7 +138,7 @@ static int ovl_revalidate_real(struct dentry *d, > unsigned int flags, bool weak) > static int ovl_dentry_revalidate_common(struct dentry *dentry, > unsigned int flags, bool > weak) > { > - struct ovl_entry *oe = dentry->d_fsdata; > + struct ovl_entry *oe = OVL_E(dentry); > struct inode *inode = d_inode_rcu(dentry); > struct dentry *upper; > unsigned int i; > diff --git a/fs/overlayfs/util.c b/fs/overlayfs/util.c > index 6a0652bd51f2..01e6b4ec3074 100644 > --- a/fs/overlayfs/util.c > +++ b/fs/overlayfs/util.c > @@ -143,7 +143,7 @@ bool ovl_dentry_weird(struct dentry *dentry) > > enum ovl_path_type ovl_path_type(struct dentry *dentry) > { > - struct ovl_entry *oe = dentry->d_fsdata; > + struct ovl_entry *oe = OVL_E(dentry); > enum ovl_path_type type = 0; > > if (ovl_dentry_upper(dentry)) { > @@ -176,7 +176,7 @@ void ovl_path_upper(struct dentry *dentry, struct > path *path) > > void ovl_path_lower(struct dentry *dentry, struct path *path) > { > - struct ovl_entry *oe = dentry->d_fsdata; > + struct ovl_entry *oe = OVL_E(dentry); > > if (oe->numlower) { > path->mnt = oe->lowerstack[0].layer->mnt; > @@ -188,7 +188,7 @@ void ovl_path_lower(struct dentry *dentry, struct > path *path) > > void ovl_path_lowerdata(struct dentry *dentry, struct path *path) > { > - struct ovl_entry *oe = dentry->d_fsdata; > + struct ovl_entry *oe = OVL_E(dentry); > > if (oe->numlower) { > path->mnt = oe->lowerstack[oe->numlower - 1].layer- > >mnt; > @@ -231,14 +231,14 @@ struct dentry *ovl_dentry_upper(struct dentry > *dentry) > > struct dentry *ovl_dentry_lower(struct dentry *dentry) > { > - struct ovl_entry *oe = dentry->d_fsdata; > + struct ovl_entry *oe = OVL_E(dentry); > > return oe->numlower ? oe->lowerstack[0].dentry : NULL; > } > > const struct ovl_layer *ovl_layer_lower(struct dentry *dentry) > { > - struct ovl_entry *oe = dentry->d_fsdata; > + struct ovl_entry *oe = OVL_E(dentry); > > return oe->numlower ? oe->lowerstack[0].layer : NULL; > } > @@ -251,7 +251,7 @@ const struct ovl_layer *ovl_layer_lower(struct > dentry *dentry) > */ > struct dentry *ovl_dentry_lowerdata(struct dentry *dentry) > { > - struct ovl_entry *oe = dentry->d_fsdata; > + struct ovl_entry *oe = OVL_E(dentry); > > return oe->numlower ? oe->lowerstack[oe->numlower - 1].dentry > : NULL; > } > @@ -329,17 +329,17 @@ void ovl_set_dir_cache(struct inode *inode, > struct ovl_dir_cache *cache) > > void ovl_dentry_set_flag(unsigned long flag, struct dentry *dentry) > { > - set_bit(flag, &OVL_E(dentry)->flags); > + set_bit(flag, OVL_E_FLAGS(dentry)); > } > > void ovl_dentry_clear_flag(unsigned long flag, struct dentry > *dentry) > { > - clear_bit(flag, &OVL_E(dentry)->flags); > + clear_bit(flag, OVL_E_FLAGS(dentry)); > } > > bool ovl_dentry_test_flag(unsigned long flag, struct dentry *dentry) > { > - return test_bit(flag, &OVL_E(dentry)->flags); > + return test_bit(flag, OVL_E_FLAGS(dentry)); > } > > bool ovl_dentry_is_opaque(struct dentry *dentry) > @@ -1015,7 +1015,7 @@ int ovl_check_metacopy_xattr(struct ovl_fs > *ofs, const struct path *path) > > bool ovl_is_metacopy_dentry(struct dentry *dentry) > { > - struct ovl_entry *oe = dentry->d_fsdata; > + struct ovl_entry *oe = OVL_E(dentry); > > if (!d_is_reg(dentry)) > return false; -- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- =-=-= Alexander Larsson Red Hat, Inc alexl@xxxxxxxxxx alexander.larsson@xxxxxxxxx He's a one-legged devious stage actor for the 21st century. She's a mistrustful blonde research scientist prone to fits of savage, blood-crazed rage. They fight crime!