]> git.proxmox.com Git - mirror_zfs.git/blame - config/kernel-dentry-operations.m4
Fix zpool on zvol deadlock
[mirror_zfs.git] / config / kernel-dentry-operations.m4
CommitLineData
f1a05fa1
NB
1dnl #
2dnl # 3.6 API change
3dnl #
4AC_DEFUN([ZFS_AC_KERNEL_D_REVALIDATE_NAMEIDATA], [
5 AC_MSG_CHECKING([whether dops->d_revalidate() takes struct nameidata])
6 ZFS_LINUX_TRY_COMPILE([
7 #include <linux/dcache.h>
8 ],[
9 int (*revalidate) (struct dentry *, struct nameidata *) = NULL;
10 struct dentry_operations dops __attribute__ ((unused)) = {
11 .d_revalidate = revalidate,
12 };
13 ],[
14 AC_MSG_RESULT(yes)
15 AC_DEFINE(HAVE_D_REVALIDATE_NAMEIDATA, 1,
16 [dops->d_revalidate() operation takes nameidata])
17 ],[
18 AC_MSG_RESULT(no)
19 ])
20])
21
22dnl #
23dnl # 2.6.30 API change
24dnl # The 'struct dentry_operations' was constified in the dentry structure.
25dnl #
26AC_DEFUN([ZFS_AC_KERNEL_CONST_DENTRY_OPERATIONS], [
27 AC_MSG_CHECKING([whether dentry uses const struct dentry_operations])
28 ZFS_LINUX_TRY_COMPILE([
29 #include <linux/dcache.h>
30
31 const struct dentry_operations test_d_op = {
32 .d_revalidate = NULL,
33 };
34 ],[
35 struct dentry d __attribute__ ((unused));
36
37 d.d_op = &test_d_op;
38 ],[
39 AC_MSG_RESULT(yes)
40 AC_DEFINE(HAVE_CONST_DENTRY_OPERATIONS, 1,
41 [dentry uses const struct dentry_operations])
42 ],[
43 AC_MSG_RESULT(no)
44 ])
45])
46
47dnl #
48dnl # 2.6.38 API change
49dnl # Added d_set_d_op() helper function.
50dnl #
51AC_DEFUN([ZFS_AC_KERNEL_D_SET_D_OP],
52 [AC_MSG_CHECKING([whether d_set_d_op() is available])
53 ZFS_LINUX_TRY_COMPILE_SYMBOL([
54 #include <linux/dcache.h>
55 ], [
56 d_set_d_op(NULL, NULL);
57 ], [d_set_d_op], [fs/dcache.c], [
58 AC_MSG_RESULT(yes)
59 AC_DEFINE(HAVE_D_SET_D_OP, 1,
60 [d_set_d_op() is available])
61 ], [
62 AC_MSG_RESULT(no)
63 ])
64])