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 38fd45b686SMartin Matuskadnl # 39fd45b686SMartin Matuskadnl # 6.8.x API change 40fd45b686SMartin Matuskadnl # bdev_open_by_path() replaces blkdev_get_by_path() 41fd45b686SMartin Matuskadnl # 42fd45b686SMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_OPEN_BY_PATH], [ 43fd45b686SMartin Matuska ZFS_LINUX_TEST_SRC([bdev_open_by_path], [ 44fd45b686SMartin Matuska #include <linux/fs.h> 45fd45b686SMartin Matuska #include <linux/blkdev.h> 46fd45b686SMartin Matuska ], [ 47fd45b686SMartin Matuska struct bdev_handle *bdh __attribute__ ((unused)) = NULL; 48fd45b686SMartin Matuska const char *path = "path"; 49fd45b686SMartin Matuska fmode_t mode = 0; 50fd45b686SMartin Matuska void *holder = NULL; 51fd45b686SMartin Matuska struct blk_holder_ops h; 52fd45b686SMartin Matuska 53fd45b686SMartin Matuska bdh = bdev_open_by_path(path, mode, holder, &h); 54fd45b686SMartin Matuska ]) 55fd45b686SMartin Matuska]) 56fd45b686SMartin Matuska 57*1719886fSMartin Matuskadnl # 58*1719886fSMartin Matuskadnl # 6.9.x API change 59*1719886fSMartin Matuskadnl # bdev_file_open_by_path() replaced bdev_open_by_path(), 60*1719886fSMartin Matuskadnl # and returns struct file* 61*1719886fSMartin Matuskadnl # 62*1719886fSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_BDEV_FILE_OPEN_BY_PATH], [ 63*1719886fSMartin Matuska ZFS_LINUX_TEST_SRC([bdev_file_open_by_path], [ 64*1719886fSMartin Matuska #include <linux/fs.h> 65*1719886fSMartin Matuska #include <linux/blkdev.h> 66*1719886fSMartin Matuska ], [ 67*1719886fSMartin Matuska struct file *file __attribute__ ((unused)) = NULL; 68*1719886fSMartin Matuska const char *path = "path"; 69*1719886fSMartin Matuska fmode_t mode = 0; 70*1719886fSMartin Matuska void *holder = NULL; 71*1719886fSMartin Matuska struct blk_holder_ops h; 72*1719886fSMartin Matuska 73*1719886fSMartin Matuska file = bdev_file_open_by_path(path, mode, holder, &h); 74*1719886fSMartin Matuska ]) 75*1719886fSMartin Matuska]) 76*1719886fSMartin Matuska 77eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_GET_BY_PATH], [ 78315ee00fSMartin Matuska AC_MSG_CHECKING([whether blkdev_get_by_path() exists and takes 3 args]) 79eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([blkdev_get_by_path], [ 80eda14cbcSMatt Macy AC_MSG_RESULT(yes) 81eda14cbcSMatt Macy ], [ 82315ee00fSMartin Matuska AC_MSG_RESULT(no) 83315ee00fSMartin Matuska AC_MSG_CHECKING([whether blkdev_get_by_path() exists and takes 4 args]) 84315ee00fSMartin Matuska ZFS_LINUX_TEST_RESULT([blkdev_get_by_path_4arg], [ 85315ee00fSMartin Matuska AC_DEFINE(HAVE_BLKDEV_GET_BY_PATH_4ARG, 1, 86315ee00fSMartin Matuska [blkdev_get_by_path() exists and takes 4 args]) 87315ee00fSMartin Matuska AC_MSG_RESULT(yes) 88315ee00fSMartin Matuska ], [ 89fd45b686SMartin Matuska AC_MSG_RESULT(no) 90fd45b686SMartin Matuska AC_MSG_CHECKING([whether bdev_open_by_path() exists]) 91fd45b686SMartin Matuska ZFS_LINUX_TEST_RESULT([bdev_open_by_path], [ 92fd45b686SMartin Matuska AC_DEFINE(HAVE_BDEV_OPEN_BY_PATH, 1, 93fd45b686SMartin Matuska [bdev_open_by_path() exists]) 94fd45b686SMartin Matuska AC_MSG_RESULT(yes) 95fd45b686SMartin Matuska ], [ 96*1719886fSMartin Matuska AC_MSG_RESULT(no) 97*1719886fSMartin Matuska AC_MSG_CHECKING([whether bdev_file_open_by_path() exists]) 98*1719886fSMartin Matuska ZFS_LINUX_TEST_RESULT([bdev_file_open_by_path], [ 99*1719886fSMartin Matuska AC_DEFINE(HAVE_BDEV_FILE_OPEN_BY_PATH, 1, 100*1719886fSMartin Matuska [bdev_file_open_by_path() exists]) 101*1719886fSMartin Matuska AC_MSG_RESULT(yes) 102*1719886fSMartin Matuska ], [ 103*1719886fSMartin Matuska AC_MSG_RESULT(no) 104eda14cbcSMatt Macy ZFS_LINUX_TEST_ERROR([blkdev_get_by_path()]) 105eda14cbcSMatt Macy ]) 106eda14cbcSMatt Macy ]) 107315ee00fSMartin Matuska ]) 108fd45b686SMartin Matuska ]) 109*1719886fSMartin Matuska]) 110315ee00fSMartin Matuska 111315ee00fSMartin Matuskadnl # 112315ee00fSMartin Matuskadnl # 6.5.x API change 113315ee00fSMartin Matuskadnl # blk_mode_t was added as a type to supercede some places where fmode_t 114315ee00fSMartin Matuskadnl # is used 115315ee00fSMartin Matuskadnl # 116315ee00fSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BLK_MODE_T], [ 117315ee00fSMartin Matuska ZFS_LINUX_TEST_SRC([blk_mode_t], [ 118315ee00fSMartin Matuska #include <linux/fs.h> 119315ee00fSMartin Matuska #include <linux/blkdev.h> 120315ee00fSMartin Matuska ], [ 121315ee00fSMartin Matuska blk_mode_t m __attribute((unused)) = (blk_mode_t)0; 122315ee00fSMartin Matuska ]) 123315ee00fSMartin Matuska]) 124315ee00fSMartin Matuska 125315ee00fSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_BLK_MODE_T], [ 126315ee00fSMartin Matuska AC_MSG_CHECKING([whether blk_mode_t is defined]) 127315ee00fSMartin Matuska ZFS_LINUX_TEST_RESULT([blk_mode_t], [ 128315ee00fSMartin Matuska AC_MSG_RESULT(yes) 129315ee00fSMartin Matuska AC_DEFINE(HAVE_BLK_MODE_T, 1, [blk_mode_t is defined]) 130315ee00fSMartin Matuska ], [ 131315ee00fSMartin Matuska AC_MSG_RESULT(no) 132315ee00fSMartin Matuska ]) 133315ee00fSMartin Matuska]) 134eda14cbcSMatt Macy 135eda14cbcSMatt Macydnl # 136eda14cbcSMatt Macydnl # 2.6.38 API change, 137eda14cbcSMatt Macydnl # Added blkdev_put() 138eda14cbcSMatt Macydnl # 139eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_PUT], [ 140eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([blkdev_put], [ 141eda14cbcSMatt Macy #include <linux/fs.h> 142eda14cbcSMatt Macy #include <linux/blkdev.h> 143eda14cbcSMatt Macy ], [ 144eda14cbcSMatt Macy struct block_device *bdev = NULL; 145eda14cbcSMatt Macy fmode_t mode = 0; 146eda14cbcSMatt Macy 147eda14cbcSMatt Macy blkdev_put(bdev, mode); 148eda14cbcSMatt Macy ]) 149eda14cbcSMatt Macy]) 150eda14cbcSMatt Macy 151315ee00fSMartin Matuskadnl # 152315ee00fSMartin Matuskadnl # 6.5.x API change. 153315ee00fSMartin Matuskadnl # blkdev_put() takes (void* holder) as arg 2 154315ee00fSMartin Matuskadnl # 155315ee00fSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_PUT_HOLDER], [ 156315ee00fSMartin Matuska ZFS_LINUX_TEST_SRC([blkdev_put_holder], [ 157315ee00fSMartin Matuska #include <linux/fs.h> 158315ee00fSMartin Matuska #include <linux/blkdev.h> 159315ee00fSMartin Matuska ], [ 160315ee00fSMartin Matuska struct block_device *bdev = NULL; 161315ee00fSMartin Matuska void *holder = NULL; 162315ee00fSMartin Matuska 163315ee00fSMartin Matuska blkdev_put(bdev, holder); 164315ee00fSMartin Matuska ]) 165315ee00fSMartin Matuska]) 166315ee00fSMartin Matuska 167fd45b686SMartin Matuskadnl # 168fd45b686SMartin Matuskadnl # 6.8.x API change 169fd45b686SMartin Matuskadnl # bdev_release() replaces blkdev_put() 170fd45b686SMartin Matuskadnl # 171fd45b686SMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_RELEASE], [ 172fd45b686SMartin Matuska ZFS_LINUX_TEST_SRC([bdev_release], [ 173fd45b686SMartin Matuska #include <linux/fs.h> 174fd45b686SMartin Matuska #include <linux/blkdev.h> 175fd45b686SMartin Matuska ], [ 176fd45b686SMartin Matuska struct bdev_handle *bdh = NULL; 177fd45b686SMartin Matuska bdev_release(bdh); 178fd45b686SMartin Matuska ]) 179fd45b686SMartin Matuska]) 180fd45b686SMartin Matuska 181*1719886fSMartin Matuskadnl # 182*1719886fSMartin Matuskadnl # 6.9.x API change 183*1719886fSMartin Matuskadnl # 184*1719886fSMartin Matuskadnl # bdev_release() now private, but because bdev_file_open_by_path() returns 185*1719886fSMartin Matuskadnl # struct file*, we can just use fput(). So the blkdev_put test no longer 186*1719886fSMartin Matuskadnl # fails if not found. 187*1719886fSMartin Matuskadnl # 188*1719886fSMartin Matuska 189eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_PUT], [ 190eda14cbcSMatt Macy AC_MSG_CHECKING([whether blkdev_put() exists]) 191eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([blkdev_put], [ 192eda14cbcSMatt Macy AC_MSG_RESULT(yes) 193*1719886fSMartin Matuska AC_DEFINE(HAVE_BLKDEV_PUT, 1, [blkdev_put() exists]) 194eda14cbcSMatt Macy ], [ 195fd45b686SMartin Matuska AC_MSG_RESULT(no) 196315ee00fSMartin Matuska AC_MSG_CHECKING([whether blkdev_put() accepts void* as arg 2]) 197315ee00fSMartin Matuska ZFS_LINUX_TEST_RESULT([blkdev_put_holder], [ 198315ee00fSMartin Matuska AC_MSG_RESULT(yes) 199315ee00fSMartin Matuska AC_DEFINE(HAVE_BLKDEV_PUT_HOLDER, 1, 200315ee00fSMartin Matuska [blkdev_put() accepts void* as arg 2]) 201315ee00fSMartin Matuska ], [ 202fd45b686SMartin Matuska AC_MSG_RESULT(no) 203fd45b686SMartin Matuska AC_MSG_CHECKING([whether bdev_release() exists]) 204fd45b686SMartin Matuska ZFS_LINUX_TEST_RESULT([bdev_release], [ 205fd45b686SMartin Matuska AC_MSG_RESULT(yes) 206fd45b686SMartin Matuska AC_DEFINE(HAVE_BDEV_RELEASE, 1, 207fd45b686SMartin Matuska [bdev_release() exists]) 208fd45b686SMartin Matuska ], [ 209*1719886fSMartin Matuska AC_MSG_RESULT(no) 210eda14cbcSMatt Macy ]) 211eda14cbcSMatt Macy ]) 212315ee00fSMartin Matuska ]) 213fd45b686SMartin Matuska]) 214eda14cbcSMatt Macy 215eda14cbcSMatt Macydnl # 216eda14cbcSMatt Macydnl # 4.1 API, exported blkdev_reread_part() symbol, back ported to the 217eda14cbcSMatt Macydnl # 3.10.0 CentOS 7.x enterprise kernels. 218eda14cbcSMatt Macydnl # 219eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_REREAD_PART], [ 220eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([blkdev_reread_part], [ 221eda14cbcSMatt Macy #include <linux/fs.h> 222eda14cbcSMatt Macy #include <linux/blkdev.h> 223eda14cbcSMatt Macy ], [ 224eda14cbcSMatt Macy struct block_device *bdev = NULL; 225eda14cbcSMatt Macy int error; 226eda14cbcSMatt Macy 227eda14cbcSMatt Macy error = blkdev_reread_part(bdev); 228eda14cbcSMatt Macy ]) 229eda14cbcSMatt Macy]) 230eda14cbcSMatt Macy 231eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_REREAD_PART], [ 232eda14cbcSMatt Macy AC_MSG_CHECKING([whether blkdev_reread_part() exists]) 233eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([blkdev_reread_part], [ 234eda14cbcSMatt Macy AC_MSG_RESULT(yes) 235eda14cbcSMatt Macy AC_DEFINE(HAVE_BLKDEV_REREAD_PART, 1, 236eda14cbcSMatt Macy [blkdev_reread_part() exists]) 237eda14cbcSMatt Macy ], [ 238eda14cbcSMatt Macy AC_MSG_RESULT(no) 239eda14cbcSMatt Macy ]) 240eda14cbcSMatt Macy]) 241eda14cbcSMatt Macy 242eda14cbcSMatt Macydnl # 2437877fdebSMatt Macydnl # check_disk_change() was removed in 5.10 2447877fdebSMatt Macydnl # 2457877fdebSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_CHECK_DISK_CHANGE], [ 2467877fdebSMatt Macy ZFS_LINUX_TEST_SRC([check_disk_change], [ 2477877fdebSMatt Macy #include <linux/fs.h> 2487877fdebSMatt Macy #include <linux/blkdev.h> 2497877fdebSMatt Macy ], [ 2507877fdebSMatt Macy struct block_device *bdev = NULL; 2517877fdebSMatt Macy bool error; 2527877fdebSMatt Macy 2537877fdebSMatt Macy error = check_disk_change(bdev); 2547877fdebSMatt Macy ]) 2557877fdebSMatt Macy]) 2567877fdebSMatt Macy 2577877fdebSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_CHECK_DISK_CHANGE], [ 2587877fdebSMatt Macy AC_MSG_CHECKING([whether check_disk_change() exists]) 2597877fdebSMatt Macy ZFS_LINUX_TEST_RESULT([check_disk_change], [ 2607877fdebSMatt Macy AC_MSG_RESULT(yes) 2617877fdebSMatt Macy AC_DEFINE(HAVE_CHECK_DISK_CHANGE, 1, 2627877fdebSMatt Macy [check_disk_change() exists]) 2637877fdebSMatt Macy ], [ 2647877fdebSMatt Macy AC_MSG_RESULT(no) 2657877fdebSMatt Macy ]) 2667877fdebSMatt Macy]) 2677877fdebSMatt Macy 2687877fdebSMatt Macydnl # 269315ee00fSMartin Matuskadnl # 6.5.x API change 270315ee00fSMartin Matuskadnl # disk_check_media_change() was added 271315ee00fSMartin Matuskadnl # 272315ee00fSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_DISK_CHECK_MEDIA_CHANGE], [ 273315ee00fSMartin Matuska ZFS_LINUX_TEST_SRC([disk_check_media_change], [ 274315ee00fSMartin Matuska #include <linux/fs.h> 275315ee00fSMartin Matuska #include <linux/blkdev.h> 276315ee00fSMartin Matuska ], [ 277315ee00fSMartin Matuska struct block_device *bdev = NULL; 278315ee00fSMartin Matuska bool error; 279315ee00fSMartin Matuska 280315ee00fSMartin Matuska error = disk_check_media_change(bdev->bd_disk); 281315ee00fSMartin Matuska ]) 282315ee00fSMartin Matuska]) 283315ee00fSMartin Matuska 284315ee00fSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_DISK_CHECK_MEDIA_CHANGE], [ 285315ee00fSMartin Matuska AC_MSG_CHECKING([whether disk_check_media_change() exists]) 286315ee00fSMartin Matuska ZFS_LINUX_TEST_RESULT([disk_check_media_change], [ 287315ee00fSMartin Matuska AC_MSG_RESULT(yes) 288315ee00fSMartin Matuska AC_DEFINE(HAVE_DISK_CHECK_MEDIA_CHANGE, 1, 289315ee00fSMartin Matuska [disk_check_media_change() exists]) 290315ee00fSMartin Matuska ], [ 291315ee00fSMartin Matuska AC_MSG_RESULT(no) 292315ee00fSMartin Matuska ]) 293315ee00fSMartin Matuska]) 294315ee00fSMartin Matuska 295315ee00fSMartin Matuskadnl # 296be181ee2SMartin Matuskadnl # bdev_kobj() is introduced from 5.12 297be181ee2SMartin Matuskadnl # 298be181ee2SMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_KOBJ], [ 299be181ee2SMartin Matuska ZFS_LINUX_TEST_SRC([bdev_kobj], [ 300be181ee2SMartin Matuska #include <linux/fs.h> 301be181ee2SMartin Matuska #include <linux/blkdev.h> 302be181ee2SMartin Matuska #include <linux/kobject.h> 303be181ee2SMartin Matuska ], [ 304be181ee2SMartin Matuska struct block_device *bdev = NULL; 305be181ee2SMartin Matuska struct kobject *disk_kobj; 306be181ee2SMartin Matuska disk_kobj = bdev_kobj(bdev); 307be181ee2SMartin Matuska ]) 308be181ee2SMartin Matuska]) 309be181ee2SMartin Matuska 310be181ee2SMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_BDEV_KOBJ], [ 311be181ee2SMartin Matuska AC_MSG_CHECKING([whether bdev_kobj() exists]) 312be181ee2SMartin Matuska ZFS_LINUX_TEST_RESULT([bdev_kobj], [ 313be181ee2SMartin Matuska AC_MSG_RESULT(yes) 314be181ee2SMartin Matuska AC_DEFINE(HAVE_BDEV_KOBJ, 1, 315be181ee2SMartin Matuska [bdev_kobj() exists]) 316be181ee2SMartin Matuska ], [ 317be181ee2SMartin Matuska AC_MSG_RESULT(no) 318be181ee2SMartin Matuska ]) 319be181ee2SMartin Matuska]) 320be181ee2SMartin Matuska 321be181ee2SMartin Matuskadnl # 322be181ee2SMartin Matuskadnl # part_to_dev() was removed in 5.12 323be181ee2SMartin Matuskadnl # 324be181ee2SMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_PART_TO_DEV], [ 325be181ee2SMartin Matuska ZFS_LINUX_TEST_SRC([part_to_dev], [ 326be181ee2SMartin Matuska #include <linux/fs.h> 327be181ee2SMartin Matuska #include <linux/blkdev.h> 328be181ee2SMartin Matuska ], [ 329be181ee2SMartin Matuska struct hd_struct *p = NULL; 330be181ee2SMartin Matuska struct device *pdev; 331be181ee2SMartin Matuska pdev = part_to_dev(p); 332be181ee2SMartin Matuska ]) 333be181ee2SMartin Matuska]) 334be181ee2SMartin Matuska 335be181ee2SMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_PART_TO_DEV], [ 336be181ee2SMartin Matuska AC_MSG_CHECKING([whether part_to_dev() exists]) 337be181ee2SMartin Matuska ZFS_LINUX_TEST_RESULT([part_to_dev], [ 338be181ee2SMartin Matuska AC_MSG_RESULT(yes) 339be181ee2SMartin Matuska AC_DEFINE(HAVE_PART_TO_DEV, 1, 340be181ee2SMartin Matuska [part_to_dev() exists]) 341be181ee2SMartin Matuska ], [ 342be181ee2SMartin Matuska AC_MSG_RESULT(no) 343be181ee2SMartin Matuska ]) 344be181ee2SMartin Matuska]) 345be181ee2SMartin Matuska 346be181ee2SMartin Matuskadnl # 3477877fdebSMatt Macydnl # 5.10 API, check_disk_change() is removed, in favor of 3487877fdebSMatt Macydnl # bdev_check_media_change(), which doesn't force revalidation 3497877fdebSMatt Macydnl # 3507877fdebSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_CHECK_MEDIA_CHANGE], [ 3517877fdebSMatt Macy ZFS_LINUX_TEST_SRC([bdev_check_media_change], [ 3527877fdebSMatt Macy #include <linux/fs.h> 3537877fdebSMatt Macy #include <linux/blkdev.h> 3547877fdebSMatt Macy ], [ 3557877fdebSMatt Macy struct block_device *bdev = NULL; 3567877fdebSMatt Macy int error; 3577877fdebSMatt Macy 3587877fdebSMatt Macy error = bdev_check_media_change(bdev); 3597877fdebSMatt Macy ]) 3607877fdebSMatt Macy]) 3617877fdebSMatt Macy 3627877fdebSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_BDEV_CHECK_MEDIA_CHANGE], [ 36321b492edSMartin Matuska AC_MSG_CHECKING([whether bdev_check_media_change() exists]) 3647877fdebSMatt Macy ZFS_LINUX_TEST_RESULT([bdev_check_media_change], [ 3657877fdebSMatt Macy AC_MSG_RESULT(yes) 3667877fdebSMatt Macy AC_DEFINE(HAVE_BDEV_CHECK_MEDIA_CHANGE, 1, 3677877fdebSMatt Macy [bdev_check_media_change() exists]) 3687877fdebSMatt Macy ], [ 3697877fdebSMatt Macy AC_MSG_RESULT(no) 3707877fdebSMatt Macy ]) 3717877fdebSMatt Macy]) 3727877fdebSMatt Macy 3737877fdebSMatt Macydnl # 374eda14cbcSMatt Macydnl # 2.6.22 API change 375eda14cbcSMatt Macydnl # Single argument invalidate_bdev() 376eda14cbcSMatt Macydnl # 377eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_INVALIDATE_BDEV], [ 378eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([invalidate_bdev], [ 379eda14cbcSMatt Macy #include <linux/buffer_head.h> 380eda14cbcSMatt Macy #include <linux/blkdev.h> 381eda14cbcSMatt Macy ],[ 382eda14cbcSMatt Macy struct block_device *bdev = NULL; 383eda14cbcSMatt Macy invalidate_bdev(bdev); 384eda14cbcSMatt Macy ]) 385eda14cbcSMatt Macy]) 386eda14cbcSMatt Macy 387eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_INVALIDATE_BDEV], [ 388eda14cbcSMatt Macy AC_MSG_CHECKING([whether invalidate_bdev() exists]) 389eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([invalidate_bdev], [ 390eda14cbcSMatt Macy AC_MSG_RESULT(yes) 391eda14cbcSMatt Macy ],[ 392eda14cbcSMatt Macy ZFS_LINUX_TEST_ERROR([invalidate_bdev()]) 393eda14cbcSMatt Macy ]) 394eda14cbcSMatt Macy]) 395eda14cbcSMatt Macy 396eda14cbcSMatt Macydnl # 3977877fdebSMatt Macydnl # 5.11 API, lookup_bdev() takes dev_t argument. 3987877fdebSMatt Macydnl # 2.6.27 API, lookup_bdev() was first exported. 3997877fdebSMatt Macydnl # 4.4.0-6.21 API, lookup_bdev() on Ubuntu takes mode argument. 400eda14cbcSMatt Macydnl # 401eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_LOOKUP_BDEV], [ 4027877fdebSMatt Macy ZFS_LINUX_TEST_SRC([lookup_bdev_devt], [ 4037877fdebSMatt Macy #include <linux/blkdev.h> 4047877fdebSMatt Macy ], [ 4057877fdebSMatt Macy int error __attribute__ ((unused)); 4067877fdebSMatt Macy const char path[] = "/example/path"; 4077877fdebSMatt Macy dev_t dev; 4087877fdebSMatt Macy 4097877fdebSMatt Macy error = lookup_bdev(path, &dev); 4107877fdebSMatt Macy ]) 4117877fdebSMatt Macy 412eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([lookup_bdev_1arg], [ 413eda14cbcSMatt Macy #include <linux/fs.h> 414eda14cbcSMatt Macy #include <linux/blkdev.h> 415eda14cbcSMatt Macy ], [ 4167877fdebSMatt Macy struct block_device *bdev __attribute__ ((unused)); 4177877fdebSMatt Macy const char path[] = "/example/path"; 4187877fdebSMatt Macy 4197877fdebSMatt Macy bdev = lookup_bdev(path); 420eda14cbcSMatt Macy ]) 421eda14cbcSMatt Macy 4227877fdebSMatt Macy ZFS_LINUX_TEST_SRC([lookup_bdev_mode], [ 423eda14cbcSMatt Macy #include <linux/fs.h> 424eda14cbcSMatt Macy ], [ 4257877fdebSMatt Macy struct block_device *bdev __attribute__ ((unused)); 4267877fdebSMatt Macy const char path[] = "/example/path"; 4277877fdebSMatt Macy 4287877fdebSMatt Macy bdev = lookup_bdev(path, FMODE_READ); 429eda14cbcSMatt Macy ]) 430eda14cbcSMatt Macy]) 431eda14cbcSMatt Macy 432eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_LOOKUP_BDEV], [ 4337877fdebSMatt Macy AC_MSG_CHECKING([whether lookup_bdev() wants dev_t arg]) 4347877fdebSMatt Macy ZFS_LINUX_TEST_RESULT_SYMBOL([lookup_bdev_devt], 4357877fdebSMatt Macy [lookup_bdev], [fs/block_dev.c], [ 4367877fdebSMatt Macy AC_MSG_RESULT(yes) 4377877fdebSMatt Macy AC_DEFINE(HAVE_DEVT_LOOKUP_BDEV, 1, 4387877fdebSMatt Macy [lookup_bdev() wants dev_t arg]) 4397877fdebSMatt Macy ], [ 4407877fdebSMatt Macy AC_MSG_RESULT(no) 4417877fdebSMatt Macy 442eda14cbcSMatt Macy AC_MSG_CHECKING([whether lookup_bdev() wants 1 arg]) 443eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT_SYMBOL([lookup_bdev_1arg], 444eda14cbcSMatt Macy [lookup_bdev], [fs/block_dev.c], [ 445eda14cbcSMatt Macy AC_MSG_RESULT(yes) 446eda14cbcSMatt Macy AC_DEFINE(HAVE_1ARG_LOOKUP_BDEV, 1, 447eda14cbcSMatt Macy [lookup_bdev() wants 1 arg]) 448eda14cbcSMatt Macy ], [ 449eda14cbcSMatt Macy AC_MSG_RESULT(no) 450eda14cbcSMatt Macy 4517877fdebSMatt Macy AC_MSG_CHECKING([whether lookup_bdev() wants mode arg]) 4527877fdebSMatt Macy ZFS_LINUX_TEST_RESULT_SYMBOL([lookup_bdev_mode], 453eda14cbcSMatt Macy [lookup_bdev], [fs/block_dev.c], [ 454eda14cbcSMatt Macy AC_MSG_RESULT(yes) 4557877fdebSMatt Macy AC_DEFINE(HAVE_MODE_LOOKUP_BDEV, 1, 4567877fdebSMatt Macy [lookup_bdev() wants mode arg]) 457eda14cbcSMatt Macy ], [ 458eda14cbcSMatt Macy ZFS_LINUX_TEST_ERROR([lookup_bdev()]) 459eda14cbcSMatt Macy ]) 460eda14cbcSMatt Macy ]) 461eda14cbcSMatt Macy ]) 4627877fdebSMatt Macy]) 463eda14cbcSMatt Macy 464eda14cbcSMatt Macydnl # 465eda14cbcSMatt Macydnl # 2.6.30 API change 466eda14cbcSMatt Macydnl # 467eda14cbcSMatt Macydnl # The bdev_physical_block_size() interface was added to provide a way 468eda14cbcSMatt Macydnl # to determine the smallest write which can be performed without a 469eda14cbcSMatt Macydnl # read-modify-write operation. 470eda14cbcSMatt Macydnl # 471eda14cbcSMatt Macydnl # Unfortunately, this interface isn't entirely reliable because 472eda14cbcSMatt Macydnl # drives are sometimes known to misreport this value. 473eda14cbcSMatt Macydnl # 474eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_PHYSICAL_BLOCK_SIZE], [ 475eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([bdev_physical_block_size], [ 476eda14cbcSMatt Macy #include <linux/blkdev.h> 477eda14cbcSMatt Macy ],[ 478eda14cbcSMatt Macy struct block_device *bdev __attribute__ ((unused)) = NULL; 479eda14cbcSMatt Macy bdev_physical_block_size(bdev); 480eda14cbcSMatt Macy ]) 481eda14cbcSMatt Macy]) 482eda14cbcSMatt Macy 483eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_BDEV_PHYSICAL_BLOCK_SIZE], [ 484eda14cbcSMatt Macy AC_MSG_CHECKING([whether bdev_physical_block_size() is available]) 485eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([bdev_physical_block_size], [ 486eda14cbcSMatt Macy AC_MSG_RESULT(yes) 487eda14cbcSMatt Macy ],[ 488eda14cbcSMatt Macy ZFS_LINUX_TEST_ERROR([bdev_physical_block_size()]) 489eda14cbcSMatt Macy ]) 490eda14cbcSMatt Macy]) 491eda14cbcSMatt Macy 492eda14cbcSMatt Macydnl # 493eda14cbcSMatt Macydnl # 2.6.30 API change 494eda14cbcSMatt Macydnl # Added bdev_logical_block_size(). 495eda14cbcSMatt Macydnl # 496eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_LOGICAL_BLOCK_SIZE], [ 497eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([bdev_logical_block_size], [ 498eda14cbcSMatt Macy #include <linux/blkdev.h> 499eda14cbcSMatt Macy ],[ 500eda14cbcSMatt Macy struct block_device *bdev __attribute__ ((unused)) = NULL; 501eda14cbcSMatt Macy bdev_logical_block_size(bdev); 502eda14cbcSMatt Macy ]) 503eda14cbcSMatt Macy]) 504eda14cbcSMatt Macy 505eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_BDEV_LOGICAL_BLOCK_SIZE], [ 506eda14cbcSMatt Macy AC_MSG_CHECKING([whether bdev_logical_block_size() is available]) 507eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([bdev_logical_block_size], [ 508eda14cbcSMatt Macy AC_MSG_RESULT(yes) 509eda14cbcSMatt Macy ],[ 510eda14cbcSMatt Macy ZFS_LINUX_TEST_ERROR([bdev_logical_block_size()]) 511eda14cbcSMatt Macy ]) 512eda14cbcSMatt Macy]) 513eda14cbcSMatt Macy 5147877fdebSMatt Macydnl # 5157877fdebSMatt Macydnl # 5.11 API change 5167877fdebSMatt Macydnl # Added bdev_whole() helper. 5177877fdebSMatt Macydnl # 5187877fdebSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_WHOLE], [ 5197877fdebSMatt Macy ZFS_LINUX_TEST_SRC([bdev_whole], [ 5207877fdebSMatt Macy #include <linux/blkdev.h> 5217877fdebSMatt Macy ],[ 5227877fdebSMatt Macy struct block_device *bdev = NULL; 5237877fdebSMatt Macy bdev = bdev_whole(bdev); 5247877fdebSMatt Macy ]) 5257877fdebSMatt Macy]) 5267877fdebSMatt Macy 5277877fdebSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_BDEV_WHOLE], [ 5287877fdebSMatt Macy AC_MSG_CHECKING([whether bdev_whole() is available]) 5297877fdebSMatt Macy ZFS_LINUX_TEST_RESULT([bdev_whole], [ 5307877fdebSMatt Macy AC_MSG_RESULT(yes) 5317877fdebSMatt Macy AC_DEFINE(HAVE_BDEV_WHOLE, 1, [bdev_whole() is available]) 5327877fdebSMatt Macy ],[ 5337877fdebSMatt Macy AC_MSG_RESULT(no) 5347877fdebSMatt Macy ]) 5357877fdebSMatt Macy]) 5367877fdebSMatt Macy 537681ce946SMartin Matuskadnl # 538271171e0SMartin Matuskadnl # 5.20 API change, 539271171e0SMartin Matuskadnl # Removed bdevname(), snprintf(.., %pg) should be used. 540271171e0SMartin Matuskadnl # 541271171e0SMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BDEVNAME], [ 542271171e0SMartin Matuska ZFS_LINUX_TEST_SRC([bdevname], [ 543271171e0SMartin Matuska #include <linux/fs.h> 544271171e0SMartin Matuska #include <linux/blkdev.h> 545271171e0SMartin Matuska ], [ 546271171e0SMartin Matuska struct block_device *bdev __attribute__ ((unused)) = NULL; 547271171e0SMartin Matuska char path[BDEVNAME_SIZE]; 548271171e0SMartin Matuska 549271171e0SMartin Matuska (void) bdevname(bdev, path); 550271171e0SMartin Matuska ]) 551271171e0SMartin Matuska]) 552271171e0SMartin Matuska 553271171e0SMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_BDEVNAME], [ 554271171e0SMartin Matuska AC_MSG_CHECKING([whether bdevname() exists]) 555271171e0SMartin Matuska ZFS_LINUX_TEST_RESULT([bdevname], [ 556271171e0SMartin Matuska AC_DEFINE(HAVE_BDEVNAME, 1, [bdevname() is available]) 557271171e0SMartin Matuska AC_MSG_RESULT(yes) 558271171e0SMartin Matuska ], [ 559271171e0SMartin Matuska AC_MSG_RESULT(no) 560271171e0SMartin Matuska ]) 561271171e0SMartin Matuska]) 562271171e0SMartin Matuska 563271171e0SMartin Matuskadnl # 564*1719886fSMartin Matuskadnl # TRIM support: discard and secure erase. We make use of asynchronous 565*1719886fSMartin Matuskadnl # functions when available. 566e3aa18adSMartin Matuskadnl # 567*1719886fSMartin Matuskadnl # 3.10: 568*1719886fSMartin Matuskadnl # sync discard: blkdev_issue_discard(..., 0) 569*1719886fSMartin Matuskadnl # sync erase: blkdev_issue_discard(..., BLKDEV_DISCARD_SECURE) 570*1719886fSMartin Matuskadnl # async discard: [not available] 571*1719886fSMartin Matuskadnl # async erase: [not available] 572*1719886fSMartin Matuskadnl # 573*1719886fSMartin Matuskadnl # 4.7: 574*1719886fSMartin Matuskadnl # sync discard: blkdev_issue_discard(..., 0) 575*1719886fSMartin Matuskadnl # sync erase: blkdev_issue_discard(..., BLKDEV_DISCARD_SECURE) 576*1719886fSMartin Matuskadnl # async discard: __blkdev_issue_discard(..., 0) 577*1719886fSMartin Matuskadnl # async erase: __blkdev_issue_discard(..., BLKDEV_DISCARD_SECURE) 578*1719886fSMartin Matuskadnl # 579*1719886fSMartin Matuskadnl # 5.19: 580*1719886fSMartin Matuskadnl # sync discard: blkdev_issue_discard(...) 581*1719886fSMartin Matuskadnl # sync erase: blkdev_issue_secure_erase(...) 582*1719886fSMartin Matuskadnl # async discard: __blkdev_issue_discard(...) 583*1719886fSMartin Matuskadnl # async erase: [not available] 584*1719886fSMartin Matuskadnl # 585*1719886fSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_ISSUE_DISCARD], [ 586*1719886fSMartin Matuska ZFS_LINUX_TEST_SRC([blkdev_issue_discard_noflags], [ 587e3aa18adSMartin Matuska #include <linux/blkdev.h> 588e3aa18adSMartin Matuska ],[ 589e3aa18adSMartin Matuska struct block_device *bdev = NULL; 590e3aa18adSMartin Matuska sector_t sector = 0; 591e3aa18adSMartin Matuska sector_t nr_sects = 0; 592e3aa18adSMartin Matuska int error __attribute__ ((unused)); 593e3aa18adSMartin Matuska 594*1719886fSMartin Matuska error = blkdev_issue_discard(bdev, 595e3aa18adSMartin Matuska sector, nr_sects, GFP_KERNEL); 596e3aa18adSMartin Matuska ]) 597*1719886fSMartin Matuska ZFS_LINUX_TEST_SRC([blkdev_issue_discard_flags], [ 598*1719886fSMartin Matuska #include <linux/blkdev.h> 599*1719886fSMartin Matuska ],[ 600*1719886fSMartin Matuska struct block_device *bdev = NULL; 601*1719886fSMartin Matuska sector_t sector = 0; 602*1719886fSMartin Matuska sector_t nr_sects = 0; 603*1719886fSMartin Matuska unsigned long flags = 0; 604*1719886fSMartin Matuska int error __attribute__ ((unused)); 605e3aa18adSMartin Matuska 606*1719886fSMartin Matuska error = blkdev_issue_discard(bdev, 607*1719886fSMartin Matuska sector, nr_sects, GFP_KERNEL, flags); 608*1719886fSMartin Matuska ]) 609*1719886fSMartin Matuska ZFS_LINUX_TEST_SRC([blkdev_issue_discard_async_noflags], [ 610*1719886fSMartin Matuska #include <linux/blkdev.h> 611*1719886fSMartin Matuska ],[ 612*1719886fSMartin Matuska struct block_device *bdev = NULL; 613*1719886fSMartin Matuska sector_t sector = 0; 614*1719886fSMartin Matuska sector_t nr_sects = 0; 615*1719886fSMartin Matuska struct bio *biop = NULL; 616*1719886fSMartin Matuska int error __attribute__ ((unused)); 617*1719886fSMartin Matuska 618*1719886fSMartin Matuska error = __blkdev_issue_discard(bdev, 619*1719886fSMartin Matuska sector, nr_sects, GFP_KERNEL, &biop); 620*1719886fSMartin Matuska ]) 621a4e5e010SMartin Matuska ZFS_LINUX_TEST_SRC([blkdev_issue_discard_async_flags], [ 622a4e5e010SMartin Matuska #include <linux/blkdev.h> 623a4e5e010SMartin Matuska ],[ 624a4e5e010SMartin Matuska struct block_device *bdev = NULL; 625a4e5e010SMartin Matuska sector_t sector = 0; 626a4e5e010SMartin Matuska sector_t nr_sects = 0; 627a4e5e010SMartin Matuska unsigned long flags = 0; 628a4e5e010SMartin Matuska struct bio *biop = NULL; 629a4e5e010SMartin Matuska int error __attribute__ ((unused)); 630a4e5e010SMartin Matuska 631a4e5e010SMartin Matuska error = __blkdev_issue_discard(bdev, 632a4e5e010SMartin Matuska sector, nr_sects, GFP_KERNEL, flags, &biop); 633a4e5e010SMartin Matuska ]) 634*1719886fSMartin Matuska ZFS_LINUX_TEST_SRC([blkdev_issue_secure_erase], [ 635e3aa18adSMartin Matuska #include <linux/blkdev.h> 636e3aa18adSMartin Matuska ],[ 637e3aa18adSMartin Matuska struct block_device *bdev = NULL; 638e3aa18adSMartin Matuska sector_t sector = 0; 639e3aa18adSMartin Matuska sector_t nr_sects = 0; 640e3aa18adSMartin Matuska int error __attribute__ ((unused)); 641e3aa18adSMartin Matuska 642*1719886fSMartin Matuska error = blkdev_issue_secure_erase(bdev, 643*1719886fSMartin Matuska sector, nr_sects, GFP_KERNEL); 644e3aa18adSMartin Matuska ]) 645e3aa18adSMartin Matuska]) 646e3aa18adSMartin Matuska 647*1719886fSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_ISSUE_DISCARD], [ 648*1719886fSMartin Matuska AC_MSG_CHECKING([whether blkdev_issue_discard() is available]) 649*1719886fSMartin Matuska ZFS_LINUX_TEST_RESULT([blkdev_issue_discard_noflags], [ 650*1719886fSMartin Matuska AC_MSG_RESULT(yes) 651*1719886fSMartin Matuska AC_DEFINE(HAVE_BLKDEV_ISSUE_DISCARD_NOFLAGS, 1, 652*1719886fSMartin Matuska [blkdev_issue_discard() is available]) 653*1719886fSMartin Matuska ],[ 654*1719886fSMartin Matuska AC_MSG_RESULT(no) 655*1719886fSMartin Matuska ]) 656*1719886fSMartin Matuska AC_MSG_CHECKING([whether blkdev_issue_discard(flags) is available]) 657*1719886fSMartin Matuska ZFS_LINUX_TEST_RESULT([blkdev_issue_discard_flags], [ 658*1719886fSMartin Matuska AC_MSG_RESULT(yes) 659*1719886fSMartin Matuska AC_DEFINE(HAVE_BLKDEV_ISSUE_DISCARD_FLAGS, 1, 660*1719886fSMartin Matuska [blkdev_issue_discard(flags) is available]) 661*1719886fSMartin Matuska ],[ 662*1719886fSMartin Matuska AC_MSG_RESULT(no) 663*1719886fSMartin Matuska ]) 664*1719886fSMartin Matuska AC_MSG_CHECKING([whether __blkdev_issue_discard() is available]) 665*1719886fSMartin Matuska ZFS_LINUX_TEST_RESULT([blkdev_issue_discard_async_noflags], [ 666*1719886fSMartin Matuska AC_MSG_RESULT(yes) 667*1719886fSMartin Matuska AC_DEFINE(HAVE_BLKDEV_ISSUE_DISCARD_ASYNC_NOFLAGS, 1, 668*1719886fSMartin Matuska [__blkdev_issue_discard() is available]) 669*1719886fSMartin Matuska ],[ 670*1719886fSMartin Matuska AC_MSG_RESULT(no) 671*1719886fSMartin Matuska ]) 672*1719886fSMartin Matuska AC_MSG_CHECKING([whether __blkdev_issue_discard(flags) is available]) 673*1719886fSMartin Matuska ZFS_LINUX_TEST_RESULT([blkdev_issue_discard_async_flags], [ 674*1719886fSMartin Matuska AC_MSG_RESULT(yes) 675*1719886fSMartin Matuska AC_DEFINE(HAVE_BLKDEV_ISSUE_DISCARD_ASYNC_FLAGS, 1, 676*1719886fSMartin Matuska [__blkdev_issue_discard(flags) is available]) 677*1719886fSMartin Matuska ],[ 678*1719886fSMartin Matuska AC_MSG_RESULT(no) 679*1719886fSMartin Matuska ]) 680e3aa18adSMartin Matuska AC_MSG_CHECKING([whether blkdev_issue_secure_erase() is available]) 681e3aa18adSMartin Matuska ZFS_LINUX_TEST_RESULT([blkdev_issue_secure_erase], [ 682e3aa18adSMartin Matuska AC_MSG_RESULT(yes) 683e3aa18adSMartin Matuska AC_DEFINE(HAVE_BLKDEV_ISSUE_SECURE_ERASE, 1, 684e3aa18adSMartin Matuska [blkdev_issue_secure_erase() is available]) 685e3aa18adSMartin Matuska ],[ 686e3aa18adSMartin Matuska AC_MSG_RESULT(no) 687e3aa18adSMartin Matuska ]) 688a4e5e010SMartin Matuska]) 689e3aa18adSMartin Matuska 690e3aa18adSMartin Matuskadnl # 691681ce946SMartin Matuskadnl # 5.13 API change 692681ce946SMartin Matuskadnl # blkdev_get_by_path() no longer handles ERESTARTSYS 693681ce946SMartin Matuskadnl # 694681ce946SMartin Matuskadnl # Unfortunately we're forced to rely solely on the kernel version 695681ce946SMartin Matuskadnl # number in order to determine the expected behavior. This was an 696681ce946SMartin Matuskadnl # internal change to blkdev_get_by_dev(), see commit a8ed1a0607. 697681ce946SMartin Matuskadnl # 698681ce946SMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_GET_ERESTARTSYS], [ 699681ce946SMartin Matuska AC_MSG_CHECKING([whether blkdev_get_by_path() handles ERESTARTSYS]) 700681ce946SMartin Matuska AS_VERSION_COMPARE([$LINUX_VERSION], [5.13.0], [ 701681ce946SMartin Matuska AC_MSG_RESULT(yes) 702681ce946SMartin Matuska AC_DEFINE(HAVE_BLKDEV_GET_ERESTARTSYS, 1, 703681ce946SMartin Matuska [blkdev_get_by_path() handles ERESTARTSYS]) 704681ce946SMartin Matuska ],[ 705681ce946SMartin Matuska AC_MSG_RESULT(no) 706681ce946SMartin Matuska ],[ 707681ce946SMartin Matuska AC_MSG_RESULT(no) 708681ce946SMartin Matuska ]) 709681ce946SMartin Matuska]) 710681ce946SMartin Matuska 711315ee00fSMartin Matuskadnl # 712315ee00fSMartin Matuskadnl # 6.5.x API change 713315ee00fSMartin Matuskadnl # BLK_STS_NEXUS replaced with BLK_STS_RESV_CONFLICT 714315ee00fSMartin Matuskadnl # 715315ee00fSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BLK_STS_RESV_CONFLICT], [ 716315ee00fSMartin Matuska ZFS_LINUX_TEST_SRC([blk_sts_resv_conflict], [ 717315ee00fSMartin Matuska #include <linux/blkdev.h> 718315ee00fSMartin Matuska ],[ 719315ee00fSMartin Matuska blk_status_t s __attribute__ ((unused)) = BLK_STS_RESV_CONFLICT; 720315ee00fSMartin Matuska ]) 721315ee00fSMartin Matuska]) 722315ee00fSMartin Matuska 723315ee00fSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_BLKDEV_BLK_STS_RESV_CONFLICT], [ 724315ee00fSMartin Matuska AC_MSG_CHECKING([whether BLK_STS_RESV_CONFLICT is defined]) 725315ee00fSMartin Matuska ZFS_LINUX_TEST_RESULT([blk_sts_resv_conflict], [ 726315ee00fSMartin Matuska AC_DEFINE(HAVE_BLK_STS_RESV_CONFLICT, 1, [BLK_STS_RESV_CONFLICT is defined]) 727315ee00fSMartin Matuska AC_MSG_RESULT(yes) 728315ee00fSMartin Matuska ], [ 729315ee00fSMartin Matuska AC_MSG_RESULT(no) 730315ee00fSMartin Matuska ]) 731315ee00fSMartin Matuska ]) 732315ee00fSMartin Matuska]) 733315ee00fSMartin Matuska 734eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV], [ 735eda14cbcSMatt Macy ZFS_AC_KERNEL_SRC_BLKDEV_GET_BY_PATH 736315ee00fSMartin Matuska ZFS_AC_KERNEL_SRC_BLKDEV_GET_BY_PATH_4ARG 737fd45b686SMartin Matuska ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_OPEN_BY_PATH 738*1719886fSMartin Matuska ZFS_AC_KERNEL_SRC_BDEV_FILE_OPEN_BY_PATH 739eda14cbcSMatt Macy ZFS_AC_KERNEL_SRC_BLKDEV_PUT 740315ee00fSMartin Matuska ZFS_AC_KERNEL_SRC_BLKDEV_PUT_HOLDER 741fd45b686SMartin Matuska ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_RELEASE 742eda14cbcSMatt Macy ZFS_AC_KERNEL_SRC_BLKDEV_REREAD_PART 743eda14cbcSMatt Macy ZFS_AC_KERNEL_SRC_BLKDEV_INVALIDATE_BDEV 744eda14cbcSMatt Macy ZFS_AC_KERNEL_SRC_BLKDEV_LOOKUP_BDEV 745eda14cbcSMatt Macy ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_LOGICAL_BLOCK_SIZE 746eda14cbcSMatt Macy ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_PHYSICAL_BLOCK_SIZE 7477877fdebSMatt Macy ZFS_AC_KERNEL_SRC_BLKDEV_CHECK_DISK_CHANGE 7487877fdebSMatt Macy ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_CHECK_MEDIA_CHANGE 7497877fdebSMatt Macy ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_WHOLE 750271171e0SMartin Matuska ZFS_AC_KERNEL_SRC_BLKDEV_BDEVNAME 751*1719886fSMartin Matuska ZFS_AC_KERNEL_SRC_BLKDEV_ISSUE_DISCARD 752be181ee2SMartin Matuska ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_KOBJ 753be181ee2SMartin Matuska ZFS_AC_KERNEL_SRC_BLKDEV_PART_TO_DEV 754315ee00fSMartin Matuska ZFS_AC_KERNEL_SRC_BLKDEV_DISK_CHECK_MEDIA_CHANGE 755315ee00fSMartin Matuska ZFS_AC_KERNEL_SRC_BLKDEV_BLK_STS_RESV_CONFLICT 756315ee00fSMartin Matuska ZFS_AC_KERNEL_SRC_BLKDEV_BLK_MODE_T 757eda14cbcSMatt Macy]) 758eda14cbcSMatt Macy 759eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BLKDEV], [ 760eda14cbcSMatt Macy ZFS_AC_KERNEL_BLKDEV_GET_BY_PATH 761eda14cbcSMatt Macy ZFS_AC_KERNEL_BLKDEV_PUT 762eda14cbcSMatt Macy ZFS_AC_KERNEL_BLKDEV_REREAD_PART 763eda14cbcSMatt Macy ZFS_AC_KERNEL_BLKDEV_INVALIDATE_BDEV 764eda14cbcSMatt Macy ZFS_AC_KERNEL_BLKDEV_LOOKUP_BDEV 765eda14cbcSMatt Macy ZFS_AC_KERNEL_BLKDEV_BDEV_LOGICAL_BLOCK_SIZE 766eda14cbcSMatt Macy ZFS_AC_KERNEL_BLKDEV_BDEV_PHYSICAL_BLOCK_SIZE 7677877fdebSMatt Macy ZFS_AC_KERNEL_BLKDEV_CHECK_DISK_CHANGE 7687877fdebSMatt Macy ZFS_AC_KERNEL_BLKDEV_BDEV_CHECK_MEDIA_CHANGE 7697877fdebSMatt Macy ZFS_AC_KERNEL_BLKDEV_BDEV_WHOLE 770271171e0SMartin Matuska ZFS_AC_KERNEL_BLKDEV_BDEVNAME 771681ce946SMartin Matuska ZFS_AC_KERNEL_BLKDEV_GET_ERESTARTSYS 772*1719886fSMartin Matuska ZFS_AC_KERNEL_BLKDEV_ISSUE_DISCARD 773be181ee2SMartin Matuska ZFS_AC_KERNEL_BLKDEV_BDEV_KOBJ 774be181ee2SMartin Matuska ZFS_AC_KERNEL_BLKDEV_PART_TO_DEV 775315ee00fSMartin Matuska ZFS_AC_KERNEL_BLKDEV_DISK_CHECK_MEDIA_CHANGE 776315ee00fSMartin Matuska ZFS_AC_KERNEL_BLKDEV_BLK_STS_RESV_CONFLICT 777315ee00fSMartin Matuska ZFS_AC_KERNEL_BLKDEV_BLK_MODE_T 778eda14cbcSMatt Macy]) 779