In 3.9 hlist_for_each_entry use 3 args since commit
commit
b67bfe0d42cac56c512dd5da4b1b347a23f4b70a
Author: Sasha Levin <sasha.levin@oracle.com>
Date: Wed Feb 27 17:06:00 2013 -0800
hlist: drop the node parameter from iterators
Signed-off-by: Alexey Shvetsov <alexxy@gentoo.org>
Signed-off-by: James Simmons <uja.ornl@gmail.com>
Change-Id: I8f38d562607de21771b03575e37cc0498867a570
Reviewed-on: http://review.whamcloud.com/5898
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Yang Sheng <yang.sheng@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
#define cfs_hlist_for_each(pos, head) hlist_for_each(pos, head)
#define cfs_hlist_for_each_safe(pos, n, head) \
hlist_for_each_safe(pos, n, head)
#define cfs_hlist_for_each(pos, head) hlist_for_each(pos, head)
#define cfs_hlist_for_each_safe(pos, n, head) \
hlist_for_each_safe(pos, n, head)
+#ifdef HAVE_HLIST_FOR_EACH_3ARG
+#define cfs_hlist_for_each_entry(tpos, pos, head, member) \
+ pos = NULL; hlist_for_each_entry(tpos, head, member)
+#else
#define cfs_hlist_for_each_entry(tpos, pos, head, member) \
hlist_for_each_entry(tpos, pos, head, member)
#define cfs_hlist_for_each_entry(tpos, pos, head, member) \
hlist_for_each_entry(tpos, pos, head, member)
#define cfs_hlist_for_each_entry_continue(tpos, pos, member) \
hlist_for_each_entry_continue(tpos, pos, member)
#define cfs_hlist_for_each_entry_from(tpos, pos, member) \
hlist_for_each_entry_from(tpos, pos, member)
#define cfs_hlist_for_each_entry_continue(tpos, pos, member) \
hlist_for_each_entry_continue(tpos, pos, member)
#define cfs_hlist_for_each_entry_from(tpos, pos, member) \
hlist_for_each_entry_from(tpos, pos, member)
+#ifdef HAVE_HLIST_FOR_EACH_3ARG
+#define cfs_hlist_for_each_entry_safe(tpos, pos, n, head, member) \
+ pos = NULL; hlist_for_each_entry_safe(tpos, n, head, member)
+#else
#define cfs_hlist_for_each_entry_safe(tpos, pos, n, head, member) \
hlist_for_each_entry_safe(tpos, pos, n, head, member)
#define cfs_hlist_for_each_entry_safe(tpos, pos, n, head, member) \
hlist_for_each_entry_safe(tpos, pos, n, head, member)
#define CFS_HLIST_HEAD_INIT HLIST_HEAD_INIT
#define CFS_HLIST_HEAD(n) HLIST_HEAD(n)
#define CFS_HLIST_HEAD_INIT HLIST_HEAD_INIT
#define CFS_HLIST_HEAD(n) HLIST_HEAD(n)
+# 3.9 uses hlist_for_each_entry with 3 args
+# b67bfe0d42cac56c512dd5da4b1b347a23f4b70a
+#
+AC_DEFUN([LC_HAVE_HLIST_FOR_EACH_3ARG],
+[AC_MSG_CHECKING([if hlist_for_each_entry has 3 args])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/list.h>
+ #include <linux/fs.h>
+],[
+ struct inode *inode;
+ struct dentry *dentry;
+ hlist_for_each_entry(dentry, &inode->i_dentry, d_alias) {
+ continue;
+ }
+],[
+ AC_DEFINE(HAVE_HLIST_FOR_EACH_3ARG, 1, [3 args])
+ AC_MSG_RESULT([yes])
+],[
+ AC_MSG_RESULT([no])
+])
+])
+
+#
# LC_PROG_LINUX
#
# Lustre linux kernel checks
# LC_PROG_LINUX
#
# Lustre linux kernel checks
# 3.7
LC_HAVE_POSIXACL_USER_NS
# 3.7
LC_HAVE_POSIXACL_USER_NS
+
+ # 3.9
+ LC_HAVE_HLIST_FOR_EACH_3ARG
+
#
if test x$enable_server = xyes ; then
AC_DEFINE(HAVE_SERVER_SUPPORT, 1, [support server])
#
if test x$enable_server = xyes ; then
AC_DEFINE(HAVE_SERVER_SUPPORT, 1, [support server])
#define ll_d_hlist_empty(list) hlist_empty(list)
#define ll_d_hlist_entry(ptr, type, name) hlist_entry(ptr.first, type, name)
#define ll_d_hlist_for_each(tmp, i_dentry) hlist_for_each(tmp, i_dentry)
#define ll_d_hlist_empty(list) hlist_empty(list)
#define ll_d_hlist_entry(ptr, type, name) hlist_entry(ptr.first, type, name)
#define ll_d_hlist_for_each(tmp, i_dentry) hlist_for_each(tmp, i_dentry)
+#ifdef HAVE_HLIST_FOR_EACH_3ARG
+#define ll_d_hlist_for_each_entry(dentry, p, i_dentry, alias) \
+ p = NULL; hlist_for_each_entry(dentry, i_dentry, alias)
+#else
#define ll_d_hlist_for_each_entry(dentry, p, i_dentry, alias) \
hlist_for_each_entry(dentry, p, i_dentry, alias)
#define ll_d_hlist_for_each_entry(dentry, p, i_dentry, alias) \
hlist_for_each_entry(dentry, p, i_dentry, alias)
#else
#define ll_d_hlist_node list_head
#define ll_d_hlist_empty(list) list_empty(list)
#else
#define ll_d_hlist_node list_head
#define ll_d_hlist_empty(list) list_empty(list)