1 /* miscellaneous bits 2 * 3 * Copyright (C) 2002, 2007 Red Hat, Inc. All Rights Reserved. 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> 15 #include "internal.h" 16 #include "afs_fs.h" 17 18 /* 19 * convert an AFS abort code to a Linux error number 20 */ 21 int afs_abort_to_error(u32 abort_code) 22 { 23 switch (abort_code) { 24 /* low errno codes inserted into abort namespace */ 25 case 13: return -EACCES; 26 case 27: return -EFBIG; 27 case 30: return -EROFS; 28 29 /* VICE "special error" codes; 101 - 111 */ 30 case VSALVAGE: return -EIO; 31 case VNOVNODE: return -ENOENT; 32 case VNOVOL: return -ENOMEDIUM; 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; 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; 48 case 0x2f6df0c: return -EACCES; 49 case 0x2f6df0f: return -EBUSY; 50 case 0x2f6df10: return -EEXIST; 51 case 0x2f6df11: return -EXDEV; 52 case 0x2f6df12: return -ENODEV; 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; 66 case 0x2f6df28: return -EWOULDBLOCK; 67 case 0x2f6df69: return -ENOTCONN; 68 case 0x2f6df6c: return -ETIMEDOUT; 69 case 0x2f6df78: return -EDQUOT; 70 71 /* RXKAD abort codes; from include/rxrpc/packet.h. ET "RXK" == 0x1260B00 */ 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 86 case RXGEN_OPCODE: return -ENOTSUPP; 87 88 default: return -EREMOTEIO; 89 } 90 } 91