Commit | Line | Data |
---|---|---|
ec26815a | 1 | /* miscellaneous bits |
1da177e4 | 2 | * |
08e0e7c8 | 3 | * Copyright (C) 2002, 2007 Red Hat, Inc. All Rights Reserved. |
1da177e4 LT |
4 | * Written by David Howells (dhowells@redhat.com) |
5 | * | |
6 | * This program is free software; you can redistribute it and/or | |
7 | * modify it under the terms of the GNU General Public License | |
8 | * as published by the Free Software Foundation; either version | |
9 | * 2 of the License, or (at your option) any later version. | |
10 | */ | |
11 | ||
12 | #include <linux/kernel.h> | |
13 | #include <linux/module.h> | |
14 | #include <linux/errno.h> | |
1da177e4 | 15 | #include "internal.h" |
08e0e7c8 | 16 | #include "afs_fs.h" |
1da177e4 | 17 | |
1da177e4 LT |
18 | /* |
19 | * convert an AFS abort code to a Linux error number | |
20 | */ | |
08e0e7c8 | 21 | int afs_abort_to_error(u32 abort_code) |
1da177e4 | 22 | { |
08e0e7c8 | 23 | switch (abort_code) { |
53d5864b | 24 | /* low errno codes inserted into abort namespace */ |
08e0e7c8 | 25 | case 13: return -EACCES; |
416351f2 | 26 | case 27: return -EFBIG; |
260a9803 | 27 | case 30: return -EROFS; |
53d5864b NWF |
28 | |
29 | /* VICE "special error" codes; 101 - 111 */ | |
1da177e4 LT |
30 | case VSALVAGE: return -EIO; |
31 | case VNOVNODE: return -ENOENT; | |
08e0e7c8 | 32 | case VNOVOL: return -ENOMEDIUM; |
1da177e4 LT |
33 | case VVOLEXISTS: return -EEXIST; |
34 | case VNOSERVICE: return -EIO; | |
35 | case VOFFLINE: return -ENOENT; | |
36 | case VONLINE: return -EEXIST; | |
37 | case VDISKFULL: return -ENOSPC; | |
38 | case VOVERQUOTA: return -EDQUOT; | |
39 | case VBUSY: return -EBUSY; | |
40 | case VMOVED: return -ENXIO; | |
53d5864b NWF |
41 | |
42 | /* Unified AFS error table; ET "uae" == 0x2f6df00 */ | |
43 | case 0x2f6df00: return -EPERM; | |
44 | case 0x2f6df01: return -ENOENT; | |
45 | case 0x2f6df04: return -EIO; | |
46 | case 0x2f6df0a: return -EAGAIN; | |
47 | case 0x2f6df0b: return -ENOMEM; | |
260a9803 DH |
48 | case 0x2f6df0c: return -EACCES; |
49 | case 0x2f6df0f: return -EBUSY; | |
50 | case 0x2f6df10: return -EEXIST; | |
51 | case 0x2f6df11: return -EXDEV; | |
53d5864b | 52 | case 0x2f6df12: return -ENODEV; |
260a9803 DH |
53 | case 0x2f6df13: return -ENOTDIR; |
54 | case 0x2f6df14: return -EISDIR; | |
55 | case 0x2f6df15: return -EINVAL; | |
56 | case 0x2f6df1a: return -EFBIG; | |
57 | case 0x2f6df1b: return -ENOSPC; | |
58 | case 0x2f6df1d: return -EROFS; | |
59 | case 0x2f6df1e: return -EMLINK; | |
60 | case 0x2f6df20: return -EDOM; | |
61 | case 0x2f6df21: return -ERANGE; | |
62 | case 0x2f6df22: return -EDEADLK; | |
63 | case 0x2f6df23: return -ENAMETOOLONG; | |
64 | case 0x2f6df24: return -ENOLCK; | |
65 | case 0x2f6df26: return -ENOTEMPTY; | |
53d5864b NWF |
66 | case 0x2f6df28: return -EWOULDBLOCK; |
67 | case 0x2f6df69: return -ENOTCONN; | |
68 | case 0x2f6df6c: return -ETIMEDOUT; | |
260a9803 | 69 | case 0x2f6df78: return -EDQUOT; |
005411c3 | 70 | |
53d5864b | 71 | /* RXKAD abort codes; from include/rxrpc/packet.h. ET "RXK" == 0x1260B00 */ |
005411c3 DH |
72 | case RXKADINCONSISTENCY: return -EPROTO; |
73 | case RXKADPACKETSHORT: return -EPROTO; | |
74 | case RXKADLEVELFAIL: return -EKEYREJECTED; | |
75 | case RXKADTICKETLEN: return -EKEYREJECTED; | |
76 | case RXKADOUTOFSEQUENCE: return -EPROTO; | |
77 | case RXKADNOAUTH: return -EKEYREJECTED; | |
78 | case RXKADBADKEY: return -EKEYREJECTED; | |
79 | case RXKADBADTICKET: return -EKEYREJECTED; | |
80 | case RXKADUNKNOWNKEY: return -EKEYREJECTED; | |
81 | case RXKADEXPIRED: return -EKEYEXPIRED; | |
82 | case RXKADSEALEDINCON: return -EKEYREJECTED; | |
83 | case RXKADDATALEN: return -EKEYREJECTED; | |
84 | case RXKADILLEGALLEVEL: return -EKEYREJECTED; | |
85 | ||
1157f153 DH |
86 | case RXGEN_OPCODE: return -ENOTSUPP; |
87 | ||
260a9803 | 88 | default: return -EREMOTEIO; |
1da177e4 | 89 | } |
ec26815a | 90 | } |