]>
Commit | Line | Data |
---|---|---|
b18019d2 ED |
1 | dnl # |
2 | dnl # 2.6.36 API change | |
3 | dnl # In 2.6.36 kernels the blk_queue_ordered() interface has been | |
4 | dnl # replaced by the simpler blk_queue_flush(). However, while the | |
5 | dnl # old interface was available to all the new one is GPL-only. | |
6 | dnl # Thus in addition to detecting if this function is available | |
7 | dnl # we determine if it is GPL-only. If the GPL-only interface is | |
8 | dnl # there we implement our own compatibility function, otherwise | |
9 | dnl # we use the function. The hope is that long term this function | |
10 | dnl # will be opened up. | |
11 | dnl # | |
12 | AC_DEFUN([ZFS_AC_KERNEL_BLK_QUEUE_FLUSH], [ | |
13 | AC_MSG_CHECKING([whether blk_queue_flush() is available]) | |
14 | tmp_flags="$EXTRA_KCFLAGS" | |
e191b54e | 15 | EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}" |
b18019d2 ED |
16 | ZFS_LINUX_TRY_COMPILE([ |
17 | #include <linux/blkdev.h> | |
18 | ],[ | |
19 | struct request_queue *q = NULL; | |
20 | (void) blk_queue_flush(q, REQ_FLUSH); | |
21 | ],[ | |
22 | AC_MSG_RESULT(yes) | |
23 | AC_DEFINE(HAVE_BLK_QUEUE_FLUSH, 1, | |
24 | [blk_queue_flush() is available]) | |
68e8f59a CC |
25 | |
26 | AC_MSG_CHECKING([whether blk_queue_flush() is GPL-only]) | |
27 | ZFS_LINUX_TRY_COMPILE([ | |
28 | #include <linux/module.h> | |
29 | #include <linux/blkdev.h> | |
30 | ||
31 | MODULE_LICENSE("$ZFS_META_LICENSE"); | |
32 | ],[ | |
33 | struct request_queue *q = NULL; | |
34 | (void) blk_queue_flush(q, REQ_FLUSH); | |
35 | ],[ | |
36 | AC_MSG_RESULT(no) | |
37 | ],[ | |
38 | AC_MSG_RESULT(yes) | |
39 | AC_DEFINE(HAVE_BLK_QUEUE_FLUSH_GPL_ONLY, 1, | |
40 | [blk_queue_flush() is GPL-only]) | |
41 | ]) | |
b18019d2 ED |
42 | ],[ |
43 | AC_MSG_RESULT(no) | |
44 | ]) | |
45 | ||
68e8f59a CC |
46 | dnl # |
47 | dnl # 4.7 API change | |
48 | dnl # Replace blk_queue_flush with blk_queue_write_cache | |
49 | dnl # | |
50 | AC_MSG_CHECKING([whether blk_queue_write_cache() exists]) | |
b18019d2 | 51 | ZFS_LINUX_TRY_COMPILE([ |
68e8f59a | 52 | #include <linux/kernel.h> |
b18019d2 ED |
53 | #include <linux/blkdev.h> |
54 | ||
b18019d2 ED |
55 | ],[ |
56 | struct request_queue *q = NULL; | |
68e8f59a | 57 | blk_queue_write_cache(q, true, true); |
b18019d2 ED |
58 | ],[ |
59 | AC_MSG_RESULT(yes) | |
68e8f59a CC |
60 | AC_DEFINE(HAVE_BLK_QUEUE_WRITE_CACHE, 1, |
61 | [blk_queue_write_cache() exists]) | |
62 | ||
63 | AC_MSG_CHECKING([whether blk_queue_write_cache() is GPL-only]) | |
64 | ZFS_LINUX_TRY_COMPILE([ | |
65 | #include <linux/kernel.h> | |
66 | #include <linux/module.h> | |
67 | #include <linux/blkdev.h> | |
68 | ||
69 | MODULE_LICENSE("$ZFS_META_LICENSE"); | |
70 | ],[ | |
71 | struct request_queue *q = NULL; | |
72 | blk_queue_write_cache(q, true, true); | |
73 | ],[ | |
74 | AC_MSG_RESULT(no) | |
75 | ],[ | |
76 | AC_MSG_RESULT(yes) | |
77 | AC_DEFINE(HAVE_BLK_QUEUE_WRITE_CACHE_GPL_ONLY, 1, | |
78 | [blk_queue_write_cache() is GPL-only]) | |
79 | ]) | |
80 | ],[ | |
81 | AC_MSG_RESULT(no) | |
b18019d2 | 82 | ]) |
68e8f59a | 83 | |
b18019d2 ED |
84 | EXTRA_KCFLAGS="$tmp_flags" |
85 | ]) |