]>
Commit | Line | Data |
---|---|---|
608f8749 BB |
1 | dnl # |
2 | dnl # 3.4.0 API change | |
3 | dnl # Added d_make_root() to replace previous d_alloc_root() function. | |
4 | dnl # | |
5 | AC_DEFUN([ZFS_AC_KERNEL_SRC_D_MAKE_ROOT], [ | |
6 | ZFS_LINUX_TEST_SRC([d_make_root], [ | |
7 | #include <linux/dcache.h> | |
8 | ], [ | |
9 | d_make_root(NULL); | |
10 | ]) | |
11 | ]) | |
12 | ||
13 | AC_DEFUN([ZFS_AC_KERNEL_D_MAKE_ROOT], [ | |
14 | AC_MSG_CHECKING([whether d_make_root() is available]) | |
15 | ZFS_LINUX_TEST_RESULT_SYMBOL([d_make_root], | |
16 | [d_make_root], [fs/dcache.c], [ | |
17 | AC_MSG_RESULT(yes) | |
18 | AC_DEFINE(HAVE_D_MAKE_ROOT, 1, [d_make_root() is available]) | |
19 | ], [ | |
20 | AC_MSG_RESULT(no) | |
21 | ]) | |
22 | ]) | |
23 | ||
24 | dnl # | |
25 | dnl # 2.6.28 API change | |
26 | dnl # Added d_obtain_alias() helper function. | |
27 | dnl # | |
28 | AC_DEFUN([ZFS_AC_KERNEL_SRC_D_OBTAIN_ALIAS], [ | |
29 | ZFS_LINUX_TEST_SRC([d_obtain_alias], [ | |
30 | #include <linux/dcache.h> | |
31 | ], [ | |
32 | d_obtain_alias(NULL); | |
33 | ]) | |
34 | ]) | |
35 | ||
36 | AC_DEFUN([ZFS_AC_KERNEL_D_OBTAIN_ALIAS], [ | |
37 | AC_MSG_CHECKING([whether d_obtain_alias() is available]) | |
38 | ZFS_LINUX_TEST_RESULT_SYMBOL([d_obtain_alias], | |
39 | [d_obtain_alias], [fs/dcache.c], [ | |
40 | AC_MSG_RESULT(yes) | |
41 | AC_DEFINE(HAVE_D_OBTAIN_ALIAS, 1, | |
42 | [d_obtain_alias() is available]) | |
43 | ], [ | |
44 | AC_MSG_RESULT(no) | |
45 | ]) | |
46 | ]) | |
47 | ||
48 | dnl # | |
49 | dnl # 2.6.12 API change | |
50 | dnl # d_prune_aliases() helper function available. | |
51 | dnl # | |
52 | AC_DEFUN([ZFS_AC_KERNEL_SRC_D_PRUNE_ALIASES], [ | |
53 | ZFS_LINUX_TEST_SRC([d_prune_aliases], [ | |
54 | #include <linux/dcache.h> | |
55 | ], [ | |
56 | struct inode *ip = NULL; | |
57 | d_prune_aliases(ip); | |
58 | ]) | |
59 | ]) | |
60 | ||
61 | AC_DEFUN([ZFS_AC_KERNEL_D_PRUNE_ALIASES], [ | |
62 | AC_MSG_CHECKING([whether d_prune_aliases() is available]) | |
63 | ZFS_LINUX_TEST_RESULT_SYMBOL([d_prune_aliases], | |
64 | [d_prune_aliases], [fs/dcache.c], [ | |
65 | AC_MSG_RESULT(yes) | |
66 | AC_DEFINE(HAVE_D_PRUNE_ALIASES, 1, | |
67 | [d_prune_aliases() is available]) | |
68 | ], [ | |
69 | AC_MSG_RESULT(no) | |
70 | ]) | |
71 | ]) | |
72 | ||
73 | dnl # | |
74 | dnl # 2.6.38 API change | |
75 | dnl # Added d_set_d_op() helper function. | |
76 | dnl # | |
77 | AC_DEFUN([ZFS_AC_KERNEL_SRC_D_SET_D_OP], [ | |
78 | ZFS_LINUX_TEST_SRC([d_set_d_op], [ | |
79 | #include <linux/dcache.h> | |
80 | ], [ | |
81 | d_set_d_op(NULL, NULL); | |
82 | ]) | |
83 | ]) | |
84 | ||
85 | AC_DEFUN([ZFS_AC_KERNEL_D_SET_D_OP], [ | |
86 | AC_MSG_CHECKING([whether d_set_d_op() is available]) | |
87 | ZFS_LINUX_TEST_RESULT_SYMBOL([d_set_d_op], | |
88 | [d_set_d_op], [fs/dcache.c], [ | |
89 | AC_MSG_RESULT(yes) | |
90 | AC_DEFINE(HAVE_D_SET_D_OP, 1, [d_set_d_op() is available]) | |
91 | ], [ | |
92 | AC_MSG_RESULT(no) | |
93 | ]) | |
94 | ]) | |
95 | ||
f1a05fa1 NB |
96 | dnl # |
97 | dnl # 3.6 API change | |
98 | dnl # | |
608f8749 BB |
99 | AC_DEFUN([ZFS_AC_KERNEL_SRC_D_REVALIDATE_NAMEIDATA], [ |
100 | ZFS_LINUX_TEST_SRC([dentry_operations_revalidate], [ | |
f1a05fa1 | 101 | #include <linux/dcache.h> |
e921f650 | 102 | #include <linux/sched.h> |
c38367c7 RY |
103 | |
104 | int revalidate (struct dentry *dentry, | |
105 | struct nameidata *nidata) { return 0; } | |
106 | ||
107 | static const struct dentry_operations | |
108 | dops __attribute__ ((unused)) = { | |
109 | .d_revalidate = revalidate, | |
f1a05fa1 | 110 | }; |
608f8749 BB |
111 | ],[]) |
112 | ]) | |
113 | ||
114 | AC_DEFUN([ZFS_AC_KERNEL_D_REVALIDATE_NAMEIDATA], [ | |
115 | AC_MSG_CHECKING([whether dops->d_revalidate() takes struct nameidata]) | |
116 | ZFS_LINUX_TEST_RESULT([dentry_operations_revalidate], [ | |
f1a05fa1 NB |
117 | AC_MSG_RESULT(yes) |
118 | AC_DEFINE(HAVE_D_REVALIDATE_NAMEIDATA, 1, | |
608f8749 | 119 | [dops->d_revalidate() operation takes nameidata]) |
f1a05fa1 NB |
120 | ],[ |
121 | AC_MSG_RESULT(no) | |
122 | ]) | |
123 | ]) | |
124 | ||
125 | dnl # | |
126 | dnl # 2.6.30 API change | |
127 | dnl # The 'struct dentry_operations' was constified in the dentry structure. | |
128 | dnl # | |
608f8749 BB |
129 | AC_DEFUN([ZFS_AC_KERNEL_SRC_CONST_DENTRY_OPERATIONS], [ |
130 | ZFS_LINUX_TEST_SRC([dentry_operations_const], [ | |
f1a05fa1 NB |
131 | #include <linux/dcache.h> |
132 | ||
133 | const struct dentry_operations test_d_op = { | |
134 | .d_revalidate = NULL, | |
135 | }; | |
136 | ],[ | |
137 | struct dentry d __attribute__ ((unused)); | |
f1a05fa1 | 138 | d.d_op = &test_d_op; |
f1a05fa1 NB |
139 | ]) |
140 | ]) | |
141 | ||
608f8749 BB |
142 | AC_DEFUN([ZFS_AC_KERNEL_CONST_DENTRY_OPERATIONS], [ |
143 | AC_MSG_CHECKING([whether dentry uses const struct dentry_operations]) | |
144 | ZFS_LINUX_TEST_RESULT([dentry_operations_const], [ | |
f1a05fa1 | 145 | AC_MSG_RESULT(yes) |
608f8749 BB |
146 | AC_DEFINE(HAVE_CONST_DENTRY_OPERATIONS, 1, |
147 | [dentry uses const struct dentry_operations]) | |
148 | ],[ | |
f1a05fa1 NB |
149 | AC_MSG_RESULT(no) |
150 | ]) | |
151 | ]) | |
ee930353 | 152 | |
608f8749 BB |
153 | AC_DEFUN([ZFS_AC_KERNEL_SRC_DENTRY], [ |
154 | ZFS_AC_KERNEL_SRC_D_MAKE_ROOT | |
155 | ZFS_AC_KERNEL_SRC_D_OBTAIN_ALIAS | |
156 | ZFS_AC_KERNEL_SRC_D_PRUNE_ALIASES | |
157 | ZFS_AC_KERNEL_SRC_D_SET_D_OP | |
158 | ZFS_AC_KERNEL_SRC_D_REVALIDATE_NAMEIDATA | |
159 | ZFS_AC_KERNEL_SRC_CONST_DENTRY_OPERATIONS | |
608f8749 BB |
160 | ]) |
161 | ||
162 | AC_DEFUN([ZFS_AC_KERNEL_DENTRY], [ | |
163 | ZFS_AC_KERNEL_D_MAKE_ROOT | |
164 | ZFS_AC_KERNEL_D_OBTAIN_ALIAS | |
165 | ZFS_AC_KERNEL_D_PRUNE_ALIASES | |
166 | ZFS_AC_KERNEL_D_SET_D_OP | |
167 | ZFS_AC_KERNEL_D_REVALIDATE_NAMEIDATA | |
168 | ZFS_AC_KERNEL_CONST_DENTRY_OPERATIONS | |
608f8749 | 169 | ]) |