2 dnl # 2.6.38 API change,
3 dnl # Added blkdev_get_by_path()
5 AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_GET_BY_PATH], [
6 ZFS_LINUX_TEST_SRC([blkdev_get_by_path], [
8 #include <linux/blkdev.h>
10 struct block_device *bdev __attribute__ ((unused)) = NULL;
11 const char *path = "path";
15 bdev = blkdev_get_by_path(path, mode, holder);
20 dnl # 6.5.x API change,
21 dnl # blkdev_get_by_path() takes 4 args
23 AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_GET_BY_PATH_4ARG], [
24 ZFS_LINUX_TEST_SRC([blkdev_get_by_path_4arg], [
26 #include <linux/blkdev.h>
28 struct block_device *bdev __attribute__ ((unused)) = NULL;
29 const char *path = "path";
32 struct blk_holder_ops h;
34 bdev = blkdev_get_by_path(path, mode, holder, &h);
39 dnl # 6.8.x API change
40 dnl # bdev_open_by_path() replaces blkdev_get_by_path()
42 AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_OPEN_BY_PATH], [
43 ZFS_LINUX_TEST_SRC([bdev_open_by_path], [
45 #include <linux/blkdev.h>
47 struct bdev_handle *bdh __attribute__ ((unused)) = NULL;
48 const char *path = "path";
51 struct blk_holder_ops h;
53 bdh = bdev_open_by_path(path, mode, holder, &h);
58 dnl # 6.9.x API change
59 dnl # bdev_file_open_by_path() replaced bdev_open_by_path(),
60 dnl # and returns struct file*
62 AC_DEFUN([ZFS_AC_KERNEL_SRC_BDEV_FILE_OPEN_BY_PATH], [
63 ZFS_LINUX_TEST_SRC([bdev_file_open_by_path], [
65 #include <linux/blkdev.h>
67 struct file *file __attribute__ ((unused)) = NULL;
68 const char *path = "path";
71 struct blk_holder_ops h;
73 file = bdev_file_open_by_path(path, mode, holder, &h);
77 AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_GET_BY_PATH], [
78 AC_MSG_CHECKING([whether blkdev_get_by_path() exists and takes 3 args])
79 ZFS_LINUX_TEST_RESULT([blkdev_get_by_path], [
83 AC_MSG_CHECKING([whether blkdev_get_by_path() exists and takes 4 args])
84 ZFS_LINUX_TEST_RESULT([blkdev_get_by_path_4arg], [
85 AC_DEFINE(HAVE_BLKDEV_GET_BY_PATH_4ARG, 1,
86 [blkdev_get_by_path() exists and takes 4 args])
90 AC_MSG_CHECKING([whether bdev_open_by_path() exists])
91 ZFS_LINUX_TEST_RESULT([bdev_open_by_path], [
92 AC_DEFINE(HAVE_BDEV_OPEN_BY_PATH, 1,
93 [bdev_open_by_path() exists])
97 AC_MSG_CHECKING([whether bdev_file_open_by_path() exists])
98 ZFS_LINUX_TEST_RESULT([bdev_file_open_by_path], [
99 AC_DEFINE(HAVE_BDEV_FILE_OPEN_BY_PATH, 1,
100 [bdev_file_open_by_path() exists])
104 ZFS_LINUX_TEST_ERROR([blkdev_get_by_path()])
112 dnl # 6.5.x API change
113 dnl # blk_mode_t was added as a type to supercede some places where fmode_t
116 AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BLK_MODE_T], [
117 ZFS_LINUX_TEST_SRC([blk_mode_t], [
118 #include <linux/fs.h>
119 #include <linux/blkdev.h>
121 blk_mode_t m __attribute((unused)) = (blk_mode_t)0;
125 AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_BLK_MODE_T], [
126 AC_MSG_CHECKING([whether blk_mode_t is defined])
127 ZFS_LINUX_TEST_RESULT([blk_mode_t], [
129 AC_DEFINE(HAVE_BLK_MODE_T, 1, [blk_mode_t is defined])
136 dnl # 2.6.38 API change,
137 dnl # Added blkdev_put()
139 AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_PUT], [
140 ZFS_LINUX_TEST_SRC([blkdev_put], [
141 #include <linux/fs.h>
142 #include <linux/blkdev.h>
144 struct block_device *bdev = NULL;
147 blkdev_put(bdev, mode);
152 dnl # 6.5.x API change.
153 dnl # blkdev_put() takes (void* holder) as arg 2
155 AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_PUT_HOLDER], [
156 ZFS_LINUX_TEST_SRC([blkdev_put_holder], [
157 #include <linux/fs.h>
158 #include <linux/blkdev.h>
160 struct block_device *bdev = NULL;
163 blkdev_put(bdev, holder);
168 dnl # 6.8.x API change
169 dnl # bdev_release() replaces blkdev_put()
171 AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_RELEASE], [
172 ZFS_LINUX_TEST_SRC([bdev_release], [
173 #include <linux/fs.h>
174 #include <linux/blkdev.h>
176 struct bdev_handle *bdh = NULL;
182 dnl # 6.9.x API change
184 dnl # bdev_release() now private, but because bdev_file_open_by_path() returns
185 dnl # struct file*, we can just use fput(). So the blkdev_put test no longer
186 dnl # fails if not found.
189 AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_PUT], [
190 AC_MSG_CHECKING([whether blkdev_put() exists])
191 ZFS_LINUX_TEST_RESULT([blkdev_put], [
193 AC_DEFINE(HAVE_BLKDEV_PUT, 1, [blkdev_put() exists])
196 AC_MSG_CHECKING([whether blkdev_put() accepts void* as arg 2])
197 ZFS_LINUX_TEST_RESULT([blkdev_put_holder], [
199 AC_DEFINE(HAVE_BLKDEV_PUT_HOLDER, 1,
200 [blkdev_put() accepts void* as arg 2])
203 AC_MSG_CHECKING([whether bdev_release() exists])
204 ZFS_LINUX_TEST_RESULT([bdev_release], [
206 AC_DEFINE(HAVE_BDEV_RELEASE, 1,
207 [bdev_release() exists])
216 dnl # 4.1 API, exported blkdev_reread_part() symbol, back ported to the
217 dnl # 3.10.0 CentOS 7.x enterprise kernels.
219 AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_REREAD_PART], [
220 ZFS_LINUX_TEST_SRC([blkdev_reread_part], [
221 #include <linux/fs.h>
222 #include <linux/blkdev.h>
224 struct block_device *bdev = NULL;
227 error = blkdev_reread_part(bdev);
231 AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_REREAD_PART], [
232 AC_MSG_CHECKING([whether blkdev_reread_part() exists])
233 ZFS_LINUX_TEST_RESULT([blkdev_reread_part], [
235 AC_DEFINE(HAVE_BLKDEV_REREAD_PART, 1,
236 [blkdev_reread_part() exists])
243 dnl # check_disk_change() was removed in 5.10
245 AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_CHECK_DISK_CHANGE], [
246 ZFS_LINUX_TEST_SRC([check_disk_change], [
247 #include <linux/fs.h>
248 #include <linux/blkdev.h>
250 struct block_device *bdev = NULL;
253 error = check_disk_change(bdev);
257 AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_CHECK_DISK_CHANGE], [
258 AC_MSG_CHECKING([whether check_disk_change() exists])
259 ZFS_LINUX_TEST_RESULT([check_disk_change], [
261 AC_DEFINE(HAVE_CHECK_DISK_CHANGE, 1,
262 [check_disk_change() exists])
269 dnl # 6.5.x API change
270 dnl # disk_check_media_change() was added
272 AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_DISK_CHECK_MEDIA_CHANGE], [
273 ZFS_LINUX_TEST_SRC([disk_check_media_change], [
274 #include <linux/fs.h>
275 #include <linux/blkdev.h>
277 struct block_device *bdev = NULL;
280 error = disk_check_media_change(bdev->bd_disk);
284 AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_DISK_CHECK_MEDIA_CHANGE], [
285 AC_MSG_CHECKING([whether disk_check_media_change() exists])
286 ZFS_LINUX_TEST_RESULT([disk_check_media_change], [
288 AC_DEFINE(HAVE_DISK_CHECK_MEDIA_CHANGE, 1,
289 [disk_check_media_change() exists])
296 dnl # bdev_kobj() is introduced from 5.12
298 AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_KOBJ], [
299 ZFS_LINUX_TEST_SRC([bdev_kobj], [
300 #include <linux/fs.h>
301 #include <linux/blkdev.h>
302 #include <linux/kobject.h>
304 struct block_device *bdev = NULL;
305 struct kobject *disk_kobj;
306 disk_kobj = bdev_kobj(bdev);
310 AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_BDEV_KOBJ], [
311 AC_MSG_CHECKING([whether bdev_kobj() exists])
312 ZFS_LINUX_TEST_RESULT([bdev_kobj], [
314 AC_DEFINE(HAVE_BDEV_KOBJ, 1,
315 [bdev_kobj() exists])
322 dnl # part_to_dev() was removed in 5.12
324 AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_PART_TO_DEV], [
325 ZFS_LINUX_TEST_SRC([part_to_dev], [
326 #include <linux/fs.h>
327 #include <linux/blkdev.h>
329 struct hd_struct *p = NULL;
331 pdev = part_to_dev(p);
335 AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_PART_TO_DEV], [
336 AC_MSG_CHECKING([whether part_to_dev() exists])
337 ZFS_LINUX_TEST_RESULT([part_to_dev], [
339 AC_DEFINE(HAVE_PART_TO_DEV, 1,
340 [part_to_dev() exists])
347 dnl # 5.10 API, check_disk_change() is removed, in favor of
348 dnl # bdev_check_media_change(), which doesn't force revalidation
350 AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_CHECK_MEDIA_CHANGE], [
351 ZFS_LINUX_TEST_SRC([bdev_check_media_change], [
352 #include <linux/fs.h>
353 #include <linux/blkdev.h>
355 struct block_device *bdev = NULL;
358 error = bdev_check_media_change(bdev);
362 AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_BDEV_CHECK_MEDIA_CHANGE], [
363 AC_MSG_CHECKING([whether bdev_check_media_change() exists])
364 ZFS_LINUX_TEST_RESULT([bdev_check_media_change], [
366 AC_DEFINE(HAVE_BDEV_CHECK_MEDIA_CHANGE, 1,
367 [bdev_check_media_change() exists])
374 dnl # 2.6.22 API change
375 dnl # Single argument invalidate_bdev()
377 AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_INVALIDATE_BDEV], [
378 ZFS_LINUX_TEST_SRC([invalidate_bdev], [
379 #include <linux/buffer_head.h>
380 #include <linux/blkdev.h>
382 struct block_device *bdev = NULL;
383 invalidate_bdev(bdev);
387 AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_INVALIDATE_BDEV], [
388 AC_MSG_CHECKING([whether invalidate_bdev() exists])
389 ZFS_LINUX_TEST_RESULT([invalidate_bdev], [
392 ZFS_LINUX_TEST_ERROR([invalidate_bdev()])
397 dnl # 5.11 API, lookup_bdev() takes dev_t argument.
398 dnl # 2.6.27 API, lookup_bdev() was first exported.
400 AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_LOOKUP_BDEV], [
401 ZFS_LINUX_TEST_SRC([lookup_bdev_devt], [
402 #include <linux/blkdev.h>
404 int error __attribute__ ((unused));
405 const char path[] = "/example/path";
408 error = lookup_bdev(path, &dev);
411 ZFS_LINUX_TEST_SRC([lookup_bdev_1arg], [
412 #include <linux/fs.h>
413 #include <linux/blkdev.h>
415 struct block_device *bdev __attribute__ ((unused));
416 const char path[] = "/example/path";
418 bdev = lookup_bdev(path);
422 AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_LOOKUP_BDEV], [
423 AC_MSG_CHECKING([whether lookup_bdev() wants dev_t arg])
424 ZFS_LINUX_TEST_RESULT_SYMBOL([lookup_bdev_devt],
425 [lookup_bdev], [fs/block_dev.c], [
427 AC_DEFINE(HAVE_DEVT_LOOKUP_BDEV, 1,
428 [lookup_bdev() wants dev_t arg])
432 AC_MSG_CHECKING([whether lookup_bdev() wants 1 arg])
433 ZFS_LINUX_TEST_RESULT_SYMBOL([lookup_bdev_1arg],
434 [lookup_bdev], [fs/block_dev.c], [
436 AC_DEFINE(HAVE_1ARG_LOOKUP_BDEV, 1,
437 [lookup_bdev() wants 1 arg])
439 ZFS_LINUX_TEST_ERROR([lookup_bdev()])
445 dnl # 2.6.30 API change
447 dnl # The bdev_physical_block_size() interface was added to provide a way
448 dnl # to determine the smallest write which can be performed without a
449 dnl # read-modify-write operation.
451 dnl # Unfortunately, this interface isn't entirely reliable because
452 dnl # drives are sometimes known to misreport this value.
454 AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_PHYSICAL_BLOCK_SIZE], [
455 ZFS_LINUX_TEST_SRC([bdev_physical_block_size], [
456 #include <linux/blkdev.h>
458 struct block_device *bdev __attribute__ ((unused)) = NULL;
459 bdev_physical_block_size(bdev);
463 AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_BDEV_PHYSICAL_BLOCK_SIZE], [
464 AC_MSG_CHECKING([whether bdev_physical_block_size() is available])
465 ZFS_LINUX_TEST_RESULT([bdev_physical_block_size], [
468 ZFS_LINUX_TEST_ERROR([bdev_physical_block_size()])
473 dnl # 2.6.30 API change
474 dnl # Added bdev_logical_block_size().
476 AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_LOGICAL_BLOCK_SIZE], [
477 ZFS_LINUX_TEST_SRC([bdev_logical_block_size], [
478 #include <linux/blkdev.h>
480 struct block_device *bdev __attribute__ ((unused)) = NULL;
481 bdev_logical_block_size(bdev);
485 AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_BDEV_LOGICAL_BLOCK_SIZE], [
486 AC_MSG_CHECKING([whether bdev_logical_block_size() is available])
487 ZFS_LINUX_TEST_RESULT([bdev_logical_block_size], [
490 ZFS_LINUX_TEST_ERROR([bdev_logical_block_size()])
495 dnl # 5.11 API change
496 dnl # Added bdev_whole() helper.
498 AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_WHOLE], [
499 ZFS_LINUX_TEST_SRC([bdev_whole], [
500 #include <linux/blkdev.h>
502 struct block_device *bdev = NULL;
503 bdev = bdev_whole(bdev);
507 AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_BDEV_WHOLE], [
508 AC_MSG_CHECKING([whether bdev_whole() is available])
509 ZFS_LINUX_TEST_RESULT([bdev_whole], [
511 AC_DEFINE(HAVE_BDEV_WHOLE, 1, [bdev_whole() is available])
518 dnl # 5.16 API change
519 dnl # Added bdev_nr_bytes() helper.
521 AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_NR_BYTES], [
522 ZFS_LINUX_TEST_SRC([bdev_nr_bytes], [
523 #include <linux/blkdev.h>
525 struct block_device *bdev = NULL;
526 loff_t nr_bytes __attribute__ ((unused)) = 0;
527 nr_bytes = bdev_nr_bytes(bdev);
531 AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_BDEV_NR_BYTES], [
532 AC_MSG_CHECKING([whether bdev_nr_bytes() is available])
533 ZFS_LINUX_TEST_RESULT([bdev_nr_bytes], [
535 AC_DEFINE(HAVE_BDEV_NR_BYTES, 1, [bdev_nr_bytes() is available])
542 dnl # 5.20 API change,
543 dnl # Removed bdevname(), snprintf(.., %pg) should be used.
545 AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BDEVNAME], [
546 ZFS_LINUX_TEST_SRC([bdevname], [
547 #include <linux/fs.h>
548 #include <linux/blkdev.h>
550 struct block_device *bdev __attribute__ ((unused)) = NULL;
551 char path[BDEVNAME_SIZE];
553 (void) bdevname(bdev, path);
557 AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_BDEVNAME], [
558 AC_MSG_CHECKING([whether bdevname() exists])
559 ZFS_LINUX_TEST_RESULT([bdevname], [
560 AC_DEFINE(HAVE_BDEVNAME, 1, [bdevname() is available])
568 dnl # TRIM support: discard and secure erase. We make use of asynchronous
569 dnl # functions when available.
572 dnl # sync discard: blkdev_issue_discard(..., 0)
573 dnl # sync erase: blkdev_issue_discard(..., BLKDEV_DISCARD_SECURE)
574 dnl # async discard: [not available]
575 dnl # async erase: [not available]
578 dnl # sync discard: blkdev_issue_discard(..., 0)
579 dnl # sync erase: blkdev_issue_discard(..., BLKDEV_DISCARD_SECURE)
580 dnl # async discard: __blkdev_issue_discard(..., 0)
581 dnl # async erase: __blkdev_issue_discard(..., BLKDEV_DISCARD_SECURE)
584 dnl # sync discard: blkdev_issue_discard(...)
585 dnl # sync erase: blkdev_issue_secure_erase(...)
586 dnl # async discard: __blkdev_issue_discard(...)
587 dnl # async erase: [not available]
589 AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_ISSUE_DISCARD], [
590 ZFS_LINUX_TEST_SRC([blkdev_issue_discard_noflags], [
591 #include <linux/blkdev.h>
593 struct block_device *bdev = NULL;
595 sector_t nr_sects = 0;
596 int error __attribute__ ((unused));
598 error = blkdev_issue_discard(bdev,
599 sector, nr_sects, GFP_KERNEL);
601 ZFS_LINUX_TEST_SRC([blkdev_issue_discard_flags], [
602 #include <linux/blkdev.h>
604 struct block_device *bdev = NULL;
606 sector_t nr_sects = 0;
607 unsigned long flags = 0;
608 int error __attribute__ ((unused));
610 error = blkdev_issue_discard(bdev,
611 sector, nr_sects, GFP_KERNEL, flags);
613 ZFS_LINUX_TEST_SRC([blkdev_issue_discard_async_noflags], [
614 #include <linux/blkdev.h>
616 struct block_device *bdev = NULL;
618 sector_t nr_sects = 0;
619 struct bio *biop = NULL;
620 int error __attribute__ ((unused));
622 error = __blkdev_issue_discard(bdev,
623 sector, nr_sects, GFP_KERNEL, &biop);
625 ZFS_LINUX_TEST_SRC([blkdev_issue_discard_async_flags], [
626 #include <linux/blkdev.h>
628 struct block_device *bdev = NULL;
630 sector_t nr_sects = 0;
631 unsigned long flags = 0;
632 struct bio *biop = NULL;
633 int error __attribute__ ((unused));
635 error = __blkdev_issue_discard(bdev,
636 sector, nr_sects, GFP_KERNEL, flags, &biop);
638 ZFS_LINUX_TEST_SRC([blkdev_issue_secure_erase], [
639 #include <linux/blkdev.h>
641 struct block_device *bdev = NULL;
643 sector_t nr_sects = 0;
644 int error __attribute__ ((unused));
646 error = blkdev_issue_secure_erase(bdev,
647 sector, nr_sects, GFP_KERNEL);
651 AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_ISSUE_DISCARD], [
652 AC_MSG_CHECKING([whether blkdev_issue_discard() is available])
653 ZFS_LINUX_TEST_RESULT([blkdev_issue_discard_noflags], [
655 AC_DEFINE(HAVE_BLKDEV_ISSUE_DISCARD_NOFLAGS, 1,
656 [blkdev_issue_discard() is available])
660 AC_MSG_CHECKING([whether blkdev_issue_discard(flags) is available])
661 ZFS_LINUX_TEST_RESULT([blkdev_issue_discard_flags], [
663 AC_DEFINE(HAVE_BLKDEV_ISSUE_DISCARD_FLAGS, 1,
664 [blkdev_issue_discard(flags) is available])
668 AC_MSG_CHECKING([whether __blkdev_issue_discard() is available])
669 ZFS_LINUX_TEST_RESULT([blkdev_issue_discard_async_noflags], [
671 AC_DEFINE(HAVE_BLKDEV_ISSUE_DISCARD_ASYNC_NOFLAGS, 1,
672 [__blkdev_issue_discard() is available])
676 AC_MSG_CHECKING([whether __blkdev_issue_discard(flags) is available])
677 ZFS_LINUX_TEST_RESULT([blkdev_issue_discard_async_flags], [
679 AC_DEFINE(HAVE_BLKDEV_ISSUE_DISCARD_ASYNC_FLAGS, 1,
680 [__blkdev_issue_discard(flags) is available])
684 AC_MSG_CHECKING([whether blkdev_issue_secure_erase() is available])
685 ZFS_LINUX_TEST_RESULT([blkdev_issue_secure_erase], [
687 AC_DEFINE(HAVE_BLKDEV_ISSUE_SECURE_ERASE, 1,
688 [blkdev_issue_secure_erase() is available])
695 dnl # 5.13 API change
696 dnl # blkdev_get_by_path() no longer handles ERESTARTSYS
698 dnl # Unfortunately we're forced to rely solely on the kernel version
699 dnl # number in order to determine the expected behavior. This was an
700 dnl # internal change to blkdev_get_by_dev(), see commit a8ed1a0607.
702 AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_GET_ERESTARTSYS], [
703 AC_MSG_CHECKING([whether blkdev_get_by_path() handles ERESTARTSYS])
704 AS_VERSION_COMPARE([$LINUX_VERSION], [5.13.0], [
706 AC_DEFINE(HAVE_BLKDEV_GET_ERESTARTSYS, 1,
707 [blkdev_get_by_path() handles ERESTARTSYS])
716 dnl # 6.5.x API change
717 dnl # BLK_STS_NEXUS replaced with BLK_STS_RESV_CONFLICT
719 AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BLK_STS_RESV_CONFLICT], [
720 ZFS_LINUX_TEST_SRC([blk_sts_resv_conflict], [
721 #include <linux/blkdev.h>
723 blk_status_t s __attribute__ ((unused)) = BLK_STS_RESV_CONFLICT;
727 AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_BLK_STS_RESV_CONFLICT], [
728 AC_MSG_CHECKING([whether BLK_STS_RESV_CONFLICT is defined])
729 ZFS_LINUX_TEST_RESULT([blk_sts_resv_conflict], [
730 AC_DEFINE(HAVE_BLK_STS_RESV_CONFLICT, 1, [BLK_STS_RESV_CONFLICT is defined])
738 AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV], [
739 ZFS_AC_KERNEL_SRC_BLKDEV_GET_BY_PATH
740 ZFS_AC_KERNEL_SRC_BLKDEV_GET_BY_PATH_4ARG
741 ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_OPEN_BY_PATH
742 ZFS_AC_KERNEL_SRC_BDEV_FILE_OPEN_BY_PATH
743 ZFS_AC_KERNEL_SRC_BLKDEV_PUT
744 ZFS_AC_KERNEL_SRC_BLKDEV_PUT_HOLDER
745 ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_RELEASE
746 ZFS_AC_KERNEL_SRC_BLKDEV_REREAD_PART
747 ZFS_AC_KERNEL_SRC_BLKDEV_INVALIDATE_BDEV
748 ZFS_AC_KERNEL_SRC_BLKDEV_LOOKUP_BDEV
749 ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_LOGICAL_BLOCK_SIZE
750 ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_PHYSICAL_BLOCK_SIZE
751 ZFS_AC_KERNEL_SRC_BLKDEV_CHECK_DISK_CHANGE
752 ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_CHECK_MEDIA_CHANGE
753 ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_WHOLE
754 ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_NR_BYTES
755 ZFS_AC_KERNEL_SRC_BLKDEV_BDEVNAME
756 ZFS_AC_KERNEL_SRC_BLKDEV_ISSUE_DISCARD
757 ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_KOBJ
758 ZFS_AC_KERNEL_SRC_BLKDEV_PART_TO_DEV
759 ZFS_AC_KERNEL_SRC_BLKDEV_DISK_CHECK_MEDIA_CHANGE
760 ZFS_AC_KERNEL_SRC_BLKDEV_BLK_STS_RESV_CONFLICT
761 ZFS_AC_KERNEL_SRC_BLKDEV_BLK_MODE_T
764 AC_DEFUN([ZFS_AC_KERNEL_BLKDEV], [
765 ZFS_AC_KERNEL_BLKDEV_GET_BY_PATH
766 ZFS_AC_KERNEL_BLKDEV_PUT
767 ZFS_AC_KERNEL_BLKDEV_REREAD_PART
768 ZFS_AC_KERNEL_BLKDEV_INVALIDATE_BDEV
769 ZFS_AC_KERNEL_BLKDEV_LOOKUP_BDEV
770 ZFS_AC_KERNEL_BLKDEV_BDEV_LOGICAL_BLOCK_SIZE
771 ZFS_AC_KERNEL_BLKDEV_BDEV_PHYSICAL_BLOCK_SIZE
772 ZFS_AC_KERNEL_BLKDEV_CHECK_DISK_CHANGE
773 ZFS_AC_KERNEL_BLKDEV_BDEV_CHECK_MEDIA_CHANGE
774 ZFS_AC_KERNEL_BLKDEV_BDEV_WHOLE
775 ZFS_AC_KERNEL_BLKDEV_BDEV_NR_BYTES
776 ZFS_AC_KERNEL_BLKDEV_BDEVNAME
777 ZFS_AC_KERNEL_BLKDEV_GET_ERESTARTSYS
778 ZFS_AC_KERNEL_BLKDEV_ISSUE_DISCARD
779 ZFS_AC_KERNEL_BLKDEV_BDEV_KOBJ
780 ZFS_AC_KERNEL_BLKDEV_PART_TO_DEV
781 ZFS_AC_KERNEL_BLKDEV_DISK_CHECK_MEDIA_CHANGE
782 ZFS_AC_KERNEL_BLKDEV_BLK_STS_RESV_CONFLICT
783 ZFS_AC_KERNEL_BLKDEV_BLK_MODE_T