1eda14cbcSMatt Macydnl # 2eda14cbcSMatt Macydnl # 2.6.36 API change, 3eda14cbcSMatt Macydnl # REQ_FAILFAST_{DEV|TRANSPORT|DRIVER} 4eda14cbcSMatt Macydnl # REQ_DISCARD 5eda14cbcSMatt Macydnl # REQ_FLUSH 6eda14cbcSMatt Macydnl # 7eda14cbcSMatt Macydnl # 4.8 - 4.9 API, 8eda14cbcSMatt Macydnl # REQ_FLUSH was renamed to REQ_PREFLUSH 9eda14cbcSMatt Macydnl # 10eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_REQ], [ 11eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([req_failfast_mask], [ 12eda14cbcSMatt Macy #include <linux/bio.h> 13eda14cbcSMatt Macy ],[ 14eda14cbcSMatt Macy int flags __attribute__ ((unused)); 15eda14cbcSMatt Macy flags = REQ_FAILFAST_MASK; 16eda14cbcSMatt Macy ]) 17eda14cbcSMatt Macy 18eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([req_discard], [ 19eda14cbcSMatt Macy #include <linux/bio.h> 20eda14cbcSMatt Macy ],[ 21eda14cbcSMatt Macy int flags __attribute__ ((unused)); 22eda14cbcSMatt Macy flags = REQ_DISCARD; 23eda14cbcSMatt Macy ]) 24eda14cbcSMatt Macy 25eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([req_flush], [ 26eda14cbcSMatt Macy #include <linux/bio.h> 27eda14cbcSMatt Macy ],[ 28eda14cbcSMatt Macy int flags __attribute__ ((unused)); 29eda14cbcSMatt Macy flags = REQ_FLUSH; 30eda14cbcSMatt Macy ]) 31eda14cbcSMatt Macy 32eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([req_preflush], [ 33eda14cbcSMatt Macy #include <linux/bio.h> 34eda14cbcSMatt Macy ],[ 35eda14cbcSMatt Macy int flags __attribute__ ((unused)); 36eda14cbcSMatt Macy flags = REQ_PREFLUSH; 37eda14cbcSMatt Macy ]) 38eda14cbcSMatt Macy]) 39eda14cbcSMatt Macy 40eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BIO_REQ_FAILFAST_MASK], [ 41eda14cbcSMatt Macy AC_MSG_CHECKING([whether REQ_FAILFAST_MASK is defined]) 42eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([req_failfast_mask], [ 43eda14cbcSMatt Macy AC_MSG_RESULT(yes) 44eda14cbcSMatt Macy ],[ 45eda14cbcSMatt Macy ZFS_LINUX_TEST_ERROR([REQ_FAILFAST_MASK]) 46eda14cbcSMatt Macy ]) 47eda14cbcSMatt Macy]) 48eda14cbcSMatt Macy 49eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BIO_REQ_DISCARD], [ 50eda14cbcSMatt Macy AC_MSG_CHECKING([whether REQ_DISCARD is defined]) 51eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([req_discard], [ 52eda14cbcSMatt Macy AC_MSG_RESULT(yes) 53eda14cbcSMatt Macy AC_DEFINE(HAVE_REQ_DISCARD, 1, [REQ_DISCARD is defined]) 54eda14cbcSMatt Macy ],[ 55eda14cbcSMatt Macy AC_MSG_RESULT(no) 56eda14cbcSMatt Macy ]) 57eda14cbcSMatt Macy]) 58eda14cbcSMatt Macy 59eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BIO_REQ_FLUSH], [ 60eda14cbcSMatt Macy AC_MSG_CHECKING([whether REQ_FLUSH is defined]) 61eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([req_flush], [ 62eda14cbcSMatt Macy AC_MSG_RESULT(yes) 63eda14cbcSMatt Macy AC_DEFINE(HAVE_REQ_FLUSH, 1, [REQ_FLUSH is defined]) 64eda14cbcSMatt Macy ],[ 65eda14cbcSMatt Macy AC_MSG_RESULT(no) 66eda14cbcSMatt Macy ]) 67eda14cbcSMatt Macy]) 68eda14cbcSMatt Macy 69eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BIO_REQ_PREFLUSH], [ 70eda14cbcSMatt Macy AC_MSG_CHECKING([whether REQ_PREFLUSH is defined]) 71eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([req_preflush], [ 72eda14cbcSMatt Macy AC_MSG_RESULT(yes) 73eda14cbcSMatt Macy AC_DEFINE(HAVE_REQ_PREFLUSH, 1, [REQ_PREFLUSH is defined]) 74eda14cbcSMatt Macy ],[ 75eda14cbcSMatt Macy AC_MSG_RESULT(no) 76eda14cbcSMatt Macy ]) 77eda14cbcSMatt Macy]) 78eda14cbcSMatt Macy 79eda14cbcSMatt Macydnl # 80eda14cbcSMatt Macydnl # Linux 4.8 API, 81eda14cbcSMatt Macydnl # 82eda14cbcSMatt Macydnl # The bio_op() helper was introduced as a replacement for explicitly 83eda14cbcSMatt Macydnl # checking the bio->bi_rw flags. The following checks are used to 84eda14cbcSMatt Macydnl # detect if a specific operation is supported. 85eda14cbcSMatt Macydnl # 86eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_BIO_OPS], [ 87eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([req_op_discard], [ 88eda14cbcSMatt Macy #include <linux/blk_types.h> 89eda14cbcSMatt Macy ],[ 90eda14cbcSMatt Macy int op __attribute__ ((unused)) = REQ_OP_DISCARD; 91eda14cbcSMatt Macy ]) 92eda14cbcSMatt Macy 93eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([req_op_secure_erase], [ 94eda14cbcSMatt Macy #include <linux/blk_types.h> 95eda14cbcSMatt Macy ],[ 96eda14cbcSMatt Macy int op __attribute__ ((unused)) = REQ_OP_SECURE_ERASE; 97eda14cbcSMatt Macy ]) 98eda14cbcSMatt Macy 99eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([req_op_flush], [ 100eda14cbcSMatt Macy #include <linux/blk_types.h> 101eda14cbcSMatt Macy ],[ 102eda14cbcSMatt Macy int op __attribute__ ((unused)) = REQ_OP_FLUSH; 103eda14cbcSMatt Macy ]) 104eda14cbcSMatt Macy 105eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([bio_bi_opf], [ 106eda14cbcSMatt Macy #include <linux/bio.h> 107eda14cbcSMatt Macy ],[ 108eda14cbcSMatt Macy struct bio bio __attribute__ ((unused)); 109eda14cbcSMatt Macy bio.bi_opf = 0; 110eda14cbcSMatt Macy ]) 111eda14cbcSMatt Macy 112eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([bio_set_op_attrs], [ 113eda14cbcSMatt Macy #include <linux/bio.h> 114eda14cbcSMatt Macy ],[ 115eda14cbcSMatt Macy struct bio *bio __attribute__ ((unused)) = NULL; 116eda14cbcSMatt Macy bio_set_op_attrs(bio, 0, 0); 117eda14cbcSMatt Macy ]) 118eda14cbcSMatt Macy]) 119eda14cbcSMatt Macy 120eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BIO_REQ_OP_DISCARD], [ 121eda14cbcSMatt Macy AC_MSG_CHECKING([whether REQ_OP_DISCARD is defined]) 122eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([req_op_discard], [ 123eda14cbcSMatt Macy AC_MSG_RESULT(yes) 124eda14cbcSMatt Macy AC_DEFINE(HAVE_REQ_OP_DISCARD, 1, [REQ_OP_DISCARD is defined]) 125eda14cbcSMatt Macy ],[ 126eda14cbcSMatt Macy AC_MSG_RESULT(no) 127eda14cbcSMatt Macy ]) 128eda14cbcSMatt Macy]) 129eda14cbcSMatt Macy 130eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BIO_REQ_OP_SECURE_ERASE], [ 131eda14cbcSMatt Macy AC_MSG_CHECKING([whether REQ_OP_SECURE_ERASE is defined]) 132eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([req_op_secure_erase], [ 133eda14cbcSMatt Macy AC_MSG_RESULT(yes) 134eda14cbcSMatt Macy AC_DEFINE(HAVE_REQ_OP_SECURE_ERASE, 1, 135eda14cbcSMatt Macy [REQ_OP_SECURE_ERASE is defined]) 136eda14cbcSMatt Macy ],[ 137eda14cbcSMatt Macy AC_MSG_RESULT(no) 138eda14cbcSMatt Macy ]) 139eda14cbcSMatt Macy]) 140eda14cbcSMatt Macy 141eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BIO_REQ_OP_FLUSH], [ 142eda14cbcSMatt Macy AC_MSG_CHECKING([whether REQ_OP_FLUSH is defined]) 143eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([req_op_flush], [ 144eda14cbcSMatt Macy AC_MSG_RESULT(yes) 145eda14cbcSMatt Macy AC_DEFINE(HAVE_REQ_OP_FLUSH, 1, [REQ_OP_FLUSH is defined]) 146eda14cbcSMatt Macy ],[ 147eda14cbcSMatt Macy AC_MSG_RESULT(no) 148eda14cbcSMatt Macy ]) 149eda14cbcSMatt Macy]) 150eda14cbcSMatt Macy 151eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BIO_BI_OPF], [ 152eda14cbcSMatt Macy AC_MSG_CHECKING([whether bio->bi_opf is defined]) 153eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([bio_bi_opf], [ 154eda14cbcSMatt Macy AC_MSG_RESULT(yes) 155eda14cbcSMatt Macy AC_DEFINE(HAVE_BIO_BI_OPF, 1, [bio->bi_opf is defined]) 156eda14cbcSMatt Macy ],[ 157eda14cbcSMatt Macy AC_MSG_RESULT(no) 158eda14cbcSMatt Macy ]) 159eda14cbcSMatt Macy]) 160eda14cbcSMatt Macy 161eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BIO_SET_OP_ATTRS], [ 162eda14cbcSMatt Macy AC_MSG_CHECKING([whether bio_set_op_attrs is available]) 163eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([bio_set_op_attrs], [ 164eda14cbcSMatt Macy AC_MSG_RESULT(yes) 165eda14cbcSMatt Macy AC_DEFINE(HAVE_BIO_SET_OP_ATTRS, 1, 166eda14cbcSMatt Macy [bio_set_op_attrs is available]) 167eda14cbcSMatt Macy ],[ 168eda14cbcSMatt Macy AC_MSG_RESULT(no) 169eda14cbcSMatt Macy ]) 170eda14cbcSMatt Macy]) 171eda14cbcSMatt Macy 172eda14cbcSMatt Macydnl # 173eda14cbcSMatt Macydnl # Linux 4.14 API, 174eda14cbcSMatt Macydnl # 175eda14cbcSMatt Macydnl # The bio_set_dev() helper macro was introduced as part of the transition 176eda14cbcSMatt Macydnl # to have struct gendisk in struct bio. 177eda14cbcSMatt Macydnl # 178eda14cbcSMatt Macydnl # Linux 5.0 API, 179eda14cbcSMatt Macydnl # 180eda14cbcSMatt Macydnl # The bio_set_dev() helper macro was updated to internally depend on 181eda14cbcSMatt Macydnl # bio_associate_blkg() symbol which is exported GPL-only. 182eda14cbcSMatt Macydnl # 183eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_BIO_SET_DEV], [ 184eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([bio_set_dev], [ 185eda14cbcSMatt Macy #include <linux/bio.h> 186eda14cbcSMatt Macy #include <linux/fs.h> 187eda14cbcSMatt Macy ],[ 188eda14cbcSMatt Macy struct block_device *bdev = NULL; 189eda14cbcSMatt Macy struct bio *bio = NULL; 190eda14cbcSMatt Macy bio_set_dev(bio, bdev); 1917877fdebSMatt Macy ], [], [ZFS_META_LICENSE]) 192eda14cbcSMatt Macy]) 193eda14cbcSMatt Macy 194eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BIO_SET_DEV], [ 195eda14cbcSMatt Macy AC_MSG_CHECKING([whether bio_set_dev() is available]) 196eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([bio_set_dev], [ 197eda14cbcSMatt Macy AC_MSG_RESULT(yes) 198eda14cbcSMatt Macy AC_DEFINE(HAVE_BIO_SET_DEV, 1, [bio_set_dev() is available]) 199eda14cbcSMatt Macy 200eda14cbcSMatt Macy AC_MSG_CHECKING([whether bio_set_dev() is GPL-only]) 201eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([bio_set_dev_license], [ 202eda14cbcSMatt Macy AC_MSG_RESULT(no) 203eda14cbcSMatt Macy ],[ 204eda14cbcSMatt Macy AC_MSG_RESULT(yes) 205eda14cbcSMatt Macy AC_DEFINE(HAVE_BIO_SET_DEV_GPL_ONLY, 1, 206eda14cbcSMatt Macy [bio_set_dev() GPL-only]) 207eda14cbcSMatt Macy ]) 208eda14cbcSMatt Macy ],[ 209eda14cbcSMatt Macy AC_MSG_RESULT(no) 210eda14cbcSMatt Macy ]) 211eda14cbcSMatt Macy]) 212eda14cbcSMatt Macy 213eda14cbcSMatt Macydnl # 214eda14cbcSMatt Macydnl # 4.3 API change 215eda14cbcSMatt Macydnl # Error argument dropped from bio_endio in favor of newly introduced 216eda14cbcSMatt Macydnl # bio->bi_error. This also replaces bio->bi_flags value BIO_UPTODATE. 217eda14cbcSMatt Macydnl # Introduced by torvalds/linux@4246a0b63bd8f56a1469b12eafeb875b1041a451 218eda14cbcSMatt Macydnl # ("block: add a bi_error field to struct bio"). 219eda14cbcSMatt Macydnl # 220eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_BIO_END_IO_T_ARGS], [ 221eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([bio_end_io_t_args], [ 222eda14cbcSMatt Macy #include <linux/bio.h> 223eda14cbcSMatt Macy void wanted_end_io(struct bio *bio) { return; } 224eda14cbcSMatt Macy bio_end_io_t *end_io __attribute__ ((unused)) = wanted_end_io; 225eda14cbcSMatt Macy ], []) 226eda14cbcSMatt Macy]) 227eda14cbcSMatt Macy 228eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BIO_END_IO_T_ARGS], [ 229eda14cbcSMatt Macy AC_MSG_CHECKING([whether bio_end_io_t wants 1 arg]) 230eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([bio_end_io_t_args], [ 231eda14cbcSMatt Macy AC_MSG_RESULT(yes) 232eda14cbcSMatt Macy AC_DEFINE(HAVE_1ARG_BIO_END_IO_T, 1, 233eda14cbcSMatt Macy [bio_end_io_t wants 1 arg]) 234eda14cbcSMatt Macy ], [ 235eda14cbcSMatt Macy AC_MSG_RESULT(no) 236eda14cbcSMatt Macy ]) 237eda14cbcSMatt Macy]) 238eda14cbcSMatt Macy 239eda14cbcSMatt Macydnl # 240eda14cbcSMatt Macydnl # 4.13 API change 241eda14cbcSMatt Macydnl # The bio->bi_error field was replaced with bio->bi_status which is an 242eda14cbcSMatt Macydnl # enum which describes all possible error types. 243eda14cbcSMatt Macydnl # 244eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_BIO_BI_STATUS], [ 245eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([bio_bi_status], [ 246eda14cbcSMatt Macy #include <linux/bio.h> 247eda14cbcSMatt Macy ], [ 248eda14cbcSMatt Macy struct bio bio __attribute__ ((unused)); 249eda14cbcSMatt Macy blk_status_t status __attribute__ ((unused)) = BLK_STS_OK; 250eda14cbcSMatt Macy bio.bi_status = status; 251eda14cbcSMatt Macy ]) 252eda14cbcSMatt Macy]) 253eda14cbcSMatt Macy 254eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BIO_BI_STATUS], [ 255eda14cbcSMatt Macy AC_MSG_CHECKING([whether bio->bi_status exists]) 256eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([bio_bi_status], [ 257eda14cbcSMatt Macy AC_MSG_RESULT(yes) 258eda14cbcSMatt Macy AC_DEFINE(HAVE_BIO_BI_STATUS, 1, [bio->bi_status exists]) 259eda14cbcSMatt Macy ],[ 260eda14cbcSMatt Macy AC_MSG_RESULT(no) 261eda14cbcSMatt Macy ]) 262eda14cbcSMatt Macy]) 263eda14cbcSMatt Macy 264eda14cbcSMatt Macydnl # 265eda14cbcSMatt Macydnl # 3.14 API change, 266eda14cbcSMatt Macydnl # Immutable biovecs. A number of fields of struct bio are moved to 267eda14cbcSMatt Macydnl # struct bvec_iter. 268eda14cbcSMatt Macydnl # 269eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_BIO_BVEC_ITER], [ 270eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([bio_bvec_iter], [ 271eda14cbcSMatt Macy #include <linux/bio.h> 272eda14cbcSMatt Macy ],[ 273eda14cbcSMatt Macy struct bio bio; 274eda14cbcSMatt Macy bio.bi_iter.bi_sector = 0; 275eda14cbcSMatt Macy ]) 276eda14cbcSMatt Macy]) 277eda14cbcSMatt Macy 278eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BIO_BVEC_ITER], [ 279eda14cbcSMatt Macy AC_MSG_CHECKING([whether bio has bi_iter]) 280eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([bio_bvec_iter], [ 281eda14cbcSMatt Macy AC_MSG_RESULT(yes) 282eda14cbcSMatt Macy AC_DEFINE(HAVE_BIO_BVEC_ITER, 1, [bio has bi_iter]) 283eda14cbcSMatt Macy ],[ 284eda14cbcSMatt Macy AC_MSG_RESULT(no) 285eda14cbcSMatt Macy ]) 286eda14cbcSMatt Macy]) 287eda14cbcSMatt Macy 288eda14cbcSMatt Macydnl # 289eda14cbcSMatt Macydnl # 4.8 API change 290eda14cbcSMatt Macydnl # The rw argument has been removed from submit_bio/submit_bio_wait. 291eda14cbcSMatt Macydnl # Callers are now expected to set bio->bi_rw instead of passing it in. 292eda14cbcSMatt Macydnl # 293eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_BIO_SUBMIT_BIO], [ 294eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([submit_bio], [ 295eda14cbcSMatt Macy #include <linux/bio.h> 296eda14cbcSMatt Macy ],[ 297eda14cbcSMatt Macy blk_qc_t blk_qc; 298eda14cbcSMatt Macy struct bio *bio = NULL; 299eda14cbcSMatt Macy blk_qc = submit_bio(bio); 300eda14cbcSMatt Macy ]) 301eda14cbcSMatt Macy]) 302eda14cbcSMatt Macy 303eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BIO_SUBMIT_BIO], [ 304eda14cbcSMatt Macy AC_MSG_CHECKING([whether submit_bio() wants 1 arg]) 305eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([submit_bio], [ 306eda14cbcSMatt Macy AC_MSG_RESULT(yes) 307eda14cbcSMatt Macy AC_DEFINE(HAVE_1ARG_SUBMIT_BIO, 1, [submit_bio() wants 1 arg]) 308eda14cbcSMatt Macy ],[ 309eda14cbcSMatt Macy AC_MSG_RESULT(no) 310eda14cbcSMatt Macy ]) 311eda14cbcSMatt Macy]) 312eda14cbcSMatt Macy 313eda14cbcSMatt Macydnl # 314eda14cbcSMatt Macydnl # 2.6.34 API change 315eda14cbcSMatt Macydnl # current->bio_list 316eda14cbcSMatt Macydnl # 317eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_BIO_CURRENT_BIO_LIST], [ 318eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([current_bio_list], [ 319eda14cbcSMatt Macy #include <linux/sched.h> 320eda14cbcSMatt Macy ], [ 321eda14cbcSMatt Macy current->bio_list = (struct bio_list *) NULL; 322eda14cbcSMatt Macy ]) 323eda14cbcSMatt Macy]) 324eda14cbcSMatt Macy 325eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BIO_CURRENT_BIO_LIST], [ 326eda14cbcSMatt Macy AC_MSG_CHECKING([whether current->bio_list exists]) 327eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([current_bio_list], [ 328eda14cbcSMatt Macy AC_MSG_RESULT(yes) 329eda14cbcSMatt Macy ],[ 330eda14cbcSMatt Macy ZFS_LINUX_TEST_ERROR([bio_list]) 331eda14cbcSMatt Macy ]) 332eda14cbcSMatt Macy]) 333eda14cbcSMatt Macy 334eda14cbcSMatt Macydnl # 335eda14cbcSMatt Macydnl # Linux 5.5 API, 336eda14cbcSMatt Macydnl # 337eda14cbcSMatt Macydnl # The Linux 5.5 kernel updated percpu_ref_tryget() which is inlined by 338eda14cbcSMatt Macydnl # blkg_tryget() to use rcu_read_lock() instead of rcu_read_lock_sched(). 339eda14cbcSMatt Macydnl # As a side effect the function was converted to GPL-only. 340eda14cbcSMatt Macydnl # 341eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_BLKG_TRYGET], [ 342eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([blkg_tryget], [ 343eda14cbcSMatt Macy #include <linux/blk-cgroup.h> 344eda14cbcSMatt Macy #include <linux/bio.h> 345eda14cbcSMatt Macy #include <linux/fs.h> 346eda14cbcSMatt Macy ],[ 347180f8225SMatt Macy struct blkcg_gq blkg __attribute__ ((unused)) = {}; 348eda14cbcSMatt Macy bool rc __attribute__ ((unused)); 349eda14cbcSMatt Macy rc = blkg_tryget(&blkg); 3507877fdebSMatt Macy ], [], [ZFS_META_LICENSE]) 351eda14cbcSMatt Macy]) 352eda14cbcSMatt Macy 353eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BLKG_TRYGET], [ 354eda14cbcSMatt Macy AC_MSG_CHECKING([whether blkg_tryget() is available]) 355eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([blkg_tryget], [ 356eda14cbcSMatt Macy AC_MSG_RESULT(yes) 357eda14cbcSMatt Macy AC_DEFINE(HAVE_BLKG_TRYGET, 1, [blkg_tryget() is available]) 358eda14cbcSMatt Macy 359eda14cbcSMatt Macy AC_MSG_CHECKING([whether blkg_tryget() is GPL-only]) 360eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([blkg_tryget_license], [ 361eda14cbcSMatt Macy AC_MSG_RESULT(no) 362eda14cbcSMatt Macy ],[ 363eda14cbcSMatt Macy AC_MSG_RESULT(yes) 364eda14cbcSMatt Macy AC_DEFINE(HAVE_BLKG_TRYGET_GPL_ONLY, 1, 365eda14cbcSMatt Macy [blkg_tryget() GPL-only]) 366eda14cbcSMatt Macy ]) 367eda14cbcSMatt Macy ],[ 368eda14cbcSMatt Macy AC_MSG_RESULT(no) 369eda14cbcSMatt Macy ]) 370eda14cbcSMatt Macy]) 371eda14cbcSMatt Macy 372eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_BIO], [ 373eda14cbcSMatt Macy ZFS_AC_KERNEL_SRC_REQ 374eda14cbcSMatt Macy ZFS_AC_KERNEL_SRC_BIO_OPS 375eda14cbcSMatt Macy ZFS_AC_KERNEL_SRC_BIO_SET_DEV 376eda14cbcSMatt Macy ZFS_AC_KERNEL_SRC_BIO_END_IO_T_ARGS 377eda14cbcSMatt Macy ZFS_AC_KERNEL_SRC_BIO_BI_STATUS 378eda14cbcSMatt Macy ZFS_AC_KERNEL_SRC_BIO_BVEC_ITER 379eda14cbcSMatt Macy ZFS_AC_KERNEL_SRC_BIO_SUBMIT_BIO 380eda14cbcSMatt Macy ZFS_AC_KERNEL_SRC_BIO_CURRENT_BIO_LIST 381eda14cbcSMatt Macy ZFS_AC_KERNEL_SRC_BLKG_TRYGET 382eda14cbcSMatt Macy]) 383eda14cbcSMatt Macy 384eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_BIO], [ 385eda14cbcSMatt Macy ZFS_AC_KERNEL_BIO_REQ_FAILFAST_MASK 386eda14cbcSMatt Macy ZFS_AC_KERNEL_BIO_REQ_DISCARD 387eda14cbcSMatt Macy ZFS_AC_KERNEL_BIO_REQ_FLUSH 388eda14cbcSMatt Macy ZFS_AC_KERNEL_BIO_REQ_PREFLUSH 389eda14cbcSMatt Macy 390eda14cbcSMatt Macy ZFS_AC_KERNEL_BIO_REQ_OP_DISCARD 391eda14cbcSMatt Macy ZFS_AC_KERNEL_BIO_REQ_OP_SECURE_ERASE 392eda14cbcSMatt Macy ZFS_AC_KERNEL_BIO_REQ_OP_FLUSH 393eda14cbcSMatt Macy ZFS_AC_KERNEL_BIO_BI_OPF 394eda14cbcSMatt Macy ZFS_AC_KERNEL_BIO_SET_OP_ATTRS 395eda14cbcSMatt Macy 396eda14cbcSMatt Macy ZFS_AC_KERNEL_BIO_SET_DEV 397eda14cbcSMatt Macy ZFS_AC_KERNEL_BIO_END_IO_T_ARGS 398eda14cbcSMatt Macy ZFS_AC_KERNEL_BIO_BI_STATUS 399eda14cbcSMatt Macy ZFS_AC_KERNEL_BIO_BVEC_ITER 400eda14cbcSMatt Macy ZFS_AC_KERNEL_BIO_SUBMIT_BIO 401eda14cbcSMatt Macy ZFS_AC_KERNEL_BIO_CURRENT_BIO_LIST 402eda14cbcSMatt Macy ZFS_AC_KERNEL_BLKG_TRYGET 403eda14cbcSMatt Macy]) 404