From: Marc Dionne Date: Wed, 6 Mar 2013 01:54:50 +0000 (-0500) Subject: Linux 3.9: hlist iterator change X-Git-Tag: upstream/1.6.3^2~55 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=0671e93abcf927d48f935283682e6761a933d558;p=packages%2Fo%2Fopenafs.git Linux 3.9: hlist iterator change hlist iterators have been reworked to not require a temporary node parameter. Reviewed-on: http://gerrit.openafs.org/9403 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Reviewed-by: Derrick Brashear (cherry picked from commit 9cfd7f768ca350d3b750e89e7ddb186bdad6f726) Change-Id: I47df8894467f4bb1c60cf239ec0ce0a4d6ca29aa Reviewed-on: http://gerrit.openafs.org/9639 Tested-by: BuildBot Reviewed-by: Derrick Brashear Reviewed-by: Benjamin Kaduk Reviewed-by: Michael Meffie Reviewed-by: Stephan Wiesand --- diff --git a/acinclude.m4 b/acinclude.m4 index 4223bb187..6f5bc8d5e 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -991,6 +991,7 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*) LINUX_KMAP_ATOMIC_TAKES_NO_KM_TYPE LINUX_DENTRY_OPEN_TAKES_PATH LINUX_D_ALIAS_IS_HLIST + LINUX_HLIST_ITERATOR_NO_NODE LINUX_IOP_I_CREATE_TAKES_BOOL LINUX_DOP_D_REVALIDATE_TAKES_UNSIGNED LINUX_IOP_LOOKUP_TAKES_UNSIGNED diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c index 1366b9637..8e7dfe2c4 100644 --- a/src/afs/LINUX/osi_vnodeops.c +++ b/src/afs/LINUX/osi_vnodeops.c @@ -701,7 +701,7 @@ canonical_dentry(struct inode *ip) { struct vcache *vcp = VTOAFS(ip); struct dentry *first = NULL, *ret = NULL, *cur; -#if defined(D_ALIAS_IS_HLIST) +#if defined(D_ALIAS_IS_HLIST) && !defined(HLIST_ITERATOR_NO_NODE) struct hlist_node *p; #endif @@ -724,7 +724,11 @@ canonical_dentry(struct inode *ip) # endif #if defined(D_ALIAS_IS_HLIST) +# if defined(HLIST_ITERATOR_NO_NODE) + hlist_for_each_entry(cur, &ip->i_dentry, d_alias) { +# else hlist_for_each_entry(cur, p, &ip->i_dentry, d_alias) { +# endif #else list_for_each_entry_reverse(cur, &ip->i_dentry, d_alias) { #endif diff --git a/src/cf/linux-test4.m4 b/src/cf/linux-test4.m4 index fc0149f21..7c0a1813a 100644 --- a/src/cf/linux-test4.m4 +++ b/src/cf/linux-test4.m4 @@ -714,6 +714,21 @@ AC_DEFUN([LINUX_D_ALIAS_IS_HLIST], [ ]) +AC_DEFUN([LINUX_HLIST_ITERATOR_NO_NODE], [ + AC_CHECK_LINUX_BUILD([whether hlist iterators don't need a node parameter], + [ac_cv_linux_hlist_takes_no_node], + [#include + #include ], + [struct dentry *d = NULL, *cur; + struct inode *ip; + hlist_for_each_entry(cur, &ip->i_dentry, d_alias) { } + ], + [HLIST_ITERATOR_NO_NODE], + [define if hlist iterators don't need a node parameter], + []) +]) + + AC_DEFUN([LINUX_IOP_I_CREATE_TAKES_BOOL], [ AC_CHECK_LINUX_BUILD([whether inode_operations.create takes a bool], [ac_cv_linux_func_i_create_takes_bool],