xref: /freebsd/sys/contrib/openzfs/config/kernel-blkdev.m4 (revision fd45b686f9d92f583366c75b22c04c7ee49709c0)
1eda14cbcSMatt Macydnl #
2eda14cbcSMatt Macydnl # 2.6.38 API change,
3eda14cbcSMatt Macydnl # Added blkdev_get_by_path()
4eda14cbcSMatt Macydnl #
5eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_GET_BY_PATH], [
6eda14cbcSMatt Macy	ZFS_LINUX_TEST_SRC([blkdev_get_by_path], [
7eda14cbcSMatt Macy		#include <linux/fs.h>
8eda14cbcSMatt Macy		#include <linux/blkdev.h>
9eda14cbcSMatt Macy	], [
10eda14cbcSMatt Macy		struct block_device *bdev __attribute__ ((unused)) = NULL;
11eda14cbcSMatt Macy		const char *path = "path";
12eda14cbcSMatt Macy		fmode_t mode = 0;
13eda14cbcSMatt Macy		void *holder = NULL;
14eda14cbcSMatt Macy
15eda14cbcSMatt Macy		bdev = blkdev_get_by_path(path, mode, holder);
16eda14cbcSMatt Macy	])
17eda14cbcSMatt Macy])
18eda14cbcSMatt Macy
19315ee00fSMartin Matuskadnl #
20315ee00fSMartin Matuskadnl # 6.5.x API change,
21315ee00fSMartin Matuskadnl # blkdev_get_by_path() takes 4 args
22315ee00fSMartin Matuskadnl #
23315ee00fSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_GET_BY_PATH_4ARG], [
24315ee00fSMartin Matuska	ZFS_LINUX_TEST_SRC([blkdev_get_by_path_4arg], [
25315ee00fSMartin Matuska		#include <linux/fs.h>
26315ee00fSMartin Matuska		#include <linux/blkdev.h>
27315ee00fSMartin Matuska	], [
28315ee00fSMartin Matuska		struct block_device *bdev __attribute__ ((unused)) = NULL;
29315ee00fSMartin Matuska		const char *path = "path";
30315ee00fSMartin Matuska		fmode_t mode = 0;
31315ee00fSMartin Matuska		void *holder = NULL;
32315ee00fSMartin Matuska		struct blk_holder_ops h;
33315ee00fSMartin Matuska
34315ee00fSMartin Matuska		bdev = blkdev_get_by_path(path, mode, holder, &h);
35315ee00fSMartin Matuska	])
36315ee00fSMartin Matuska])
37315ee00fSMartin Matuska
38*fd45b686SMartin Matuskadnl #
39*fd45b686SMartin Matuskadnl # 6.8.x API change
40*fd45b686SMartin Matuskadnl # bdev_open_by_path() replaces blkdev_get_by_path()
41*fd45b686SMartin Matuskadnl #
42*fd45b686SMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_OPEN_BY_PATH], [
43*fd45b686SMartin Matuska	ZFS_LINUX_TEST_SRC([bdev_open_by_path], [
44*fd45b686SMartin Matuska		#include <linux/fs.h>
45*fd45b686SMartin Matuska		#include <linux/blkdev.h>
46*fd45b686SMartin Matuska	], [
47*fd45b686SMartin Matuska		struct bdev_handle *bdh __attribute__ ((unused)) = NULL;
48*fd45b686SMartin Matuska		const char *path = "path";
49*fd45b686SMartin Matuska		fmode_t mode = 0;
50*fd45b686SMartin Matuska		void *holder = NULL;
51*fd45b686SMartin Matuska		struct blk_holder_ops h;
52*fd45b686SMartin Matuska
53*fd45b686SMartin Matuska		bdh = bdev_open_by_path(path, mode, holder, &h);
54*fd45b686SMartin Matuska	])
55*fd45b686SMartin Matuska])
56*fd45b686SMartin Matuska
57eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_GET_BY_PATH], [
58315ee00fSMartin Matuska	AC_MSG_CHECKING([whether blkdev_get_by_path() exists and takes 3 args])
59eda14cbcSMatt Macy	ZFS_LINUX_TEST_RESULT([blkdev_get_by_path], [
60eda14cbcSMatt Macy		AC_MSG_RESULT(yes)
61eda14cbcSMatt Macy	], [
62315ee00fSMartin Matuska		AC_MSG_RESULT(no)
63315ee00fSMartin Matuska		AC_MSG_CHECKING([whether blkdev_get_by_path() exists and takes 4 args])
64315ee00fSMartin Matuska		ZFS_LINUX_TEST_RESULT([blkdev_get_by_path_4arg], [
65315ee00fSMartin Matuska			AC_DEFINE(HAVE_BLKDEV_GET_BY_PATH_4ARG, 1,
66315ee00fSMartin Matuska				[blkdev_get_by_path() exists and takes 4 args])
67315ee00fSMartin Matuska			AC_MSG_RESULT(yes)
68315ee00fSMartin Matuska		], [
69*fd45b686SMartin Matuska			AC_MSG_RESULT(no)
70*fd45b686SMartin Matuska			AC_MSG_CHECKING([whether bdev_open_by_path() exists])
71*fd45b686SMartin Matuska			ZFS_LINUX_TEST_RESULT([bdev_open_by_path], [
72*fd45b686SMartin Matuska				AC_DEFINE(HAVE_BDEV_OPEN_BY_PATH, 1,
73*fd45b686SMartin Matuska					[bdev_open_by_path() exists])
74*fd45b686SMartin Matuska				AC_MSG_RESULT(yes)
75*fd45b686SMartin Matuska			], [
76eda14cbcSMatt Macy				ZFS_LINUX_TEST_ERROR([blkdev_get_by_path()])
77eda14cbcSMatt Macy			])
78eda14cbcSMatt Macy		])
79315ee00fSMartin Matuska	])
80*fd45b686SMartin Matuska])
81315ee00fSMartin Matuska
82315ee00fSMartin Matuskadnl #
83315ee00fSMartin Matuskadnl # 6.5.x API change
84315ee00fSMartin Matuskadnl # blk_mode_t was added as a type to supercede some places where fmode_t
85315ee00fSMartin Matuskadnl # is used
86315ee00fSMartin Matuskadnl #
87315ee00fSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BLK_MODE_T], [
88315ee00fSMartin Matuska	ZFS_LINUX_TEST_SRC([blk_mode_t], [
89315ee00fSMartin Matuska		#include <linux/fs.h>
90315ee00fSMartin Matuska		#include <linux/blkdev.h>
91315ee00fSMartin Matuska	], [
92315ee00fSMartin Matuska		blk_mode_t m __attribute((unused)) = (blk_mode_t)0;
93315ee00fSMartin Matuska	])
94315ee00fSMartin Matuska])
95315ee00fSMartin Matuska
96315ee00fSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_BLK_MODE_T], [
97315ee00fSMartin Matuska	AC_MSG_CHECKING([whether blk_mode_t is defined])
98315ee00fSMartin Matuska	ZFS_LINUX_TEST_RESULT([blk_mode_t], [
99315ee00fSMartin Matuska		AC_MSG_RESULT(yes)
100315ee00fSMartin Matuska		AC_DEFINE(HAVE_BLK_MODE_T, 1, [blk_mode_t is defined])
101315ee00fSMartin Matuska	], [
102315ee00fSMartin Matuska		AC_MSG_RESULT(no)
103315ee00fSMartin Matuska	])
104315ee00fSMartin Matuska])
105eda14cbcSMatt Macy
106eda14cbcSMatt Macydnl #
107eda14cbcSMatt Macydnl # 2.6.38 API change,
108eda14cbcSMatt Macydnl # Added blkdev_put()
109eda14cbcSMatt Macydnl #
110eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_PUT], [
111eda14cbcSMatt Macy	ZFS_LINUX_TEST_SRC([blkdev_put], [
112eda14cbcSMatt Macy		#include <linux/fs.h>
113eda14cbcSMatt Macy		#include <linux/blkdev.h>
114eda14cbcSMatt Macy	], [
115eda14cbcSMatt Macy		struct block_device *bdev = NULL;
116eda14cbcSMatt Macy		fmode_t mode = 0;
117eda14cbcSMatt Macy
118eda14cbcSMatt Macy		blkdev_put(bdev, mode);
119eda14cbcSMatt Macy	])
120eda14cbcSMatt Macy])
121eda14cbcSMatt Macy
122315ee00fSMartin Matuskadnl #
123315ee00fSMartin Matuskadnl # 6.5.x API change.
124315ee00fSMartin Matuskadnl # blkdev_put() takes (void* holder) as arg 2
125315ee00fSMartin Matuskadnl #
126315ee00fSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_PUT_HOLDER], [
127315ee00fSMartin Matuska	ZFS_LINUX_TEST_SRC([blkdev_put_holder], [
128315ee00fSMartin Matuska		#include <linux/fs.h>
129315ee00fSMartin Matuska		#include <linux/blkdev.h>
130315ee00fSMartin Matuska	], [
131315ee00fSMartin Matuska		struct block_device *bdev = NULL;
132315ee00fSMartin Matuska		void *holder = NULL;
133315ee00fSMartin Matuska
134315ee00fSMartin Matuska		blkdev_put(bdev, holder);
135315ee00fSMartin Matuska	])
136315ee00fSMartin Matuska])
137315ee00fSMartin Matuska
138*fd45b686SMartin Matuskadnl #
139*fd45b686SMartin Matuskadnl # 6.8.x API change
140*fd45b686SMartin Matuskadnl # bdev_release() replaces blkdev_put()
141*fd45b686SMartin Matuskadnl #
142*fd45b686SMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_RELEASE], [
143*fd45b686SMartin Matuska	ZFS_LINUX_TEST_SRC([bdev_release], [
144*fd45b686SMartin Matuska		#include <linux/fs.h>
145*fd45b686SMartin Matuska		#include <linux/blkdev.h>
146*fd45b686SMartin Matuska	], [
147*fd45b686SMartin Matuska		struct bdev_handle *bdh = NULL;
148*fd45b686SMartin Matuska		bdev_release(bdh);
149*fd45b686SMartin Matuska	])
150*fd45b686SMartin Matuska])
151*fd45b686SMartin Matuska
152eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_PUT], [
153eda14cbcSMatt Macy	AC_MSG_CHECKING([whether blkdev_put() exists])
154eda14cbcSMatt Macy	ZFS_LINUX_TEST_RESULT([blkdev_put], [
155eda14cbcSMatt Macy		AC_MSG_RESULT(yes)
156eda14cbcSMatt Macy	], [
157*fd45b686SMartin Matuska		AC_MSG_RESULT(no)
158315ee00fSMartin Matuska		AC_MSG_CHECKING([whether blkdev_put() accepts void* as arg 2])
159315ee00fSMartin Matuska		ZFS_LINUX_TEST_RESULT([blkdev_put_holder], [
160315ee00fSMartin Matuska			AC_MSG_RESULT(yes)
161315ee00fSMartin Matuska			AC_DEFINE(HAVE_BLKDEV_PUT_HOLDER, 1,
162315ee00fSMartin Matuska				[blkdev_put() accepts void* as arg 2])
163315ee00fSMartin Matuska		], [
164*fd45b686SMartin Matuska			AC_MSG_RESULT(no)
165*fd45b686SMartin Matuska			AC_MSG_CHECKING([whether bdev_release() exists])
166*fd45b686SMartin Matuska			ZFS_LINUX_TEST_RESULT([bdev_release], [
167*fd45b686SMartin Matuska				AC_MSG_RESULT(yes)
168*fd45b686SMartin Matuska				AC_DEFINE(HAVE_BDEV_RELEASE, 1,
169*fd45b686SMartin Matuska					[bdev_release() exists])
170*fd45b686SMartin Matuska			], [
171eda14cbcSMatt Macy				ZFS_LINUX_TEST_ERROR([blkdev_put()])
172eda14cbcSMatt Macy			])
173eda14cbcSMatt Macy		])
174315ee00fSMartin Matuska	])
175*fd45b686SMartin Matuska])
176eda14cbcSMatt Macy
177eda14cbcSMatt Macydnl #
178eda14cbcSMatt Macydnl # 4.1 API, exported blkdev_reread_part() symbol, back ported to the
179eda14cbcSMatt Macydnl # 3.10.0 CentOS 7.x enterprise kernels.
180eda14cbcSMatt Macydnl #
181eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_REREAD_PART], [
182eda14cbcSMatt Macy	ZFS_LINUX_TEST_SRC([blkdev_reread_part], [
183eda14cbcSMatt Macy		#include <linux/fs.h>
184eda14cbcSMatt Macy		#include <linux/blkdev.h>
185eda14cbcSMatt Macy	], [
186eda14cbcSMatt Macy		struct block_device *bdev = NULL;
187eda14cbcSMatt Macy		int error;
188eda14cbcSMatt Macy
189eda14cbcSMatt Macy		error = blkdev_reread_part(bdev);
190eda14cbcSMatt Macy	])
191eda14cbcSMatt Macy])
192eda14cbcSMatt Macy
193eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_REREAD_PART], [
194eda14cbcSMatt Macy	AC_MSG_CHECKING([whether blkdev_reread_part() exists])
195eda14cbcSMatt Macy	ZFS_LINUX_TEST_RESULT([blkdev_reread_part], [
196eda14cbcSMatt Macy		AC_MSG_RESULT(yes)
197eda14cbcSMatt Macy		AC_DEFINE(HAVE_BLKDEV_REREAD_PART, 1,
198eda14cbcSMatt Macy		    [blkdev_reread_part() exists])
199eda14cbcSMatt Macy	], [
200eda14cbcSMatt Macy		AC_MSG_RESULT(no)
201eda14cbcSMatt Macy	])
202eda14cbcSMatt Macy])
203eda14cbcSMatt Macy
204eda14cbcSMatt Macydnl #
2057877fdebSMatt Macydnl # check_disk_change() was removed in 5.10
2067877fdebSMatt Macydnl #
2077877fdebSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_CHECK_DISK_CHANGE], [
2087877fdebSMatt Macy	ZFS_LINUX_TEST_SRC([check_disk_change], [
2097877fdebSMatt Macy		#include <linux/fs.h>
2107877fdebSMatt Macy		#include <linux/blkdev.h>
2117877fdebSMatt Macy	], [
2127877fdebSMatt Macy		struct block_device *bdev = NULL;
2137877fdebSMatt Macy		bool error;
2147877fdebSMatt Macy
2157877fdebSMatt Macy		error = check_disk_change(bdev);
2167877fdebSMatt Macy	])
2177877fdebSMatt Macy])
2187877fdebSMatt Macy
2197877fdebSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_CHECK_DISK_CHANGE], [
2207877fdebSMatt Macy	AC_MSG_CHECKING([whether check_disk_change() exists])
2217877fdebSMatt Macy	ZFS_LINUX_TEST_RESULT([check_disk_change], [
2227877fdebSMatt Macy		AC_MSG_RESULT(yes)
2237877fdebSMatt Macy		AC_DEFINE(HAVE_CHECK_DISK_CHANGE, 1,
2247877fdebSMatt Macy		    [check_disk_change() exists])
2257877fdebSMatt Macy	], [
2267877fdebSMatt Macy		AC_MSG_RESULT(no)
2277877fdebSMatt Macy	])
2287877fdebSMatt Macy])
2297877fdebSMatt Macy
2307877fdebSMatt Macydnl #
231315ee00fSMartin Matuskadnl # 6.5.x API change
232315ee00fSMartin Matuskadnl # disk_check_media_change() was added
233315ee00fSMartin Matuskadnl #
234315ee00fSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_DISK_CHECK_MEDIA_CHANGE], [
235315ee00fSMartin Matuska	ZFS_LINUX_TEST_SRC([disk_check_media_change], [
236315ee00fSMartin Matuska		#include <linux/fs.h>
237315ee00fSMartin Matuska		#include <linux/blkdev.h>
238315ee00fSMartin Matuska	], [
239315ee00fSMartin Matuska		struct block_device *bdev = NULL;
240315ee00fSMartin Matuska		bool error;
241315ee00fSMartin Matuska
242315ee00fSMartin Matuska		error = disk_check_media_change(bdev->bd_disk);
243315ee00fSMartin Matuska	])
244315ee00fSMartin Matuska])
245315ee00fSMartin Matuska
246315ee00fSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_DISK_CHECK_MEDIA_CHANGE], [
247315ee00fSMartin Matuska	AC_MSG_CHECKING([whether disk_check_media_change() exists])
248315ee00fSMartin Matuska	ZFS_LINUX_TEST_RESULT([disk_check_media_change], [
249315ee00fSMartin Matuska		AC_MSG_RESULT(yes)
250315ee00fSMartin Matuska		AC_DEFINE(HAVE_DISK_CHECK_MEDIA_CHANGE, 1,
251315ee00fSMartin Matuska		    [disk_check_media_change() exists])
252315ee00fSMartin Matuska	], [
253315ee00fSMartin Matuska		AC_MSG_RESULT(no)
254315ee00fSMartin Matuska	])
255315ee00fSMartin Matuska])
256315ee00fSMartin Matuska
257315ee00fSMartin Matuskadnl #
258be181ee2SMartin Matuskadnl # bdev_kobj() is introduced from 5.12
259be181ee2SMartin Matuskadnl #
260be181ee2SMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_KOBJ], [
261be181ee2SMartin Matuska	ZFS_LINUX_TEST_SRC([bdev_kobj], [
262be181ee2SMartin Matuska		#include <linux/fs.h>
263be181ee2SMartin Matuska		#include <linux/blkdev.h>
264be181ee2SMartin Matuska		#include <linux/kobject.h>
265be181ee2SMartin Matuska	], [
266be181ee2SMartin Matuska		struct block_device *bdev = NULL;
267be181ee2SMartin Matuska		struct kobject *disk_kobj;
268be181ee2SMartin Matuska		disk_kobj = bdev_kobj(bdev);
269be181ee2SMartin Matuska	])
270be181ee2SMartin Matuska])
271be181ee2SMartin Matuska
272be181ee2SMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_BDEV_KOBJ], [
273be181ee2SMartin Matuska	AC_MSG_CHECKING([whether bdev_kobj() exists])
274be181ee2SMartin Matuska	ZFS_LINUX_TEST_RESULT([bdev_kobj], [
275be181ee2SMartin Matuska		AC_MSG_RESULT(yes)
276be181ee2SMartin Matuska		AC_DEFINE(HAVE_BDEV_KOBJ, 1,
277be181ee2SMartin Matuska		    [bdev_kobj() exists])
278be181ee2SMartin Matuska	], [
279be181ee2SMartin Matuska		AC_MSG_RESULT(no)
280be181ee2SMartin Matuska	])
281be181ee2SMartin Matuska])
282be181ee2SMartin Matuska
283be181ee2SMartin Matuskadnl #
284be181ee2SMartin Matuskadnl # part_to_dev() was removed in 5.12
285be181ee2SMartin Matuskadnl #
286be181ee2SMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_PART_TO_DEV], [
287be181ee2SMartin Matuska	ZFS_LINUX_TEST_SRC([part_to_dev], [
288be181ee2SMartin Matuska		#include <linux/fs.h>
289be181ee2SMartin Matuska		#include <linux/blkdev.h>
290be181ee2SMartin Matuska	], [
291be181ee2SMartin Matuska		struct hd_struct *p = NULL;
292be181ee2SMartin Matuska		struct device *pdev;
293be181ee2SMartin Matuska		pdev = part_to_dev(p);
294be181ee2SMartin Matuska	])
295be181ee2SMartin Matuska])
296be181ee2SMartin Matuska
297be181ee2SMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_PART_TO_DEV], [
298be181ee2SMartin Matuska	AC_MSG_CHECKING([whether part_to_dev() exists])
299be181ee2SMartin Matuska	ZFS_LINUX_TEST_RESULT([part_to_dev], [
300be181ee2SMartin Matuska		AC_MSG_RESULT(yes)
301be181ee2SMartin Matuska		AC_DEFINE(HAVE_PART_TO_DEV, 1,
302be181ee2SMartin Matuska		    [part_to_dev() exists])
303be181ee2SMartin Matuska	], [
304be181ee2SMartin Matuska		AC_MSG_RESULT(no)
305be181ee2SMartin Matuska	])
306be181ee2SMartin Matuska])
307be181ee2SMartin Matuska
308be181ee2SMartin Matuskadnl #
3097877fdebSMatt Macydnl # 5.10 API, check_disk_change() is removed, in favor of
3107877fdebSMatt Macydnl # bdev_check_media_change(), which doesn't force revalidation
3117877fdebSMatt Macydnl #
3127877fdebSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_CHECK_MEDIA_CHANGE], [
3137877fdebSMatt Macy	ZFS_LINUX_TEST_SRC([bdev_check_media_change], [
3147877fdebSMatt Macy		#include <linux/fs.h>
3157877fdebSMatt Macy		#include <linux/blkdev.h>
3167877fdebSMatt Macy	], [
3177877fdebSMatt Macy		struct block_device *bdev = NULL;
3187877fdebSMatt Macy		int error;
3197877fdebSMatt Macy
3207877fdebSMatt Macy		error = bdev_check_media_change(bdev);
3217877fdebSMatt Macy	])
3227877fdebSMatt Macy])
3237877fdebSMatt Macy
3247877fdebSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_BDEV_CHECK_MEDIA_CHANGE], [
32521b492edSMartin Matuska	AC_MSG_CHECKING([whether bdev_check_media_change() exists])
3267877fdebSMatt Macy	ZFS_LINUX_TEST_RESULT([bdev_check_media_change], [
3277877fdebSMatt Macy		AC_MSG_RESULT(yes)
3287877fdebSMatt Macy		AC_DEFINE(HAVE_BDEV_CHECK_MEDIA_CHANGE, 1,
3297877fdebSMatt Macy		    [bdev_check_media_change() exists])
3307877fdebSMatt Macy	], [
3317877fdebSMatt Macy		AC_MSG_RESULT(no)
3327877fdebSMatt Macy	])
3337877fdebSMatt Macy])
3347877fdebSMatt Macy
3357877fdebSMatt Macydnl #
336eda14cbcSMatt Macydnl # 2.6.22 API change
337eda14cbcSMatt Macydnl # Single argument invalidate_bdev()
338eda14cbcSMatt Macydnl #
339eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_INVALIDATE_BDEV], [
340eda14cbcSMatt Macy	ZFS_LINUX_TEST_SRC([invalidate_bdev], [
341eda14cbcSMatt Macy		#include <linux/buffer_head.h>
342eda14cbcSMatt Macy		#include <linux/blkdev.h>
343eda14cbcSMatt Macy	],[
344eda14cbcSMatt Macy		struct block_device *bdev = NULL;
345eda14cbcSMatt Macy		invalidate_bdev(bdev);
346eda14cbcSMatt Macy	])
347eda14cbcSMatt Macy])
348eda14cbcSMatt Macy
349eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_INVALIDATE_BDEV], [
350eda14cbcSMatt Macy	AC_MSG_CHECKING([whether invalidate_bdev() exists])
351eda14cbcSMatt Macy	ZFS_LINUX_TEST_RESULT([invalidate_bdev], [
352eda14cbcSMatt Macy		AC_MSG_RESULT(yes)
353eda14cbcSMatt Macy	],[
354eda14cbcSMatt Macy		ZFS_LINUX_TEST_ERROR([invalidate_bdev()])
355eda14cbcSMatt Macy	])
356eda14cbcSMatt Macy])
357eda14cbcSMatt Macy
358eda14cbcSMatt Macydnl #
3597877fdebSMatt Macydnl # 5.11 API, lookup_bdev() takes dev_t argument.
3607877fdebSMatt Macydnl # 2.6.27 API, lookup_bdev() was first exported.
3617877fdebSMatt Macydnl # 4.4.0-6.21 API, lookup_bdev() on Ubuntu takes mode argument.
362eda14cbcSMatt Macydnl #
363eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_LOOKUP_BDEV], [
3647877fdebSMatt Macy	ZFS_LINUX_TEST_SRC([lookup_bdev_devt], [
3657877fdebSMatt Macy		#include <linux/blkdev.h>
3667877fdebSMatt Macy	], [
3677877fdebSMatt Macy		int error __attribute__ ((unused));
3687877fdebSMatt Macy		const char path[] = "/example/path";
3697877fdebSMatt Macy		dev_t dev;
3707877fdebSMatt Macy
3717877fdebSMatt Macy		error = lookup_bdev(path, &dev);
3727877fdebSMatt Macy	])
3737877fdebSMatt Macy
374eda14cbcSMatt Macy	ZFS_LINUX_TEST_SRC([lookup_bdev_1arg], [
375eda14cbcSMatt Macy		#include <linux/fs.h>
376eda14cbcSMatt Macy		#include <linux/blkdev.h>
377eda14cbcSMatt Macy	], [
3787877fdebSMatt Macy		struct block_device *bdev __attribute__ ((unused));
3797877fdebSMatt Macy		const char path[] = "/example/path";
3807877fdebSMatt Macy
3817877fdebSMatt Macy		bdev = lookup_bdev(path);
382eda14cbcSMatt Macy	])
383eda14cbcSMatt Macy
3847877fdebSMatt Macy	ZFS_LINUX_TEST_SRC([lookup_bdev_mode], [
385eda14cbcSMatt Macy		#include <linux/fs.h>
386eda14cbcSMatt Macy	], [
3877877fdebSMatt Macy		struct block_device *bdev __attribute__ ((unused));
3887877fdebSMatt Macy		const char path[] = "/example/path";
3897877fdebSMatt Macy
3907877fdebSMatt Macy		bdev = lookup_bdev(path, FMODE_READ);
391eda14cbcSMatt Macy	])
392eda14cbcSMatt Macy])
393eda14cbcSMatt Macy
394eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_LOOKUP_BDEV], [
3957877fdebSMatt Macy	AC_MSG_CHECKING([whether lookup_bdev() wants dev_t arg])
3967877fdebSMatt Macy	ZFS_LINUX_TEST_RESULT_SYMBOL([lookup_bdev_devt],
3977877fdebSMatt Macy	    [lookup_bdev], [fs/block_dev.c], [
3987877fdebSMatt Macy		AC_MSG_RESULT(yes)
3997877fdebSMatt Macy		AC_DEFINE(HAVE_DEVT_LOOKUP_BDEV, 1,
4007877fdebSMatt Macy		    [lookup_bdev() wants dev_t arg])
4017877fdebSMatt Macy	], [
4027877fdebSMatt Macy		AC_MSG_RESULT(no)
4037877fdebSMatt Macy
404eda14cbcSMatt Macy		AC_MSG_CHECKING([whether lookup_bdev() wants 1 arg])
405eda14cbcSMatt Macy		ZFS_LINUX_TEST_RESULT_SYMBOL([lookup_bdev_1arg],
406eda14cbcSMatt Macy		    [lookup_bdev], [fs/block_dev.c], [
407eda14cbcSMatt Macy			AC_MSG_RESULT(yes)
408eda14cbcSMatt Macy			AC_DEFINE(HAVE_1ARG_LOOKUP_BDEV, 1,
409eda14cbcSMatt Macy			    [lookup_bdev() wants 1 arg])
410eda14cbcSMatt Macy		], [
411eda14cbcSMatt Macy			AC_MSG_RESULT(no)
412eda14cbcSMatt Macy
4137877fdebSMatt Macy			AC_MSG_CHECKING([whether lookup_bdev() wants mode arg])
4147877fdebSMatt Macy			ZFS_LINUX_TEST_RESULT_SYMBOL([lookup_bdev_mode],
415eda14cbcSMatt Macy			    [lookup_bdev], [fs/block_dev.c], [
416eda14cbcSMatt Macy				AC_MSG_RESULT(yes)
4177877fdebSMatt Macy				AC_DEFINE(HAVE_MODE_LOOKUP_BDEV, 1,
4187877fdebSMatt Macy				    [lookup_bdev() wants mode arg])
419eda14cbcSMatt Macy			], [
420eda14cbcSMatt Macy				ZFS_LINUX_TEST_ERROR([lookup_bdev()])
421eda14cbcSMatt Macy			])
422eda14cbcSMatt Macy		])
423eda14cbcSMatt Macy	])
4247877fdebSMatt Macy])
425eda14cbcSMatt Macy
426eda14cbcSMatt Macydnl #
427eda14cbcSMatt Macydnl # 2.6.30 API change
428eda14cbcSMatt Macydnl #
429eda14cbcSMatt Macydnl # The bdev_physical_block_size() interface was added to provide a way
430eda14cbcSMatt Macydnl # to determine the smallest write which can be performed without a
431eda14cbcSMatt Macydnl # read-modify-write operation.
432eda14cbcSMatt Macydnl #
433eda14cbcSMatt Macydnl # Unfortunately, this interface isn't entirely reliable because
434eda14cbcSMatt Macydnl # drives are sometimes known to misreport this value.
435eda14cbcSMatt Macydnl #
436eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_PHYSICAL_BLOCK_SIZE], [
437eda14cbcSMatt Macy	ZFS_LINUX_TEST_SRC([bdev_physical_block_size], [
438eda14cbcSMatt Macy		#include <linux/blkdev.h>
439eda14cbcSMatt Macy	],[
440eda14cbcSMatt Macy		struct block_device *bdev __attribute__ ((unused)) = NULL;
441eda14cbcSMatt Macy		bdev_physical_block_size(bdev);
442eda14cbcSMatt Macy	])
443eda14cbcSMatt Macy])
444eda14cbcSMatt Macy
445eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_BDEV_PHYSICAL_BLOCK_SIZE], [
446eda14cbcSMatt Macy	AC_MSG_CHECKING([whether bdev_physical_block_size() is available])
447eda14cbcSMatt Macy	ZFS_LINUX_TEST_RESULT([bdev_physical_block_size], [
448eda14cbcSMatt Macy		AC_MSG_RESULT(yes)
449eda14cbcSMatt Macy	],[
450eda14cbcSMatt Macy		ZFS_LINUX_TEST_ERROR([bdev_physical_block_size()])
451eda14cbcSMatt Macy	])
452eda14cbcSMatt Macy])
453eda14cbcSMatt Macy
454eda14cbcSMatt Macydnl #
455eda14cbcSMatt Macydnl # 2.6.30 API change
456eda14cbcSMatt Macydnl # Added bdev_logical_block_size().
457eda14cbcSMatt Macydnl #
458eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_LOGICAL_BLOCK_SIZE], [
459eda14cbcSMatt Macy	ZFS_LINUX_TEST_SRC([bdev_logical_block_size], [
460eda14cbcSMatt Macy		#include <linux/blkdev.h>
461eda14cbcSMatt Macy	],[
462eda14cbcSMatt Macy		struct block_device *bdev __attribute__ ((unused)) = NULL;
463eda14cbcSMatt Macy		bdev_logical_block_size(bdev);
464eda14cbcSMatt Macy	])
465eda14cbcSMatt Macy])
466eda14cbcSMatt Macy
467eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_BDEV_LOGICAL_BLOCK_SIZE], [
468eda14cbcSMatt Macy	AC_MSG_CHECKING([whether bdev_logical_block_size() is available])
469eda14cbcSMatt Macy	ZFS_LINUX_TEST_RESULT([bdev_logical_block_size], [
470eda14cbcSMatt Macy		AC_MSG_RESULT(yes)
471eda14cbcSMatt Macy	],[
472eda14cbcSMatt Macy		ZFS_LINUX_TEST_ERROR([bdev_logical_block_size()])
473eda14cbcSMatt Macy	])
474eda14cbcSMatt Macy])
475eda14cbcSMatt Macy
4767877fdebSMatt Macydnl #
4777877fdebSMatt Macydnl # 5.11 API change
4787877fdebSMatt Macydnl # Added bdev_whole() helper.
4797877fdebSMatt Macydnl #
4807877fdebSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_WHOLE], [
4817877fdebSMatt Macy	ZFS_LINUX_TEST_SRC([bdev_whole], [
4827877fdebSMatt Macy		#include <linux/blkdev.h>
4837877fdebSMatt Macy	],[
4847877fdebSMatt Macy		struct block_device *bdev = NULL;
4857877fdebSMatt Macy		bdev = bdev_whole(bdev);
4867877fdebSMatt Macy	])
4877877fdebSMatt Macy])
4887877fdebSMatt Macy
4897877fdebSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_BDEV_WHOLE], [
4907877fdebSMatt Macy	AC_MSG_CHECKING([whether bdev_whole() is available])
4917877fdebSMatt Macy	ZFS_LINUX_TEST_RESULT([bdev_whole], [
4927877fdebSMatt Macy		AC_MSG_RESULT(yes)
4937877fdebSMatt Macy		AC_DEFINE(HAVE_BDEV_WHOLE, 1, [bdev_whole() is available])
4947877fdebSMatt Macy	],[
4957877fdebSMatt Macy		AC_MSG_RESULT(no)
4967877fdebSMatt Macy	])
4977877fdebSMatt Macy])
4987877fdebSMatt Macy
499681ce946SMartin Matuskadnl #
500271171e0SMartin Matuskadnl # 5.20 API change,
501271171e0SMartin Matuskadnl # Removed bdevname(), snprintf(.., %pg) should be used.
502271171e0SMartin Matuskadnl #
503271171e0SMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BDEVNAME], [
504271171e0SMartin Matuska	ZFS_LINUX_TEST_SRC([bdevname], [
505271171e0SMartin Matuska		#include <linux/fs.h>
506271171e0SMartin Matuska		#include <linux/blkdev.h>
507271171e0SMartin Matuska	], [
508271171e0SMartin Matuska		struct block_device *bdev __attribute__ ((unused)) = NULL;
509271171e0SMartin Matuska		char path[BDEVNAME_SIZE];
510271171e0SMartin Matuska
511271171e0SMartin Matuska		(void) bdevname(bdev, path);
512271171e0SMartin Matuska	])
513271171e0SMartin Matuska])
514271171e0SMartin Matuska
515271171e0SMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_BDEVNAME], [
516271171e0SMartin Matuska	AC_MSG_CHECKING([whether bdevname() exists])
517271171e0SMartin Matuska	ZFS_LINUX_TEST_RESULT([bdevname], [
518271171e0SMartin Matuska		AC_DEFINE(HAVE_BDEVNAME, 1, [bdevname() is available])
519271171e0SMartin Matuska		AC_MSG_RESULT(yes)
520271171e0SMartin Matuska	], [
521271171e0SMartin Matuska		AC_MSG_RESULT(no)
522271171e0SMartin Matuska	])
523271171e0SMartin Matuska])
524271171e0SMartin Matuska
525271171e0SMartin Matuskadnl #
526e3aa18adSMartin Matuskadnl # 5.19 API: blkdev_issue_secure_erase()
527e3aa18adSMartin Matuskadnl # 3.10 API: blkdev_issue_discard(..., BLKDEV_DISCARD_SECURE)
528e3aa18adSMartin Matuskadnl #
529e3aa18adSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_ISSUE_SECURE_ERASE], [
530e3aa18adSMartin Matuska	ZFS_LINUX_TEST_SRC([blkdev_issue_secure_erase], [
531e3aa18adSMartin Matuska		#include <linux/blkdev.h>
532e3aa18adSMartin Matuska	],[
533e3aa18adSMartin Matuska		struct block_device *bdev = NULL;
534e3aa18adSMartin Matuska		sector_t sector = 0;
535e3aa18adSMartin Matuska		sector_t nr_sects = 0;
536e3aa18adSMartin Matuska		int error __attribute__ ((unused));
537e3aa18adSMartin Matuska
538e3aa18adSMartin Matuska		error = blkdev_issue_secure_erase(bdev,
539e3aa18adSMartin Matuska		    sector, nr_sects, GFP_KERNEL);
540e3aa18adSMartin Matuska	])
541e3aa18adSMartin Matuska
542e3aa18adSMartin Matuska	ZFS_LINUX_TEST_SRC([blkdev_issue_discard_flags], [
543e3aa18adSMartin Matuska		#include <linux/blkdev.h>
544e3aa18adSMartin Matuska	],[
545e3aa18adSMartin Matuska		struct block_device *bdev = NULL;
546e3aa18adSMartin Matuska		sector_t sector = 0;
547e3aa18adSMartin Matuska		sector_t nr_sects = 0;
548e3aa18adSMartin Matuska		unsigned long flags = 0;
549e3aa18adSMartin Matuska		int error __attribute__ ((unused));
550e3aa18adSMartin Matuska
551e3aa18adSMartin Matuska		error = blkdev_issue_discard(bdev,
552e3aa18adSMartin Matuska		    sector, nr_sects, GFP_KERNEL, flags);
553e3aa18adSMartin Matuska	])
554e3aa18adSMartin Matuska])
555e3aa18adSMartin Matuska
556e3aa18adSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_ISSUE_SECURE_ERASE], [
557e3aa18adSMartin Matuska	AC_MSG_CHECKING([whether blkdev_issue_secure_erase() is available])
558e3aa18adSMartin Matuska	ZFS_LINUX_TEST_RESULT([blkdev_issue_secure_erase], [
559e3aa18adSMartin Matuska		AC_MSG_RESULT(yes)
560e3aa18adSMartin Matuska		AC_DEFINE(HAVE_BLKDEV_ISSUE_SECURE_ERASE, 1,
561e3aa18adSMartin Matuska		    [blkdev_issue_secure_erase() is available])
562e3aa18adSMartin Matuska	],[
563e3aa18adSMartin Matuska		AC_MSG_RESULT(no)
564e3aa18adSMartin Matuska
565e3aa18adSMartin Matuska		AC_MSG_CHECKING([whether blkdev_issue_discard() is available])
566e3aa18adSMartin Matuska		ZFS_LINUX_TEST_RESULT([blkdev_issue_discard_flags], [
567e3aa18adSMartin Matuska			AC_MSG_RESULT(yes)
568e3aa18adSMartin Matuska			AC_DEFINE(HAVE_BLKDEV_ISSUE_DISCARD, 1,
569e3aa18adSMartin Matuska			    [blkdev_issue_discard() is available])
570e3aa18adSMartin Matuska		],[
571e3aa18adSMartin Matuska			ZFS_LINUX_TEST_ERROR([blkdev_issue_discard()])
572e3aa18adSMartin Matuska		])
573e3aa18adSMartin Matuska	])
574e3aa18adSMartin Matuska])
575e3aa18adSMartin Matuska
576e3aa18adSMartin Matuskadnl #
577681ce946SMartin Matuskadnl # 5.13 API change
578681ce946SMartin Matuskadnl # blkdev_get_by_path() no longer handles ERESTARTSYS
579681ce946SMartin Matuskadnl #
580681ce946SMartin Matuskadnl # Unfortunately we're forced to rely solely on the kernel version
581681ce946SMartin Matuskadnl # number in order to determine the expected behavior.  This was an
582681ce946SMartin Matuskadnl # internal change to blkdev_get_by_dev(), see commit a8ed1a0607.
583681ce946SMartin Matuskadnl #
584681ce946SMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_GET_ERESTARTSYS], [
585681ce946SMartin Matuska	AC_MSG_CHECKING([whether blkdev_get_by_path() handles ERESTARTSYS])
586681ce946SMartin Matuska	AS_VERSION_COMPARE([$LINUX_VERSION], [5.13.0], [
587681ce946SMartin Matuska		AC_MSG_RESULT(yes)
588681ce946SMartin Matuska		AC_DEFINE(HAVE_BLKDEV_GET_ERESTARTSYS, 1,
589681ce946SMartin Matuska			[blkdev_get_by_path() handles ERESTARTSYS])
590681ce946SMartin Matuska	],[
591681ce946SMartin Matuska		AC_MSG_RESULT(no)
592681ce946SMartin Matuska	],[
593681ce946SMartin Matuska		AC_MSG_RESULT(no)
594681ce946SMartin Matuska	])
595681ce946SMartin Matuska])
596681ce946SMartin Matuska
597315ee00fSMartin Matuskadnl #
598315ee00fSMartin Matuskadnl # 6.5.x API change
599315ee00fSMartin Matuskadnl # BLK_STS_NEXUS replaced with BLK_STS_RESV_CONFLICT
600315ee00fSMartin Matuskadnl #
601315ee00fSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BLK_STS_RESV_CONFLICT], [
602315ee00fSMartin Matuska	ZFS_LINUX_TEST_SRC([blk_sts_resv_conflict], [
603315ee00fSMartin Matuska		#include <linux/blkdev.h>
604315ee00fSMartin Matuska	],[
605315ee00fSMartin Matuska		blk_status_t s __attribute__ ((unused)) = BLK_STS_RESV_CONFLICT;
606315ee00fSMartin Matuska	])
607315ee00fSMartin Matuska])
608315ee00fSMartin Matuska
609315ee00fSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_BLK_STS_RESV_CONFLICT], [
610315ee00fSMartin Matuska	AC_MSG_CHECKING([whether BLK_STS_RESV_CONFLICT is defined])
611315ee00fSMartin Matuska		ZFS_LINUX_TEST_RESULT([blk_sts_resv_conflict], [
612315ee00fSMartin Matuska			AC_DEFINE(HAVE_BLK_STS_RESV_CONFLICT, 1, [BLK_STS_RESV_CONFLICT is defined])
613315ee00fSMartin Matuska			AC_MSG_RESULT(yes)
614315ee00fSMartin Matuska		], [
615315ee00fSMartin Matuska			AC_MSG_RESULT(no)
616315ee00fSMartin Matuska		])
617315ee00fSMartin Matuska	])
618315ee00fSMartin Matuska])
619315ee00fSMartin Matuska
620eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV], [
621eda14cbcSMatt Macy	ZFS_AC_KERNEL_SRC_BLKDEV_GET_BY_PATH
622315ee00fSMartin Matuska	ZFS_AC_KERNEL_SRC_BLKDEV_GET_BY_PATH_4ARG
623*fd45b686SMartin Matuska	ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_OPEN_BY_PATH
624eda14cbcSMatt Macy	ZFS_AC_KERNEL_SRC_BLKDEV_PUT
625315ee00fSMartin Matuska	ZFS_AC_KERNEL_SRC_BLKDEV_PUT_HOLDER
626*fd45b686SMartin Matuska	ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_RELEASE
627eda14cbcSMatt Macy	ZFS_AC_KERNEL_SRC_BLKDEV_REREAD_PART
628eda14cbcSMatt Macy	ZFS_AC_KERNEL_SRC_BLKDEV_INVALIDATE_BDEV
629eda14cbcSMatt Macy	ZFS_AC_KERNEL_SRC_BLKDEV_LOOKUP_BDEV
630eda14cbcSMatt Macy	ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_LOGICAL_BLOCK_SIZE
631eda14cbcSMatt Macy	ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_PHYSICAL_BLOCK_SIZE
6327877fdebSMatt Macy	ZFS_AC_KERNEL_SRC_BLKDEV_CHECK_DISK_CHANGE
6337877fdebSMatt Macy	ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_CHECK_MEDIA_CHANGE
6347877fdebSMatt Macy	ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_WHOLE
635271171e0SMartin Matuska	ZFS_AC_KERNEL_SRC_BLKDEV_BDEVNAME
636e3aa18adSMartin Matuska	ZFS_AC_KERNEL_SRC_BLKDEV_ISSUE_SECURE_ERASE
637be181ee2SMartin Matuska	ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_KOBJ
638be181ee2SMartin Matuska	ZFS_AC_KERNEL_SRC_BLKDEV_PART_TO_DEV
639315ee00fSMartin Matuska	ZFS_AC_KERNEL_SRC_BLKDEV_DISK_CHECK_MEDIA_CHANGE
640315ee00fSMartin Matuska	ZFS_AC_KERNEL_SRC_BLKDEV_BLK_STS_RESV_CONFLICT
641315ee00fSMartin Matuska	ZFS_AC_KERNEL_SRC_BLKDEV_BLK_MODE_T
642eda14cbcSMatt Macy])
643eda14cbcSMatt Macy
644eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BLKDEV], [
645eda14cbcSMatt Macy	ZFS_AC_KERNEL_BLKDEV_GET_BY_PATH
646eda14cbcSMatt Macy	ZFS_AC_KERNEL_BLKDEV_PUT
647eda14cbcSMatt Macy	ZFS_AC_KERNEL_BLKDEV_REREAD_PART
648eda14cbcSMatt Macy	ZFS_AC_KERNEL_BLKDEV_INVALIDATE_BDEV
649eda14cbcSMatt Macy	ZFS_AC_KERNEL_BLKDEV_LOOKUP_BDEV
650eda14cbcSMatt Macy	ZFS_AC_KERNEL_BLKDEV_BDEV_LOGICAL_BLOCK_SIZE
651eda14cbcSMatt Macy	ZFS_AC_KERNEL_BLKDEV_BDEV_PHYSICAL_BLOCK_SIZE
6527877fdebSMatt Macy	ZFS_AC_KERNEL_BLKDEV_CHECK_DISK_CHANGE
6537877fdebSMatt Macy	ZFS_AC_KERNEL_BLKDEV_BDEV_CHECK_MEDIA_CHANGE
6547877fdebSMatt Macy	ZFS_AC_KERNEL_BLKDEV_BDEV_WHOLE
655271171e0SMartin Matuska	ZFS_AC_KERNEL_BLKDEV_BDEVNAME
656681ce946SMartin Matuska	ZFS_AC_KERNEL_BLKDEV_GET_ERESTARTSYS
657e3aa18adSMartin Matuska	ZFS_AC_KERNEL_BLKDEV_ISSUE_SECURE_ERASE
658be181ee2SMartin Matuska	ZFS_AC_KERNEL_BLKDEV_BDEV_KOBJ
659be181ee2SMartin Matuska	ZFS_AC_KERNEL_BLKDEV_PART_TO_DEV
660315ee00fSMartin Matuska	ZFS_AC_KERNEL_BLKDEV_DISK_CHECK_MEDIA_CHANGE
661315ee00fSMartin Matuska	ZFS_AC_KERNEL_BLKDEV_BLK_STS_RESV_CONFLICT
662315ee00fSMartin Matuska	ZFS_AC_KERNEL_BLKDEV_BLK_MODE_T
663eda14cbcSMatt Macy])
664