]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
Linux 3.9: hlist iterator change
authorMarc Dionne <marc.c.dionne@gmail.com>
Wed, 6 Mar 2013 01:54:50 +0000 (20:54 -0500)
committerStephan Wiesand <stephan.wiesand@desy.de>
Sat, 30 Mar 2013 17:47:17 +0000 (10:47 -0700)
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>
acinclude.m4
src/afs/LINUX/osi_vnodeops.c
src/cf/linux-test4.m4

index 4223bb1877823d2a71f4c84a87e46d5cf4d48f47..6f5bc8d5e337f80d0de5898962822f10ff19af41 100644 (file)
@@ -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
index 1366b9637bee3104d310f7f7c835261c08fcaa6b..8e7dfe2c40e535286e31c6ea6d5ec5a68b0dbf8a 100644 (file)
@@ -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
index fc0149f21344f67723ef83a99c7d380eed57fe26..7c0a1813ad8112aeaf83821b5bae1ff20fdb0d9f 100644 (file)
@@ -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 <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],