mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	afs: Add support for the UAE error table
Add support for mapping AFS UAE abort codes to Linux errno values. Signed-off-by: David Howells <dhowells@redhat.com>
This commit is contained in:
		
							parent
							
								
									ee102584ef
								
							
						
					
					
						commit
						1eda8bab70
					
				
					 2 changed files with 152 additions and 28 deletions
				
			
		| 
						 | 
				
			
			@ -14,6 +14,7 @@
 | 
			
		|||
#include <linux/errno.h>
 | 
			
		||||
#include "internal.h"
 | 
			
		||||
#include "afs_fs.h"
 | 
			
		||||
#include "protocol_uae.h"
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * convert an AFS abort code to a Linux error number
 | 
			
		||||
| 
						 | 
				
			
			@ -69,34 +70,25 @@ int afs_abort_to_error(u32 abort_code)
 | 
			
		|||
	case AFSVL_PERM:		return -EACCES;
 | 
			
		||||
	case AFSVL_NOMEM:		return -EREMOTEIO;
 | 
			
		||||
 | 
			
		||||
		/* Unified AFS error table; ET "uae" == 0x2f6df00 */
 | 
			
		||||
	case 0x2f6df00:		return -EPERM;
 | 
			
		||||
	case 0x2f6df01:		return -ENOENT;
 | 
			
		||||
	case 0x2f6df04:		return -EIO;
 | 
			
		||||
	case 0x2f6df0a:		return -EAGAIN;
 | 
			
		||||
	case 0x2f6df0b:		return -ENOMEM;
 | 
			
		||||
	case 0x2f6df0c:		return -EACCES;
 | 
			
		||||
	case 0x2f6df0f:		return -EBUSY;
 | 
			
		||||
	case 0x2f6df10:		return -EEXIST;
 | 
			
		||||
	case 0x2f6df11:		return -EXDEV;
 | 
			
		||||
	case 0x2f6df12:		return -ENODEV;
 | 
			
		||||
	case 0x2f6df13:		return -ENOTDIR;
 | 
			
		||||
	case 0x2f6df14:		return -EISDIR;
 | 
			
		||||
	case 0x2f6df15:		return -EINVAL;
 | 
			
		||||
	case 0x2f6df1a:		return -EFBIG;
 | 
			
		||||
	case 0x2f6df1b:		return -ENOSPC;
 | 
			
		||||
	case 0x2f6df1d:		return -EROFS;
 | 
			
		||||
	case 0x2f6df1e:		return -EMLINK;
 | 
			
		||||
	case 0x2f6df20:		return -EDOM;
 | 
			
		||||
	case 0x2f6df21:		return -ERANGE;
 | 
			
		||||
	case 0x2f6df22:		return -EDEADLK;
 | 
			
		||||
	case 0x2f6df23:		return -ENAMETOOLONG;
 | 
			
		||||
	case 0x2f6df24:		return -ENOLCK;
 | 
			
		||||
	case 0x2f6df26:		return -ENOTEMPTY;
 | 
			
		||||
	case 0x2f6df28:		return -EWOULDBLOCK;
 | 
			
		||||
	case 0x2f6df69:		return -ENOTCONN;
 | 
			
		||||
	case 0x2f6df6c:		return -ETIMEDOUT;
 | 
			
		||||
	case 0x2f6df78:		return -EDQUOT;
 | 
			
		||||
		/* Unified AFS error table */
 | 
			
		||||
	case UAEPERM:			return -EPERM;
 | 
			
		||||
	case UAENOENT:			return -ENOENT;
 | 
			
		||||
	case UAEACCES:			return -EACCES;
 | 
			
		||||
	case UAEBUSY:			return -EBUSY;
 | 
			
		||||
	case UAEEXIST:			return -EEXIST;
 | 
			
		||||
	case UAENOTDIR:			return -ENOTDIR;
 | 
			
		||||
	case UAEISDIR:			return -EISDIR;
 | 
			
		||||
	case UAEFBIG:			return -EFBIG;
 | 
			
		||||
	case UAENOSPC:			return -ENOSPC;
 | 
			
		||||
	case UAEROFS:			return -EROFS;
 | 
			
		||||
	case UAEMLINK:			return -EMLINK;
 | 
			
		||||
	case UAEDEADLK:			return -EDEADLK;
 | 
			
		||||
	case UAENAMETOOLONG:		return -ENAMETOOLONG;
 | 
			
		||||
	case UAENOLCK:			return -ENOLCK;
 | 
			
		||||
	case UAENOTEMPTY:		return -ENOTEMPTY;
 | 
			
		||||
	case UAELOOP:			return -ELOOP;
 | 
			
		||||
	case UAENOMEDIUM:		return -ENOMEDIUM;
 | 
			
		||||
	case UAEDQUOT:			return -EDQUOT;
 | 
			
		||||
 | 
			
		||||
		/* RXKAD abort codes; from include/rxrpc/packet.h.  ET "RXK" == 0x1260B00 */
 | 
			
		||||
	case RXKADINCONSISTENCY: return -EPROTO;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										132
									
								
								fs/afs/protocol_uae.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										132
									
								
								fs/afs/protocol_uae.h
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,132 @@
 | 
			
		|||
// SPDX-License-Identifier: GPL-2.0
 | 
			
		||||
/* Universal AFS Error codes (UAE).
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 2003, Daria Phoebe Brashear
 | 
			
		||||
 * Copyright (C) 2018 Red Hat, Inc. All Rights Reserved.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	UAEPERM			= 0x2f6df00, /* Operation not permitted */
 | 
			
		||||
	UAENOENT		= 0x2f6df01, /* No such file or directory */
 | 
			
		||||
	UAESRCH			= 0x2f6df02, /* No such process */
 | 
			
		||||
	UAEINTR			= 0x2f6df03, /* Interrupted system call */
 | 
			
		||||
	UAEIO			= 0x2f6df04, /* I/O error */
 | 
			
		||||
	UAENXIO			= 0x2f6df05, /* No such device or address */
 | 
			
		||||
	UAE2BIG			= 0x2f6df06, /* Arg list too long */
 | 
			
		||||
	UAENOEXEC		= 0x2f6df07, /* Exec format error */
 | 
			
		||||
	UAEBADF			= 0x2f6df08, /* Bad file number */
 | 
			
		||||
	UAECHILD		= 0x2f6df09, /* No child processes */
 | 
			
		||||
	UAEAGAIN		= 0x2f6df0a, /* Try again */
 | 
			
		||||
	UAENOMEM		= 0x2f6df0b, /* Out of memory */
 | 
			
		||||
	UAEACCES		= 0x2f6df0c, /* Permission denied */
 | 
			
		||||
	UAEFAULT		= 0x2f6df0d, /* Bad address */
 | 
			
		||||
	UAENOTBLK		= 0x2f6df0e, /* Block device required */
 | 
			
		||||
	UAEBUSY			= 0x2f6df0f, /* Device or resource busy */
 | 
			
		||||
	UAEEXIST		= 0x2f6df10, /* File exists */
 | 
			
		||||
	UAEXDEV			= 0x2f6df11, /* Cross-device link */
 | 
			
		||||
	UAENODEV		= 0x2f6df12, /* No such device */
 | 
			
		||||
	UAENOTDIR		= 0x2f6df13, /* Not a directory */
 | 
			
		||||
	UAEISDIR		= 0x2f6df14, /* Is a directory */
 | 
			
		||||
	UAEINVAL		= 0x2f6df15, /* Invalid argument */
 | 
			
		||||
	UAENFILE		= 0x2f6df16, /* File table overflow */
 | 
			
		||||
	UAEMFILE		= 0x2f6df17, /* Too many open files */
 | 
			
		||||
	UAENOTTY		= 0x2f6df18, /* Not a typewriter */
 | 
			
		||||
	UAETXTBSY		= 0x2f6df19, /* Text file busy */
 | 
			
		||||
	UAEFBIG			= 0x2f6df1a, /* File too large */
 | 
			
		||||
	UAENOSPC		= 0x2f6df1b, /* No space left on device */
 | 
			
		||||
	UAESPIPE		= 0x2f6df1c, /* Illegal seek */
 | 
			
		||||
	UAEROFS			= 0x2f6df1d, /* Read-only file system */
 | 
			
		||||
	UAEMLINK		= 0x2f6df1e, /* Too many links */
 | 
			
		||||
	UAEPIPE			= 0x2f6df1f, /* Broken pipe */
 | 
			
		||||
	UAEDOM			= 0x2f6df20, /* Math argument out of domain of func */
 | 
			
		||||
	UAERANGE		= 0x2f6df21, /* Math result not representable */
 | 
			
		||||
	UAEDEADLK		= 0x2f6df22, /* Resource deadlock would occur */
 | 
			
		||||
	UAENAMETOOLONG		= 0x2f6df23, /* File name too long */
 | 
			
		||||
	UAENOLCK		= 0x2f6df24, /* No record locks available */
 | 
			
		||||
	UAENOSYS		= 0x2f6df25, /* Function not implemented */
 | 
			
		||||
	UAENOTEMPTY		= 0x2f6df26, /* Directory not empty */
 | 
			
		||||
	UAELOOP			= 0x2f6df27, /* Too many symbolic links encountered */
 | 
			
		||||
	UAEWOULDBLOCK		= 0x2f6df28, /* Operation would block */
 | 
			
		||||
	UAENOMSG		= 0x2f6df29, /* No message of desired type */
 | 
			
		||||
	UAEIDRM			= 0x2f6df2a, /* Identifier removed */
 | 
			
		||||
	UAECHRNG		= 0x2f6df2b, /* Channel number out of range */
 | 
			
		||||
	UAEL2NSYNC		= 0x2f6df2c, /* Level 2 not synchronized */
 | 
			
		||||
	UAEL3HLT		= 0x2f6df2d, /* Level 3 halted */
 | 
			
		||||
	UAEL3RST		= 0x2f6df2e, /* Level 3 reset */
 | 
			
		||||
	UAELNRNG		= 0x2f6df2f, /* Link number out of range */
 | 
			
		||||
	UAEUNATCH		= 0x2f6df30, /* Protocol driver not attached */
 | 
			
		||||
	UAENOCSI		= 0x2f6df31, /* No CSI structure available */
 | 
			
		||||
	UAEL2HLT		= 0x2f6df32, /* Level 2 halted */
 | 
			
		||||
	UAEBADE			= 0x2f6df33, /* Invalid exchange */
 | 
			
		||||
	UAEBADR			= 0x2f6df34, /* Invalid request descriptor */
 | 
			
		||||
	UAEXFULL		= 0x2f6df35, /* Exchange full */
 | 
			
		||||
	UAENOANO		= 0x2f6df36, /* No anode */
 | 
			
		||||
	UAEBADRQC		= 0x2f6df37, /* Invalid request code */
 | 
			
		||||
	UAEBADSLT		= 0x2f6df38, /* Invalid slot */
 | 
			
		||||
	UAEBFONT		= 0x2f6df39, /* Bad font file format */
 | 
			
		||||
	UAENOSTR		= 0x2f6df3a, /* Device not a stream */
 | 
			
		||||
	UAENODATA		= 0x2f6df3b, /* No data available */
 | 
			
		||||
	UAETIME			= 0x2f6df3c, /* Timer expired */
 | 
			
		||||
	UAENOSR			= 0x2f6df3d, /* Out of streams resources */
 | 
			
		||||
	UAENONET		= 0x2f6df3e, /* Machine is not on the network */
 | 
			
		||||
	UAENOPKG		= 0x2f6df3f, /* Package not installed */
 | 
			
		||||
	UAEREMOTE		= 0x2f6df40, /* Object is remote */
 | 
			
		||||
	UAENOLINK		= 0x2f6df41, /* Link has been severed */
 | 
			
		||||
	UAEADV			= 0x2f6df42, /* Advertise error */
 | 
			
		||||
	UAESRMNT		= 0x2f6df43, /* Srmount error */
 | 
			
		||||
	UAECOMM			= 0x2f6df44, /* Communication error on send */
 | 
			
		||||
	UAEPROTO		= 0x2f6df45, /* Protocol error */
 | 
			
		||||
	UAEMULTIHOP		= 0x2f6df46, /* Multihop attempted */
 | 
			
		||||
	UAEDOTDOT		= 0x2f6df47, /* RFS specific error */
 | 
			
		||||
	UAEBADMSG		= 0x2f6df48, /* Not a data message */
 | 
			
		||||
	UAEOVERFLOW		= 0x2f6df49, /* Value too large for defined data type */
 | 
			
		||||
	UAENOTUNIQ		= 0x2f6df4a, /* Name not unique on network */
 | 
			
		||||
	UAEBADFD		= 0x2f6df4b, /* File descriptor in bad state */
 | 
			
		||||
	UAEREMCHG		= 0x2f6df4c, /* Remote address changed */
 | 
			
		||||
	UAELIBACC		= 0x2f6df4d, /* Can not access a needed shared library */
 | 
			
		||||
	UAELIBBAD		= 0x2f6df4e, /* Accessing a corrupted shared library */
 | 
			
		||||
	UAELIBSCN		= 0x2f6df4f, /* .lib section in a.out corrupted */
 | 
			
		||||
	UAELIBMAX		= 0x2f6df50, /* Attempting to link in too many shared libraries */
 | 
			
		||||
	UAELIBEXEC		= 0x2f6df51, /* Cannot exec a shared library directly */
 | 
			
		||||
	UAEILSEQ		= 0x2f6df52, /* Illegal byte sequence */
 | 
			
		||||
	UAERESTART		= 0x2f6df53, /* Interrupted system call should be restarted */
 | 
			
		||||
	UAESTRPIPE		= 0x2f6df54, /* Streams pipe error */
 | 
			
		||||
	UAEUSERS		= 0x2f6df55, /* Too many users */
 | 
			
		||||
	UAENOTSOCK		= 0x2f6df56, /* Socket operation on non-socket */
 | 
			
		||||
	UAEDESTADDRREQ		= 0x2f6df57, /* Destination address required */
 | 
			
		||||
	UAEMSGSIZE		= 0x2f6df58, /* Message too long */
 | 
			
		||||
	UAEPROTOTYPE		= 0x2f6df59, /* Protocol wrong type for socket */
 | 
			
		||||
	UAENOPROTOOPT		= 0x2f6df5a, /* Protocol not available */
 | 
			
		||||
	UAEPROTONOSUPPORT	= 0x2f6df5b, /* Protocol not supported */
 | 
			
		||||
	UAESOCKTNOSUPPORT	= 0x2f6df5c, /* Socket type not supported */
 | 
			
		||||
	UAEOPNOTSUPP		= 0x2f6df5d, /* Operation not supported on transport endpoint */
 | 
			
		||||
	UAEPFNOSUPPORT		= 0x2f6df5e, /* Protocol family not supported */
 | 
			
		||||
	UAEAFNOSUPPORT		= 0x2f6df5f, /* Address family not supported by protocol */
 | 
			
		||||
	UAEADDRINUSE		= 0x2f6df60, /* Address already in use */
 | 
			
		||||
	UAEADDRNOTAVAIL		= 0x2f6df61, /* Cannot assign requested address */
 | 
			
		||||
	UAENETDOWN		= 0x2f6df62, /* Network is down */
 | 
			
		||||
	UAENETUNREACH		= 0x2f6df63, /* Network is unreachable */
 | 
			
		||||
	UAENETRESET		= 0x2f6df64, /* Network dropped connection because of reset */
 | 
			
		||||
	UAECONNABORTED		= 0x2f6df65, /* Software caused connection abort */
 | 
			
		||||
	UAECONNRESET		= 0x2f6df66, /* Connection reset by peer */
 | 
			
		||||
	UAENOBUFS		= 0x2f6df67, /* No buffer space available */
 | 
			
		||||
	UAEISCONN		= 0x2f6df68, /* Transport endpoint is already connected */
 | 
			
		||||
	UAENOTCONN		= 0x2f6df69, /* Transport endpoint is not connected */
 | 
			
		||||
	UAESHUTDOWN		= 0x2f6df6a, /* Cannot send after transport endpoint shutdown */
 | 
			
		||||
	UAETOOMANYREFS		= 0x2f6df6b, /* Too many references: cannot splice */
 | 
			
		||||
	UAETIMEDOUT		= 0x2f6df6c, /* Connection timed out */
 | 
			
		||||
	UAECONNREFUSED		= 0x2f6df6d, /* Connection refused */
 | 
			
		||||
	UAEHOSTDOWN		= 0x2f6df6e, /* Host is down */
 | 
			
		||||
	UAEHOSTUNREACH		= 0x2f6df6f, /* No route to host */
 | 
			
		||||
	UAEALREADY		= 0x2f6df70, /* Operation already in progress */
 | 
			
		||||
	UAEINPROGRESS		= 0x2f6df71, /* Operation now in progress */
 | 
			
		||||
	UAESTALE		= 0x2f6df72, /* Stale NFS file handle */
 | 
			
		||||
	UAEUCLEAN		= 0x2f6df73, /* Structure needs cleaning */
 | 
			
		||||
	UAENOTNAM		= 0x2f6df74, /* Not a XENIX named type file */
 | 
			
		||||
	UAENAVAIL		= 0x2f6df75, /* No XENIX semaphores available */
 | 
			
		||||
	UAEISNAM		= 0x2f6df76, /* Is a named type file */
 | 
			
		||||
	UAEREMOTEIO		= 0x2f6df77, /* Remote I/O error */
 | 
			
		||||
	UAEDQUOT		= 0x2f6df78, /* Quota exceeded */
 | 
			
		||||
	UAENOMEDIUM		= 0x2f6df79, /* No medium found */
 | 
			
		||||
	UAEMEDIUMTYPE		= 0x2f6df7a, /* Wrong medium type */
 | 
			
		||||
};
 | 
			
		||||
		Loading…
	
		Reference in a new issue