]> git.proxmox.com Git - mirror_zfs.git/commitdiff
change how d_alias is replaced by du.d_alias
authorGian-Carlo DeFazio <defaziogiancarlo@users.noreply.github.com>
Thu, 12 Jan 2023 18:14:04 +0000 (10:14 -0800)
committerTony Hutter <hutter2@llnl.gov>
Thu, 19 Jan 2023 20:50:42 +0000 (12:50 -0800)
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 <behlendorf1@llnl.gov>
Signed-off-by: Gian-Carlo DeFazio <defazio1@llnl.gov>
Closes #14377

include/os/linux/kernel/linux/dcache_compat.h

index e2aca16297352b8bb8daa93084aa822800aa2cd1..c90135fd38189b2daffa66abda0200dee9a4d874 100644 (file)
 #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
@@ -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);