]> git.proxmox.com Git - mirror_zfs.git/blame - config/kernel-blkdev.m4
Use boot_ncpus in place of max_ncpus in taskq_create
[mirror_zfs.git] / config / kernel-blkdev.m4
CommitLineData
066e8252
BB
1dnl #
2dnl # 2.6.38 API change,
3dnl # Added blkdev_get_by_path()
4dnl #
5AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_GET_BY_PATH], [
6 ZFS_LINUX_TEST_SRC([blkdev_get_by_path], [
7 #include <linux/fs.h>
8 ], [
9 struct block_device *bdev __attribute__ ((unused)) = NULL;
10 const char *path = "path";
11 fmode_t mode = 0;
12 void *holder = NULL;
13
14 bdev = blkdev_get_by_path(path, mode, holder);
15 ])
16])
17
18AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_GET_BY_PATH], [
19 AC_MSG_CHECKING([whether blkdev_get_by_path() exists])
20 ZFS_LINUX_TEST_RESULT([blkdev_get_by_path], [
21 AC_MSG_RESULT(yes)
22 ], [
23 ZFS_LINUX_TEST_ERROR([blkdev_get_by_path()])
24 ])
25])
26
27dnl #
28dnl # 2.6.38 API change,
29dnl # Added blkdev_put()
30dnl #
31AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_PUT], [
32 ZFS_LINUX_TEST_SRC([blkdev_put], [
33 #include <linux/fs.h>
34 ], [
35 struct block_device *bdev = NULL;
36 fmode_t mode = 0;
37
38 blkdev_put(bdev, mode);
39 ])
40])
41
42AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_PUT], [
43 AC_MSG_CHECKING([whether blkdev_put() exists])
44 ZFS_LINUX_TEST_RESULT([blkdev_put], [
45 AC_MSG_RESULT(yes)
46 ], [
47 ZFS_LINUX_TEST_ERROR([blkdev_put()])
48 ])
49])
50
51dnl #
52dnl # 4.1 API, exported blkdev_reread_part() symbol, back ported to the
53dnl # 3.10.0 CentOS 7.x enterprise kernels.
54dnl #
55AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_REREAD_PART], [
56 ZFS_LINUX_TEST_SRC([blkdev_reread_part], [
57 #include <linux/fs.h>
58 ], [
59 struct block_device *bdev = NULL;
60 int error;
61
62 error = blkdev_reread_part(bdev);
63 ])
64])
65
66AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_REREAD_PART], [
67 AC_MSG_CHECKING([whether blkdev_reread_part() exists])
68 ZFS_LINUX_TEST_RESULT([blkdev_reread_part], [
69 AC_MSG_RESULT(yes)
70 AC_DEFINE(HAVE_BLKDEV_REREAD_PART, 1,
71 [blkdev_reread_part() exists])
72 ], [
73 AC_MSG_RESULT(no)
74 ])
75])
76
77dnl #
78dnl # 2.6.22 API change
79dnl # Single argument invalidate_bdev()
80dnl #
81AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_INVALIDATE_BDEV], [
82 ZFS_LINUX_TEST_SRC([invalidate_bdev], [
83 #include <linux/buffer_head.h>
84 ],[
85 struct block_device *bdev = NULL;
86 invalidate_bdev(bdev);
87 ])
88])
89
90AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_INVALIDATE_BDEV], [
91 AC_MSG_CHECKING([whether invalidate_bdev() exists])
92 ZFS_LINUX_TEST_RESULT([invalidate_bdev], [
93 AC_MSG_RESULT(yes)
94 ],[
95 ZFS_LINUX_TEST_ERROR([invalidate_bdev()])
96 ])
97])
98
99dnl #
100dnl # 2.6.27, lookup_bdev() was exported.
101dnl # 4.4.0-6.21 - lookup_bdev() takes 2 arguments.
102dnl #
103AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_LOOKUP_BDEV], [
104 ZFS_LINUX_TEST_SRC([lookup_bdev_1arg], [
105 #include <linux/fs.h>
106 ], [
107 lookup_bdev(NULL);
108 ])
109
110 ZFS_LINUX_TEST_SRC([lookup_bdev_2args], [
111 #include <linux/fs.h>
112 ], [
113 lookup_bdev(NULL, FMODE_READ);
114 ])
115])
116
117AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_LOOKUP_BDEV], [
118 AC_MSG_CHECKING([whether lookup_bdev() wants 1 arg])
119 ZFS_LINUX_TEST_RESULT_SYMBOL([lookup_bdev_1arg],
120 [lookup_bdev], [fs/block_dev.c], [
121 AC_MSG_RESULT(yes)
122 AC_DEFINE(HAVE_1ARG_LOOKUP_BDEV, 1,
123 [lookup_bdev() wants 1 arg])
124 ], [
125 AC_MSG_RESULT(no)
126
127 AC_MSG_CHECKING([whether lookup_bdev() wants 2 args])
128 ZFS_LINUX_TEST_RESULT_SYMBOL([lookup_bdev_2args],
129 [lookup_bdev], [fs/block_dev.c], [
130 AC_MSG_RESULT(yes)
131 AC_DEFINE(HAVE_2ARGS_LOOKUP_BDEV, 1,
132 [lookup_bdev() wants 2 args])
133 ], [
134 ZFS_LINUX_TEST_ERROR([lookup_bdev()])
135 ])
136 ])
137])
138
139dnl #
140dnl # 2.6.30 API change
141dnl #
142dnl # The bdev_physical_block_size() interface was added to provide a way
143dnl # to determine the smallest write which can be performed without a
144dnl # read-modify-write operation.
145dnl #
146dnl # Unfortunately, this interface isn't entirely reliable because
147dnl # drives are sometimes known to misreport this value.
148dnl #
149AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_PHYSICAL_BLOCK_SIZE], [
150 ZFS_LINUX_TEST_SRC([bdev_physical_block_size], [
151 #include <linux/blkdev.h>
152 ],[
153 struct block_device *bdev __attribute__ ((unused)) = NULL;
154 bdev_physical_block_size(bdev);
155 ])
156])
157
158AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_BDEV_PHYSICAL_BLOCK_SIZE], [
159 AC_MSG_CHECKING([whether bdev_physical_block_size() is available])
160 ZFS_LINUX_TEST_RESULT([bdev_physical_block_size], [
161 AC_MSG_RESULT(yes)
162 ],[
163 ZFS_LINUX_TEST_ERROR([bdev_physical_block_size()])
164 ])
165])
166
167dnl #
168dnl # 2.6.30 API change
169dnl # Added bdev_logical_block_size().
170dnl #
171AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_LOGICAL_BLOCK_SIZE], [
172 ZFS_LINUX_TEST_SRC([bdev_logical_block_size], [
173 #include <linux/blkdev.h>
174 ],[
175 struct block_device *bdev __attribute__ ((unused)) = NULL;
176 bdev_logical_block_size(bdev);
177 ])
178])
179
180AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_BDEV_LOGICAL_BLOCK_SIZE], [
181 AC_MSG_CHECKING([whether bdev_logical_block_size() is available])
182 ZFS_LINUX_TEST_RESULT([bdev_logical_block_size], [
183 AC_MSG_RESULT(yes)
184 ],[
185 ZFS_LINUX_TEST_ERROR([bdev_logical_block_size()])
186 ])
187])
188
189AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV], [
190 ZFS_AC_KERNEL_SRC_BLKDEV_GET_BY_PATH
191 ZFS_AC_KERNEL_SRC_BLKDEV_PUT
192 ZFS_AC_KERNEL_SRC_BLKDEV_REREAD_PART
193 ZFS_AC_KERNEL_SRC_BLKDEV_INVALIDATE_BDEV
194 ZFS_AC_KERNEL_SRC_BLKDEV_LOOKUP_BDEV
195 ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_LOGICAL_BLOCK_SIZE
196 ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_PHYSICAL_BLOCK_SIZE
197])
198
199AC_DEFUN([ZFS_AC_KERNEL_BLKDEV], [
200 ZFS_AC_KERNEL_BLKDEV_GET_BY_PATH
201 ZFS_AC_KERNEL_BLKDEV_PUT
202 ZFS_AC_KERNEL_BLKDEV_REREAD_PART
203 ZFS_AC_KERNEL_BLKDEV_INVALIDATE_BDEV
204 ZFS_AC_KERNEL_BLKDEV_LOOKUP_BDEV
205 ZFS_AC_KERNEL_BLKDEV_BDEV_LOGICAL_BLOCK_SIZE
206 ZFS_AC_KERNEL_BLKDEV_BDEV_PHYSICAL_BLOCK_SIZE
207])