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