Commit | Line | Data |
---|---|---|
2d58de78 LW |
1 | /* |
2 | * GPL HEADER START | |
3 | * | |
4 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | |
5 | * | |
6 | * This program is free software; you can redistribute it and/or modify | |
7 | * it under the terms of the GNU General Public License version 2 only, | |
8 | * as published by the Free Software Foundation. | |
9 | * | |
10 | * This program is distributed in the hope that it will be useful, but | |
11 | * WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * General Public License version 2 for more details (a copy is included | |
14 | * in the LICENSE file that accompanied this code). | |
15 | * | |
16 | * You should have received a copy of the GNU General Public License | |
17 | * version 2 along with this program; If not, see | |
18 | * http://www.gnu.org/licenses/gpl-2.0.txt | |
19 | * | |
20 | * GPL HEADER END | |
21 | */ | |
22 | /* | |
23 | * Copyright (C) 2011 FUJITSU LIMITED. All rights reserved. | |
24 | * | |
25 | * Copyright (c) 2013, Intel Corporation. | |
26 | */ | |
27 | ||
9fdaf8c0 | 28 | #include "../../include/linux/libcfs/libcfs.h" |
e27db149 | 29 | #include "../include/lustre/lustre_errno.h" |
2d58de78 LW |
30 | |
31 | /* | |
32 | * The two translation tables below must define a one-to-one mapping between | |
33 | * host and network errnos. | |
34 | * | |
35 | * EWOULDBLOCK is equal to EAGAIN on all architectures except for parisc, which | |
36 | * appears irrelevant. Thus, existing references to EWOULDBLOCK are fine. | |
37 | * | |
38 | * EDEADLOCK is equal to EDEADLK on x86 but not on sparc, at least. A sparc | |
39 | * host has no context-free way to determine if a LUSTRE_EDEADLK represents an | |
40 | * EDEADLK or an EDEADLOCK. Therefore, all existing references to EDEADLOCK | |
41 | * that need to be transferred on wire have been replaced with EDEADLK. | |
42 | */ | |
43 | static int lustre_errno_hton_mapping[] = { | |
44 | [EPERM] = LUSTRE_EPERM, | |
45 | [ENOENT] = LUSTRE_ENOENT, | |
46 | [ESRCH] = LUSTRE_ESRCH, | |
47 | [EINTR] = LUSTRE_EINTR, | |
48 | [EIO] = LUSTRE_EIO, | |
49 | [ENXIO] = LUSTRE_ENXIO, | |
50 | [E2BIG] = LUSTRE_E2BIG, | |
51 | [ENOEXEC] = LUSTRE_ENOEXEC, | |
52 | [EBADF] = LUSTRE_EBADF, | |
53 | [ECHILD] = LUSTRE_ECHILD, | |
54 | [EAGAIN] = LUSTRE_EAGAIN, | |
55 | [ENOMEM] = LUSTRE_ENOMEM, | |
56 | [EACCES] = LUSTRE_EACCES, | |
57 | [EFAULT] = LUSTRE_EFAULT, | |
58 | [ENOTBLK] = LUSTRE_ENOTBLK, | |
59 | [EBUSY] = LUSTRE_EBUSY, | |
60 | [EEXIST] = LUSTRE_EEXIST, | |
61 | [EXDEV] = LUSTRE_EXDEV, | |
62 | [ENODEV] = LUSTRE_ENODEV, | |
63 | [ENOTDIR] = LUSTRE_ENOTDIR, | |
64 | [EISDIR] = LUSTRE_EISDIR, | |
65 | [EINVAL] = LUSTRE_EINVAL, | |
66 | [ENFILE] = LUSTRE_ENFILE, | |
67 | [EMFILE] = LUSTRE_EMFILE, | |
68 | [ENOTTY] = LUSTRE_ENOTTY, | |
69 | [ETXTBSY] = LUSTRE_ETXTBSY, | |
70 | [EFBIG] = LUSTRE_EFBIG, | |
71 | [ENOSPC] = LUSTRE_ENOSPC, | |
72 | [ESPIPE] = LUSTRE_ESPIPE, | |
73 | [EROFS] = LUSTRE_EROFS, | |
74 | [EMLINK] = LUSTRE_EMLINK, | |
75 | [EPIPE] = LUSTRE_EPIPE, | |
76 | [EDOM] = LUSTRE_EDOM, | |
77 | [ERANGE] = LUSTRE_ERANGE, | |
78 | [EDEADLK] = LUSTRE_EDEADLK, | |
79 | [ENAMETOOLONG] = LUSTRE_ENAMETOOLONG, | |
80 | [ENOLCK] = LUSTRE_ENOLCK, | |
81 | [ENOSYS] = LUSTRE_ENOSYS, | |
82 | [ENOTEMPTY] = LUSTRE_ENOTEMPTY, | |
83 | [ELOOP] = LUSTRE_ELOOP, | |
84 | [ENOMSG] = LUSTRE_ENOMSG, | |
85 | [EIDRM] = LUSTRE_EIDRM, | |
86 | [ECHRNG] = LUSTRE_ECHRNG, | |
87 | [EL2NSYNC] = LUSTRE_EL2NSYNC, | |
88 | [EL3HLT] = LUSTRE_EL3HLT, | |
89 | [EL3RST] = LUSTRE_EL3RST, | |
90 | [ELNRNG] = LUSTRE_ELNRNG, | |
91 | [EUNATCH] = LUSTRE_EUNATCH, | |
92 | [ENOCSI] = LUSTRE_ENOCSI, | |
93 | [EL2HLT] = LUSTRE_EL2HLT, | |
94 | [EBADE] = LUSTRE_EBADE, | |
95 | [EBADR] = LUSTRE_EBADR, | |
96 | [EXFULL] = LUSTRE_EXFULL, | |
97 | [ENOANO] = LUSTRE_ENOANO, | |
98 | [EBADRQC] = LUSTRE_EBADRQC, | |
99 | [EBADSLT] = LUSTRE_EBADSLT, | |
100 | [EBFONT] = LUSTRE_EBFONT, | |
101 | [ENOSTR] = LUSTRE_ENOSTR, | |
102 | [ENODATA] = LUSTRE_ENODATA, | |
103 | [ETIME] = LUSTRE_ETIME, | |
104 | [ENOSR] = LUSTRE_ENOSR, | |
105 | [ENONET] = LUSTRE_ENONET, | |
106 | [ENOPKG] = LUSTRE_ENOPKG, | |
107 | [EREMOTE] = LUSTRE_EREMOTE, | |
108 | [ENOLINK] = LUSTRE_ENOLINK, | |
109 | [EADV] = LUSTRE_EADV, | |
110 | [ESRMNT] = LUSTRE_ESRMNT, | |
111 | [ECOMM] = LUSTRE_ECOMM, | |
112 | [EPROTO] = LUSTRE_EPROTO, | |
113 | [EMULTIHOP] = LUSTRE_EMULTIHOP, | |
114 | [EDOTDOT] = LUSTRE_EDOTDOT, | |
115 | [EBADMSG] = LUSTRE_EBADMSG, | |
116 | [EOVERFLOW] = LUSTRE_EOVERFLOW, | |
117 | [ENOTUNIQ] = LUSTRE_ENOTUNIQ, | |
118 | [EBADFD] = LUSTRE_EBADFD, | |
119 | [EREMCHG] = LUSTRE_EREMCHG, | |
120 | [ELIBACC] = LUSTRE_ELIBACC, | |
121 | [ELIBBAD] = LUSTRE_ELIBBAD, | |
122 | [ELIBSCN] = LUSTRE_ELIBSCN, | |
123 | [ELIBMAX] = LUSTRE_ELIBMAX, | |
124 | [ELIBEXEC] = LUSTRE_ELIBEXEC, | |
125 | [EILSEQ] = LUSTRE_EILSEQ, | |
126 | [ERESTART] = LUSTRE_ERESTART, | |
127 | [ESTRPIPE] = LUSTRE_ESTRPIPE, | |
128 | [EUSERS] = LUSTRE_EUSERS, | |
129 | [ENOTSOCK] = LUSTRE_ENOTSOCK, | |
130 | [EDESTADDRREQ] = LUSTRE_EDESTADDRREQ, | |
131 | [EMSGSIZE] = LUSTRE_EMSGSIZE, | |
132 | [EPROTOTYPE] = LUSTRE_EPROTOTYPE, | |
133 | [ENOPROTOOPT] = LUSTRE_ENOPROTOOPT, | |
134 | [EPROTONOSUPPORT] = LUSTRE_EPROTONOSUPPORT, | |
135 | [ESOCKTNOSUPPORT] = LUSTRE_ESOCKTNOSUPPORT, | |
136 | [EOPNOTSUPP] = LUSTRE_EOPNOTSUPP, | |
137 | [EPFNOSUPPORT] = LUSTRE_EPFNOSUPPORT, | |
138 | [EAFNOSUPPORT] = LUSTRE_EAFNOSUPPORT, | |
139 | [EADDRINUSE] = LUSTRE_EADDRINUSE, | |
140 | [EADDRNOTAVAIL] = LUSTRE_EADDRNOTAVAIL, | |
141 | [ENETDOWN] = LUSTRE_ENETDOWN, | |
142 | [ENETUNREACH] = LUSTRE_ENETUNREACH, | |
143 | [ENETRESET] = LUSTRE_ENETRESET, | |
144 | [ECONNABORTED] = LUSTRE_ECONNABORTED, | |
145 | [ECONNRESET] = LUSTRE_ECONNRESET, | |
146 | [ENOBUFS] = LUSTRE_ENOBUFS, | |
147 | [EISCONN] = LUSTRE_EISCONN, | |
148 | [ENOTCONN] = LUSTRE_ENOTCONN, | |
149 | [ESHUTDOWN] = LUSTRE_ESHUTDOWN, | |
150 | [ETOOMANYREFS] = LUSTRE_ETOOMANYREFS, | |
151 | [ETIMEDOUT] = LUSTRE_ETIMEDOUT, | |
152 | [ECONNREFUSED] = LUSTRE_ECONNREFUSED, | |
153 | [EHOSTDOWN] = LUSTRE_EHOSTDOWN, | |
154 | [EHOSTUNREACH] = LUSTRE_EHOSTUNREACH, | |
155 | [EALREADY] = LUSTRE_EALREADY, | |
156 | [EINPROGRESS] = LUSTRE_EINPROGRESS, | |
157 | [ESTALE] = LUSTRE_ESTALE, | |
158 | [EUCLEAN] = LUSTRE_EUCLEAN, | |
159 | [ENOTNAM] = LUSTRE_ENOTNAM, | |
160 | [ENAVAIL] = LUSTRE_ENAVAIL, | |
161 | [EISNAM] = LUSTRE_EISNAM, | |
162 | [EREMOTEIO] = LUSTRE_EREMOTEIO, | |
163 | [EDQUOT] = LUSTRE_EDQUOT, | |
164 | [ENOMEDIUM] = LUSTRE_ENOMEDIUM, | |
165 | [EMEDIUMTYPE] = LUSTRE_EMEDIUMTYPE, | |
166 | [ECANCELED] = LUSTRE_ECANCELED, | |
167 | [ENOKEY] = LUSTRE_ENOKEY, | |
168 | [EKEYEXPIRED] = LUSTRE_EKEYEXPIRED, | |
169 | [EKEYREVOKED] = LUSTRE_EKEYREVOKED, | |
170 | [EKEYREJECTED] = LUSTRE_EKEYREJECTED, | |
171 | [EOWNERDEAD] = LUSTRE_EOWNERDEAD, | |
172 | [ENOTRECOVERABLE] = LUSTRE_ENOTRECOVERABLE, | |
173 | [ERESTARTSYS] = LUSTRE_ERESTARTSYS, | |
174 | [ERESTARTNOINTR] = LUSTRE_ERESTARTNOINTR, | |
175 | [ERESTARTNOHAND] = LUSTRE_ERESTARTNOHAND, | |
176 | [ENOIOCTLCMD] = LUSTRE_ENOIOCTLCMD, | |
177 | [ERESTART_RESTARTBLOCK] = LUSTRE_ERESTART_RESTARTBLOCK, | |
178 | [EBADHANDLE] = LUSTRE_EBADHANDLE, | |
179 | [ENOTSYNC] = LUSTRE_ENOTSYNC, | |
180 | [EBADCOOKIE] = LUSTRE_EBADCOOKIE, | |
181 | [ENOTSUPP] = LUSTRE_ENOTSUPP, | |
182 | [ETOOSMALL] = LUSTRE_ETOOSMALL, | |
183 | [ESERVERFAULT] = LUSTRE_ESERVERFAULT, | |
184 | [EBADTYPE] = LUSTRE_EBADTYPE, | |
185 | [EJUKEBOX] = LUSTRE_EJUKEBOX, | |
186 | [EIOCBQUEUED] = LUSTRE_EIOCBQUEUED, | |
2d58de78 LW |
187 | }; |
188 | ||
189 | static int lustre_errno_ntoh_mapping[] = { | |
190 | [LUSTRE_EPERM] = EPERM, | |
191 | [LUSTRE_ENOENT] = ENOENT, | |
192 | [LUSTRE_ESRCH] = ESRCH, | |
193 | [LUSTRE_EINTR] = EINTR, | |
194 | [LUSTRE_EIO] = EIO, | |
195 | [LUSTRE_ENXIO] = ENXIO, | |
196 | [LUSTRE_E2BIG] = E2BIG, | |
197 | [LUSTRE_ENOEXEC] = ENOEXEC, | |
198 | [LUSTRE_EBADF] = EBADF, | |
199 | [LUSTRE_ECHILD] = ECHILD, | |
200 | [LUSTRE_EAGAIN] = EAGAIN, | |
201 | [LUSTRE_ENOMEM] = ENOMEM, | |
202 | [LUSTRE_EACCES] = EACCES, | |
203 | [LUSTRE_EFAULT] = EFAULT, | |
204 | [LUSTRE_ENOTBLK] = ENOTBLK, | |
205 | [LUSTRE_EBUSY] = EBUSY, | |
206 | [LUSTRE_EEXIST] = EEXIST, | |
207 | [LUSTRE_EXDEV] = EXDEV, | |
208 | [LUSTRE_ENODEV] = ENODEV, | |
209 | [LUSTRE_ENOTDIR] = ENOTDIR, | |
210 | [LUSTRE_EISDIR] = EISDIR, | |
211 | [LUSTRE_EINVAL] = EINVAL, | |
212 | [LUSTRE_ENFILE] = ENFILE, | |
213 | [LUSTRE_EMFILE] = EMFILE, | |
214 | [LUSTRE_ENOTTY] = ENOTTY, | |
215 | [LUSTRE_ETXTBSY] = ETXTBSY, | |
216 | [LUSTRE_EFBIG] = EFBIG, | |
217 | [LUSTRE_ENOSPC] = ENOSPC, | |
218 | [LUSTRE_ESPIPE] = ESPIPE, | |
219 | [LUSTRE_EROFS] = EROFS, | |
220 | [LUSTRE_EMLINK] = EMLINK, | |
221 | [LUSTRE_EPIPE] = EPIPE, | |
222 | [LUSTRE_EDOM] = EDOM, | |
223 | [LUSTRE_ERANGE] = ERANGE, | |
224 | [LUSTRE_EDEADLK] = EDEADLK, | |
225 | [LUSTRE_ENAMETOOLONG] = ENAMETOOLONG, | |
226 | [LUSTRE_ENOLCK] = ENOLCK, | |
227 | [LUSTRE_ENOSYS] = ENOSYS, | |
228 | [LUSTRE_ENOTEMPTY] = ENOTEMPTY, | |
229 | [LUSTRE_ELOOP] = ELOOP, | |
230 | [LUSTRE_ENOMSG] = ENOMSG, | |
231 | [LUSTRE_EIDRM] = EIDRM, | |
232 | [LUSTRE_ECHRNG] = ECHRNG, | |
233 | [LUSTRE_EL2NSYNC] = EL2NSYNC, | |
234 | [LUSTRE_EL3HLT] = EL3HLT, | |
235 | [LUSTRE_EL3RST] = EL3RST, | |
236 | [LUSTRE_ELNRNG] = ELNRNG, | |
237 | [LUSTRE_EUNATCH] = EUNATCH, | |
238 | [LUSTRE_ENOCSI] = ENOCSI, | |
239 | [LUSTRE_EL2HLT] = EL2HLT, | |
240 | [LUSTRE_EBADE] = EBADE, | |
241 | [LUSTRE_EBADR] = EBADR, | |
242 | [LUSTRE_EXFULL] = EXFULL, | |
243 | [LUSTRE_ENOANO] = ENOANO, | |
244 | [LUSTRE_EBADRQC] = EBADRQC, | |
245 | [LUSTRE_EBADSLT] = EBADSLT, | |
246 | [LUSTRE_EBFONT] = EBFONT, | |
247 | [LUSTRE_ENOSTR] = ENOSTR, | |
248 | [LUSTRE_ENODATA] = ENODATA, | |
249 | [LUSTRE_ETIME] = ETIME, | |
250 | [LUSTRE_ENOSR] = ENOSR, | |
251 | [LUSTRE_ENONET] = ENONET, | |
252 | [LUSTRE_ENOPKG] = ENOPKG, | |
253 | [LUSTRE_EREMOTE] = EREMOTE, | |
254 | [LUSTRE_ENOLINK] = ENOLINK, | |
255 | [LUSTRE_EADV] = EADV, | |
256 | [LUSTRE_ESRMNT] = ESRMNT, | |
257 | [LUSTRE_ECOMM] = ECOMM, | |
258 | [LUSTRE_EPROTO] = EPROTO, | |
259 | [LUSTRE_EMULTIHOP] = EMULTIHOP, | |
260 | [LUSTRE_EDOTDOT] = EDOTDOT, | |
261 | [LUSTRE_EBADMSG] = EBADMSG, | |
262 | [LUSTRE_EOVERFLOW] = EOVERFLOW, | |
263 | [LUSTRE_ENOTUNIQ] = ENOTUNIQ, | |
264 | [LUSTRE_EBADFD] = EBADFD, | |
265 | [LUSTRE_EREMCHG] = EREMCHG, | |
266 | [LUSTRE_ELIBACC] = ELIBACC, | |
267 | [LUSTRE_ELIBBAD] = ELIBBAD, | |
268 | [LUSTRE_ELIBSCN] = ELIBSCN, | |
269 | [LUSTRE_ELIBMAX] = ELIBMAX, | |
270 | [LUSTRE_ELIBEXEC] = ELIBEXEC, | |
271 | [LUSTRE_EILSEQ] = EILSEQ, | |
272 | [LUSTRE_ERESTART] = ERESTART, | |
273 | [LUSTRE_ESTRPIPE] = ESTRPIPE, | |
274 | [LUSTRE_EUSERS] = EUSERS, | |
275 | [LUSTRE_ENOTSOCK] = ENOTSOCK, | |
276 | [LUSTRE_EDESTADDRREQ] = EDESTADDRREQ, | |
277 | [LUSTRE_EMSGSIZE] = EMSGSIZE, | |
278 | [LUSTRE_EPROTOTYPE] = EPROTOTYPE, | |
279 | [LUSTRE_ENOPROTOOPT] = ENOPROTOOPT, | |
280 | [LUSTRE_EPROTONOSUPPORT] = EPROTONOSUPPORT, | |
281 | [LUSTRE_ESOCKTNOSUPPORT] = ESOCKTNOSUPPORT, | |
282 | [LUSTRE_EOPNOTSUPP] = EOPNOTSUPP, | |
283 | [LUSTRE_EPFNOSUPPORT] = EPFNOSUPPORT, | |
284 | [LUSTRE_EAFNOSUPPORT] = EAFNOSUPPORT, | |
285 | [LUSTRE_EADDRINUSE] = EADDRINUSE, | |
286 | [LUSTRE_EADDRNOTAVAIL] = EADDRNOTAVAIL, | |
287 | [LUSTRE_ENETDOWN] = ENETDOWN, | |
288 | [LUSTRE_ENETUNREACH] = ENETUNREACH, | |
289 | [LUSTRE_ENETRESET] = ENETRESET, | |
290 | [LUSTRE_ECONNABORTED] = ECONNABORTED, | |
291 | [LUSTRE_ECONNRESET] = ECONNRESET, | |
292 | [LUSTRE_ENOBUFS] = ENOBUFS, | |
293 | [LUSTRE_EISCONN] = EISCONN, | |
294 | [LUSTRE_ENOTCONN] = ENOTCONN, | |
295 | [LUSTRE_ESHUTDOWN] = ESHUTDOWN, | |
296 | [LUSTRE_ETOOMANYREFS] = ETOOMANYREFS, | |
297 | [LUSTRE_ETIMEDOUT] = ETIMEDOUT, | |
298 | [LUSTRE_ECONNREFUSED] = ECONNREFUSED, | |
299 | [LUSTRE_EHOSTDOWN] = EHOSTDOWN, | |
300 | [LUSTRE_EHOSTUNREACH] = EHOSTUNREACH, | |
301 | [LUSTRE_EALREADY] = EALREADY, | |
302 | [LUSTRE_EINPROGRESS] = EINPROGRESS, | |
303 | [LUSTRE_ESTALE] = ESTALE, | |
304 | [LUSTRE_EUCLEAN] = EUCLEAN, | |
305 | [LUSTRE_ENOTNAM] = ENOTNAM, | |
306 | [LUSTRE_ENAVAIL] = ENAVAIL, | |
307 | [LUSTRE_EISNAM] = EISNAM, | |
308 | [LUSTRE_EREMOTEIO] = EREMOTEIO, | |
309 | [LUSTRE_EDQUOT] = EDQUOT, | |
310 | [LUSTRE_ENOMEDIUM] = ENOMEDIUM, | |
311 | [LUSTRE_EMEDIUMTYPE] = EMEDIUMTYPE, | |
312 | [LUSTRE_ECANCELED] = ECANCELED, | |
313 | [LUSTRE_ENOKEY] = ENOKEY, | |
314 | [LUSTRE_EKEYEXPIRED] = EKEYEXPIRED, | |
315 | [LUSTRE_EKEYREVOKED] = EKEYREVOKED, | |
316 | [LUSTRE_EKEYREJECTED] = EKEYREJECTED, | |
317 | [LUSTRE_EOWNERDEAD] = EOWNERDEAD, | |
318 | [LUSTRE_ENOTRECOVERABLE] = ENOTRECOVERABLE, | |
319 | [LUSTRE_ERESTARTSYS] = ERESTARTSYS, | |
320 | [LUSTRE_ERESTARTNOINTR] = ERESTARTNOINTR, | |
321 | [LUSTRE_ERESTARTNOHAND] = ERESTARTNOHAND, | |
322 | [LUSTRE_ENOIOCTLCMD] = ENOIOCTLCMD, | |
323 | [LUSTRE_ERESTART_RESTARTBLOCK] = ERESTART_RESTARTBLOCK, | |
324 | [LUSTRE_EBADHANDLE] = EBADHANDLE, | |
325 | [LUSTRE_ENOTSYNC] = ENOTSYNC, | |
326 | [LUSTRE_EBADCOOKIE] = EBADCOOKIE, | |
327 | [LUSTRE_ENOTSUPP] = ENOTSUPP, | |
328 | [LUSTRE_ETOOSMALL] = ETOOSMALL, | |
329 | [LUSTRE_ESERVERFAULT] = ESERVERFAULT, | |
330 | [LUSTRE_EBADTYPE] = EBADTYPE, | |
331 | [LUSTRE_EJUKEBOX] = EJUKEBOX, | |
332 | [LUSTRE_EIOCBQUEUED] = EIOCBQUEUED, | |
2d58de78 LW |
333 | }; |
334 | ||
335 | unsigned int lustre_errno_hton(unsigned int h) | |
336 | { | |
337 | unsigned int n; | |
338 | ||
339 | if (h == 0) { | |
340 | n = 0; | |
341 | } else if (h < ARRAY_SIZE(lustre_errno_hton_mapping)) { | |
342 | n = lustre_errno_hton_mapping[h]; | |
343 | if (n == 0) | |
344 | goto generic; | |
345 | } else { | |
346 | generic: | |
347 | /* | |
348 | * A generic errno is better than the unknown one that could | |
349 | * mean anything to a different host. | |
350 | */ | |
351 | n = LUSTRE_EIO; | |
352 | } | |
353 | ||
354 | return n; | |
355 | } | |
356 | EXPORT_SYMBOL(lustre_errno_hton); | |
357 | ||
358 | unsigned int lustre_errno_ntoh(unsigned int n) | |
359 | { | |
360 | unsigned int h; | |
361 | ||
362 | if (n == 0) { | |
363 | h = 0; | |
364 | } else if (n < ARRAY_SIZE(lustre_errno_ntoh_mapping)) { | |
365 | h = lustre_errno_ntoh_mapping[n]; | |
366 | if (h == 0) | |
367 | goto generic; | |
368 | } else { | |
369 | generic: | |
370 | /* | |
371 | * Similar to the situation in lustre_errno_hton(), an unknown | |
372 | * network errno could coincide with anything. Hence, it is | |
373 | * better to return a generic errno. | |
374 | */ | |
375 | h = EIO; | |
376 | } | |
377 | ||
378 | return h; | |
379 | } | |
380 | EXPORT_SYMBOL(lustre_errno_ntoh); |