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