hlist iterators have been reworked to not require a temporary
node parameter.
Reviewed-on: http://gerrit.openafs.org/9403
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>
Reviewed-by: Derrick Brashear <shadow@your-file-system.com>
(cherry picked from commit
9cfd7f768ca350d3b750e89e7ddb186bdad6f726)
Change-Id: I47df8894467f4bb1c60cf239ec0ce0a4d6ca29aa
Reviewed-on: http://gerrit.openafs.org/9639
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@your-file-system.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
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
{
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
# 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
])
+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 <linux/list.h>
+ #include <linux/fs.h>],
+ [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],