LINUX_DENTRY_OPEN_TAKES_PATH
LINUX_D_ALIAS_IS_HLIST
LINUX_IOP_I_CREATE_TAKES_BOOL
+ LINUX_DOP_D_REVALIDATE_TAKES_UNSIGNED
dnl If we are guaranteed that keyrings will work - that is
dnl a) The kernel has keyrings enabled
* The code here assumes that on entry the global lock is not held
*/
static int
-#ifdef DOP_REVALIDATE_TAKES_NAMEIDATA
+#if defined(DOP_REVALIDATE_TAKES_UNSIGNED)
+afs_linux_dentry_revalidate(struct dentry *dp, unsigned int flags)
+#elif defined(DOP_REVALIDATE_TAKES_NAMEIDATA)
afs_linux_dentry_revalidate(struct dentry *dp, struct nameidata *nd)
#else
afs_linux_dentry_revalidate(struct dentry *dp, int flags)
#ifdef LOOKUP_RCU
/* We don't support RCU path walking */
+# if defined(DOP_REVALIDATE_TAKES_UNSIGNED)
+ if (flags & LOOKUP_RCU)
+# else
if (nd->flags & LOOKUP_RCU)
+# endif
return -ECHILD;
#endif
[define if your iops.create takes a bool argument],
[-Werror])
])
+
+
+AC_DEFUN([LINUX_DOP_D_REVALIDATE_TAKES_UNSIGNED], [
+ AC_CHECK_LINUX_BUILD([whether dentry_operations.d_revalidate takes an unsigned int],
+ [ac_cv_linux_func_d_revalidate_takes_unsigned],
+ [#include <linux/fs.h>
+ #include <linux/namei.h>],
+ [struct dentry_operations dops;
+ int reval(struct dentry *d, unsigned int i) { return 0; };
+ dops.d_revalidate = reval;],
+ [DOP_REVALIDATE_TAKES_UNSIGNED],
+ [define if your dops.d_revalidate takes an unsigned int argument],
+ [-Werror])
+])