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