| David Howells | ec26815 | 2007-04-26 15:49:28 -0700 | [diff] [blame] | 1 | /* miscellaneous bits | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 2 |  * | 
| David Howells | 08e0e7c | 2007-04-26 15:55:03 -0700 | [diff] [blame] | 3 |  * Copyright (C) 2002, 2007 Red Hat, Inc. All Rights Reserved. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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> | 
| David Howells | 005411c | 2009-06-16 21:36:49 +0100 | [diff] [blame] | 15 | #include <rxrpc/packet.h> | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 16 | #include "internal.h" | 
| David Howells | 08e0e7c | 2007-04-26 15:55:03 -0700 | [diff] [blame] | 17 | #include "afs_fs.h" | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 18 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 19 | /* | 
 | 20 |  * convert an AFS abort code to a Linux error number | 
 | 21 |  */ | 
| David Howells | 08e0e7c | 2007-04-26 15:55:03 -0700 | [diff] [blame] | 22 | int afs_abort_to_error(u32 abort_code) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 23 | { | 
| David Howells | 08e0e7c | 2007-04-26 15:55:03 -0700 | [diff] [blame] | 24 | 	switch (abort_code) { | 
 | 25 | 	case 13:		return -EACCES; | 
| David Howells | 416351f | 2007-05-09 02:33:45 -0700 | [diff] [blame] | 26 | 	case 27:		return -EFBIG; | 
| David Howells | 260a980 | 2007-04-26 15:59:35 -0700 | [diff] [blame] | 27 | 	case 30:		return -EROFS; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 28 | 	case VSALVAGE:		return -EIO; | 
 | 29 | 	case VNOVNODE:		return -ENOENT; | 
| David Howells | 08e0e7c | 2007-04-26 15:55:03 -0700 | [diff] [blame] | 30 | 	case VNOVOL:		return -ENOMEDIUM; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 31 | 	case VVOLEXISTS:	return -EEXIST; | 
 | 32 | 	case VNOSERVICE:	return -EIO; | 
 | 33 | 	case VOFFLINE:		return -ENOENT; | 
 | 34 | 	case VONLINE:		return -EEXIST; | 
 | 35 | 	case VDISKFULL:		return -ENOSPC; | 
 | 36 | 	case VOVERQUOTA:	return -EDQUOT; | 
 | 37 | 	case VBUSY:		return -EBUSY; | 
 | 38 | 	case VMOVED:		return -ENXIO; | 
| David Howells | e8d6c55 | 2007-07-15 23:40:12 -0700 | [diff] [blame] | 39 | 	case 0x2f6df0a:		return -EWOULDBLOCK; | 
| David Howells | 260a980 | 2007-04-26 15:59:35 -0700 | [diff] [blame] | 40 | 	case 0x2f6df0c:		return -EACCES; | 
 | 41 | 	case 0x2f6df0f:		return -EBUSY; | 
 | 42 | 	case 0x2f6df10:		return -EEXIST; | 
 | 43 | 	case 0x2f6df11:		return -EXDEV; | 
 | 44 | 	case 0x2f6df13:		return -ENOTDIR; | 
 | 45 | 	case 0x2f6df14:		return -EISDIR; | 
 | 46 | 	case 0x2f6df15:		return -EINVAL; | 
 | 47 | 	case 0x2f6df1a:		return -EFBIG; | 
 | 48 | 	case 0x2f6df1b:		return -ENOSPC; | 
 | 49 | 	case 0x2f6df1d:		return -EROFS; | 
 | 50 | 	case 0x2f6df1e:		return -EMLINK; | 
 | 51 | 	case 0x2f6df20:		return -EDOM; | 
 | 52 | 	case 0x2f6df21:		return -ERANGE; | 
 | 53 | 	case 0x2f6df22:		return -EDEADLK; | 
 | 54 | 	case 0x2f6df23:		return -ENAMETOOLONG; | 
 | 55 | 	case 0x2f6df24:		return -ENOLCK; | 
 | 56 | 	case 0x2f6df26:		return -ENOTEMPTY; | 
 | 57 | 	case 0x2f6df78:		return -EDQUOT; | 
| David Howells | 005411c | 2009-06-16 21:36:49 +0100 | [diff] [blame] | 58 |  | 
 | 59 | 	case RXKADINCONSISTENCY: return -EPROTO; | 
 | 60 | 	case RXKADPACKETSHORT:	return -EPROTO; | 
 | 61 | 	case RXKADLEVELFAIL:	return -EKEYREJECTED; | 
 | 62 | 	case RXKADTICKETLEN:	return -EKEYREJECTED; | 
 | 63 | 	case RXKADOUTOFSEQUENCE: return -EPROTO; | 
 | 64 | 	case RXKADNOAUTH:	return -EKEYREJECTED; | 
 | 65 | 	case RXKADBADKEY:	return -EKEYREJECTED; | 
 | 66 | 	case RXKADBADTICKET:	return -EKEYREJECTED; | 
 | 67 | 	case RXKADUNKNOWNKEY:	return -EKEYREJECTED; | 
 | 68 | 	case RXKADEXPIRED:	return -EKEYEXPIRED; | 
 | 69 | 	case RXKADSEALEDINCON:	return -EKEYREJECTED; | 
 | 70 | 	case RXKADDATALEN:	return -EKEYREJECTED; | 
 | 71 | 	case RXKADILLEGALLEVEL:	return -EKEYREJECTED; | 
 | 72 |  | 
| David Howells | 260a980 | 2007-04-26 15:59:35 -0700 | [diff] [blame] | 73 | 	default:		return -EREMOTEIO; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 74 | 	} | 
| David Howells | ec26815 | 2007-04-26 15:49:28 -0700 | [diff] [blame] | 75 | } |