]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - config/kernel-blkdev.m4
Vendor import of openzfs master @ 184df27eef0abdc7ab2105b21257f753834b936b
[FreeBSD/FreeBSD.git] / config / kernel-blkdev.m4
1 dnl #
2 dnl # 2.6.38 API change,
3 dnl # Added blkdev_get_by_path()
4 dnl #
5 AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_GET_BY_PATH], [
6         ZFS_LINUX_TEST_SRC([blkdev_get_by_path], [
7                 #include <linux/fs.h>
8                 #include <linux/blkdev.h>
9         ], [
10                 struct block_device *bdev __attribute__ ((unused)) = NULL;
11                 const char *path = "path";
12                 fmode_t mode = 0;
13                 void *holder = NULL;
14
15                 bdev = blkdev_get_by_path(path, mode, holder);
16         ])
17 ])
18
19 AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_GET_BY_PATH], [
20         AC_MSG_CHECKING([whether blkdev_get_by_path() exists])
21         ZFS_LINUX_TEST_RESULT([blkdev_get_by_path], [
22                 AC_MSG_RESULT(yes)
23         ], [
24                 ZFS_LINUX_TEST_ERROR([blkdev_get_by_path()])
25         ])
26 ])
27
28 dnl #
29 dnl # 2.6.38 API change,
30 dnl # Added blkdev_put()
31 dnl #
32 AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_PUT], [
33         ZFS_LINUX_TEST_SRC([blkdev_put], [
34                 #include <linux/fs.h>
35                 #include <linux/blkdev.h>
36         ], [
37                 struct block_device *bdev = NULL;
38                 fmode_t mode = 0;
39
40                 blkdev_put(bdev, mode);
41         ])
42 ])
43
44 AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_PUT], [
45         AC_MSG_CHECKING([whether blkdev_put() exists])
46         ZFS_LINUX_TEST_RESULT([blkdev_put], [
47                 AC_MSG_RESULT(yes)
48         ], [
49                 ZFS_LINUX_TEST_ERROR([blkdev_put()])
50         ])
51 ])
52
53 dnl #
54 dnl # 4.1 API, exported blkdev_reread_part() symbol, back ported to the
55 dnl # 3.10.0 CentOS 7.x enterprise kernels.
56 dnl #
57 AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_REREAD_PART], [
58         ZFS_LINUX_TEST_SRC([blkdev_reread_part], [
59                 #include <linux/fs.h>
60                 #include <linux/blkdev.h>
61         ], [
62                 struct block_device *bdev = NULL;
63                 int error;
64
65                 error = blkdev_reread_part(bdev);
66         ])
67 ])
68
69 AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_REREAD_PART], [
70         AC_MSG_CHECKING([whether blkdev_reread_part() exists])
71         ZFS_LINUX_TEST_RESULT([blkdev_reread_part], [
72                 AC_MSG_RESULT(yes)
73                 AC_DEFINE(HAVE_BLKDEV_REREAD_PART, 1,
74                     [blkdev_reread_part() exists])
75         ], [
76                 AC_MSG_RESULT(no)
77         ])
78 ])
79
80 dnl #
81 dnl # 2.6.22 API change
82 dnl # Single argument invalidate_bdev()
83 dnl #
84 AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_INVALIDATE_BDEV], [
85         ZFS_LINUX_TEST_SRC([invalidate_bdev], [
86                 #include <linux/buffer_head.h>
87                 #include <linux/blkdev.h>
88         ],[
89                 struct block_device *bdev = NULL;
90                 invalidate_bdev(bdev);
91         ])
92 ])
93
94 AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_INVALIDATE_BDEV], [
95         AC_MSG_CHECKING([whether invalidate_bdev() exists])
96         ZFS_LINUX_TEST_RESULT([invalidate_bdev], [
97                 AC_MSG_RESULT(yes)
98         ],[
99                 ZFS_LINUX_TEST_ERROR([invalidate_bdev()])
100         ])
101 ])
102
103 dnl #
104 dnl # 2.6.27, lookup_bdev() was exported.
105 dnl # 4.4.0-6.21 - lookup_bdev() takes 2 arguments.
106 dnl #
107 AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_LOOKUP_BDEV], [
108         ZFS_LINUX_TEST_SRC([lookup_bdev_1arg], [
109                 #include <linux/fs.h>
110                 #include <linux/blkdev.h>
111         ], [
112                 lookup_bdev(NULL);
113         ])
114
115         ZFS_LINUX_TEST_SRC([lookup_bdev_2args], [
116                 #include <linux/fs.h>
117         ], [
118                 lookup_bdev(NULL, FMODE_READ);
119         ])
120 ])
121
122 AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_LOOKUP_BDEV], [
123         AC_MSG_CHECKING([whether lookup_bdev() wants 1 arg])
124         ZFS_LINUX_TEST_RESULT_SYMBOL([lookup_bdev_1arg],
125             [lookup_bdev], [fs/block_dev.c], [
126                 AC_MSG_RESULT(yes)
127                 AC_DEFINE(HAVE_1ARG_LOOKUP_BDEV, 1,
128                     [lookup_bdev() wants 1 arg])
129         ], [
130                 AC_MSG_RESULT(no)
131
132                 AC_MSG_CHECKING([whether lookup_bdev() wants 2 args])
133                 ZFS_LINUX_TEST_RESULT_SYMBOL([lookup_bdev_2args],
134                     [lookup_bdev], [fs/block_dev.c], [
135                         AC_MSG_RESULT(yes)
136                         AC_DEFINE(HAVE_2ARGS_LOOKUP_BDEV, 1,
137                             [lookup_bdev() wants 2 args])
138                 ], [
139                         ZFS_LINUX_TEST_ERROR([lookup_bdev()])
140                 ])
141         ])
142 ])
143
144 dnl #
145 dnl # 2.6.30 API change
146 dnl #
147 dnl # The bdev_physical_block_size() interface was added to provide a way
148 dnl # to determine the smallest write which can be performed without a
149 dnl # read-modify-write operation.
150 dnl #
151 dnl # Unfortunately, this interface isn't entirely reliable because
152 dnl # drives are sometimes known to misreport this value.
153 dnl #
154 AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_PHYSICAL_BLOCK_SIZE], [
155         ZFS_LINUX_TEST_SRC([bdev_physical_block_size], [
156                 #include <linux/blkdev.h>
157         ],[
158                 struct block_device *bdev __attribute__ ((unused)) = NULL;
159                 bdev_physical_block_size(bdev);
160         ])
161 ])
162
163 AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_BDEV_PHYSICAL_BLOCK_SIZE], [
164         AC_MSG_CHECKING([whether bdev_physical_block_size() is available])
165         ZFS_LINUX_TEST_RESULT([bdev_physical_block_size], [
166                 AC_MSG_RESULT(yes)
167         ],[
168                 ZFS_LINUX_TEST_ERROR([bdev_physical_block_size()])
169         ])
170 ])
171
172 dnl #
173 dnl # 2.6.30 API change
174 dnl # Added bdev_logical_block_size().
175 dnl #
176 AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_LOGICAL_BLOCK_SIZE], [
177         ZFS_LINUX_TEST_SRC([bdev_logical_block_size], [
178                 #include <linux/blkdev.h>
179         ],[
180                 struct block_device *bdev __attribute__ ((unused)) = NULL;
181                 bdev_logical_block_size(bdev);
182         ])
183 ])
184
185 AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_BDEV_LOGICAL_BLOCK_SIZE], [
186         AC_MSG_CHECKING([whether bdev_logical_block_size() is available])
187         ZFS_LINUX_TEST_RESULT([bdev_logical_block_size], [
188                 AC_MSG_RESULT(yes)
189         ],[
190                 ZFS_LINUX_TEST_ERROR([bdev_logical_block_size()])
191         ])
192 ])
193
194 AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV], [
195         ZFS_AC_KERNEL_SRC_BLKDEV_GET_BY_PATH
196         ZFS_AC_KERNEL_SRC_BLKDEV_PUT
197         ZFS_AC_KERNEL_SRC_BLKDEV_REREAD_PART
198         ZFS_AC_KERNEL_SRC_BLKDEV_INVALIDATE_BDEV
199         ZFS_AC_KERNEL_SRC_BLKDEV_LOOKUP_BDEV
200         ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_LOGICAL_BLOCK_SIZE
201         ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_PHYSICAL_BLOCK_SIZE
202 ])
203
204 AC_DEFUN([ZFS_AC_KERNEL_BLKDEV], [
205         ZFS_AC_KERNEL_BLKDEV_GET_BY_PATH
206         ZFS_AC_KERNEL_BLKDEV_PUT
207         ZFS_AC_KERNEL_BLKDEV_REREAD_PART
208         ZFS_AC_KERNEL_BLKDEV_INVALIDATE_BDEV
209         ZFS_AC_KERNEL_BLKDEV_LOOKUP_BDEV
210         ZFS_AC_KERNEL_BLKDEV_BDEV_LOGICAL_BLOCK_SIZE
211         ZFS_AC_KERNEL_BLKDEV_BDEV_PHYSICAL_BLOCK_SIZE
212 ])