Skip to content

Commit

Permalink
change how d_alias is replaced by du.d_alias
Browse files Browse the repository at this point in the history
d_alias may need to be converted to du.d_alias
depending on the kernel version.
d_alias is currently in only one place in the code which
changes
"hlist_for_each_entry(dentry, &inode->i_dentry, d_alias)"
to
"hlist_for_each_entry(dentry, &inode->i_dentry, d_u.d_alias)"
as neccesary.

This effectively results in a double macro expansion
for code that uses the zfs headers but already has its
own macro for just d_alias (lustre in this case).

Remove the conditional code for hlist_for_each_entry
and have a macro for "d_alias -> du.d_alias" instead.

Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: Gian-Carlo DeFazio <[email protected]>
Closes #14377
  • Loading branch information
defaziogiancarlo authored and tonyhutter committed Jan 19, 2023
1 parent 7319a73 commit f222542
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions include/os/linux/kernel/linux/dcache_compat.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@
#define d_make_root(inode) d_alloc_root(inode)
#endif /* HAVE_D_MAKE_ROOT */

#ifdef HAVE_DENTRY_D_U_ALIASES
#define d_alias d_u.d_alias
#endif

/*
* 2.6.30 API change,
* The const keyword was added to the 'struct dentry_operations' in
Expand Down Expand Up @@ -70,11 +74,7 @@ zpl_d_drop_aliases(struct inode *inode)
{
struct dentry *dentry;
spin_lock(&inode->i_lock);
#ifdef HAVE_DENTRY_D_U_ALIASES
hlist_for_each_entry(dentry, &inode->i_dentry, d_u.d_alias) {
#else
hlist_for_each_entry(dentry, &inode->i_dentry, d_alias) {
#endif
if (!IS_ROOT(dentry) && !d_mountpoint(dentry) &&
(dentry->d_inode == inode)) {
d_drop(dentry);
Expand Down

0 comments on commit f222542

Please sign in to comment.