AFS Assigned Numbers Registry - Error Tables

This is a registry of the various error code tables used in the AFS protocols. This includes a list of com_err error tables used in AFS, as well as two groups of codes not defined using com_err. As a service to users of com_err outside the context of AFS, this registry also contains a table of com_err error tables used by other software.

AFS com_err tables

In order to allow for various protocols and components to define error codes which do not conflict, AFS uses com_err error codes in nearly every situation. Below is a list of all com_err tables defined by AFS, with links to the registry page for each table.

Note that all of the package names listed below begin with capital letters. This has the effect of insuring that the resulting error codes will have positive values when interpreted as signed 32-bit numbers, which allows applications to distinguish between errors generated by the remote server (normally positive) from errors generated by the Rx protocol layer at either end (always negative).

Package Description
AB admin tools - bos
AC admin tools - common
ACFG AFS config package
AF admin tools - config
AK admin tools - kas
AL admin tools - client
AM admin tools - misc
AP admin tools - pts
AU admin tools - utility
AV admin tools - vos
BUCD backup - coordinator
BUDB backup - database
BUTC backup - tape controller
BUTM backup - tape module
BUTX backup - XBSA
BZ basic overseer
CMD command library
KA kaserver
KTC kernel token cache
PT protection server
RKS rxkad stress test
RXGK rxgk
RXK rxkad
U ubik
uae unified afs errors
VL volume location server
VOLS volume management server
ZCM cache manager trace
____ Reserved for Rx RPC protocol errors
___9 Reserved for rxgen errors

AuriStorFS com_err tables

Below is a list of all com_err tables defined by AuriStorFS, with links to the registry page for each table. Allocations of entries in the AuriStorFS com_err tables should be made in consultation with afs3@auristor.com.

Note: the AuriStorFS variant of the RXGK error table conflicts with the error table documented in rxgk: GSSAPI based security class for RX. The AuriStorFS RXGK implementation used in conjunction with the yfs-rxgk security class predates the error table in the Internet-Draft by more than two years.

Package Description
ACQ Token acquisition errors
RX Portable RX RPC API errors (non-wire protocol)
RXGK RXGK errors (used by yfs-rxgk security class)
uas unified afs signals
UTF8 UTF8 errors
V Portable Volume Package errors (non-wire protocol)
YCFG Additional Configuration errors
YPT Additional Protection Service errors
YVL Additional Location Service errors
YVOL Additional Volume Service errors

Non-AFS com_err tables

The following is an index of known non-AFS com_err error tables. It is maintained as a service to other users of the com_err package, in order to reduce the likelihood of conflicts and allow users to more easily interpret error codes. Note that while we hope it serves a useful purpose, this list is almost certainly not exhaustive.

Each entry includes a link to the current list of codes and a contact address to obtain more information or to register a code. Except where noted, the contents of these error tables are _not_ administered by the AFS Assigned Numbers Registrar, and the information provided here may not be the most current available.

Package Description Contact
AVds AFS volume dump scanner jhutz+@cmu.edu
adb OpenVision Kerberos 5 kadmin db krbdev@mit.edu
arx Advanced Rx API cg2v+@andrew.cmu.edu
asn1 Kerberos 5 ASN.1 library krbdev@mit.edu
ds1w 1wire bus driver jhutz+@cmu.edu
ext2 Linux second extended filesystem tytso@mit.edu
ggss MIT GSSAPI - generic krbdev@mit.edu
hafs hostafs lightweight AFS server jhutz+@cmu.edu
hdb Heimdal database heimdal-bugs@pdc.kth.se
heim Heimdal heimdal-bugs@pdc.kth.se
imp MIT Kerberos 5 kdb dump import krbdev@mit.edu
kadm Kerberos 4 kadmin krbdev@mit.edu
k524 Kerberos 5-to-4 translator krbdev@mit.edu
k5g MIT GSSAPI - krb5 krbdev@mit.edu
kdb5 MIT Kerberos 5 database krbdev@mit.edu
kdc5 MIT Kerberos 5 KDC internal krbdev@mit.edu
kpws MIT Kerberos 5 kpasswd krbdev@mit.edu
krb Kerberos 4 krbdev@mit.edu
krb5 Kerberos 5 krbdev@mit.edu
kv5m MIT Kerberos 5 magic numbers krbdev@mit.edu
ovk OpenVision Kerberos 5 kadmin krbdev@mit.edu
ovku OpenVision chpass strings krbdev@mit.edu
prof MIT profile library krbdev@mit.edu
pty MIT libpty krbdev@mit.edu
rxt Rx testing cg2v+@andrew.cmu.edu
ss SS command library
tdb Stage tape database cg2v+@andrew.cmu.edu
xFil XFILES virtual file I/O layer jhutz+@cmu.edu
zeph Zephyr notification system zephyr-hackers@sourceforge.net
zsrv Zephyr server zephyr-hackers@sourceforge.net

AFS Volume Package Errors

For historical reasons, AFS volume-related errors are small positive integers starting at 101; these error codes may be returned by the fileserver or volserver. While codes in this range were once "safe", they now conflict with system error codes on many platforms. Callers should use care when interpreting error codes to distinguish system and volume package errors based on context.

Note also that VRESTARTING is -100, a negative number. This is done to "trick" older implementations not supporting this state into believing that the fileserver returning this error is down, allowing them to retry or fail over to another fileserver instead of reporting a permanent error to the user.

AuriStorFS where possible has replaced these error values with those from the V error table.

Code Name Meaning
101 VSALVAGE Volume needs salvage
102 VNOVNODE No such vnode
103 VNOVOL Volume does not exist or is not online
104 VVOLEXISTS Volume already exists
105 VNOSERVICE Fileserver took too long to respond to request, or Volume is not in service
106 VOFFLINE Volume is off line
107 VONLINE Volume is already on line
108 VDISKFULL Partition full
109 VOVERQUOTA Max quota exceeded
110 VBUSY Volume temporarily busy
111 VMOVED Volume moved
112 VIO Temporary I/O error
113 VSALVAGING Volume is being salvaged (demand attach fs)
120 VRESTRICTED Volume residency restricted
-100 VRESTARTING Fileserver is restarting

Rx RPC error codes

The Rx protocol and implementations use a number of small negative error codes to indicate protocol-level errors. These codes should not conflict with any com_err package likely to be used. However, small negative error values are often used by C programmers to represent failure which can be confused with these errors. Also, in the Linux kernel, error values are often negated in ordr to distinguish error values from memory addresses.

These error values are required to be used on the wire. AuriStorFS never exposes these error values outside of the Rx RPC implementation. Instead the Portable RX com_err table values are returned to callers.

Code Name Meaning
-1 RX_CALL_DEAD connection timed out
-2 RX_INVALID_OPERATION invalid operation
-3 RX_CALL_TIMEOUT call timed out
-4 RX_EOF end-of-data on read
-5 RX_PROTOCOL_ERROR Rx protocol error
-6 RX_USER_ABORT generic user-requested abort
-7 RX_ADDRINUSE port already in use
-8 RX_MSGSIZE message too large
-100 RX_RESTARTING transient error; possibly restarting

rxgen error codes

rxgen uses a number of negative error codes to indicate protocol-level errors. These codes should not conflict with any com_err package likely to be used.

-450 RXGEN_CC_MARSHAL client error encoding arguments
-451 RXGEN_CC_UNMARSHAL client error decoding arguments
-452 RXGEN_SS_MARSHAL server error encoding arguments
-453 RXGEN_SS_UNMARSHAL server error decoding arguments
-454 RXGEN_DECODE error decoding opcode
-455 RXGEN_OPCODE unknown opcode
-456 RXGEN_SS_XDRFREE server error freeing arguments
-457 RXGEN_CC_XDRFREE client error freeing arguments

Reserved codes

Error code 0 is reserved for a successful result.

The error package name '', corresponding to positive integers less than 256, is reserved for system error codes. Package names consisting of a single uppercase letter should be avoided in order to allow for a larger number of system error codes in the future.

The error package names '____' and '___9' are reserved for Rx protocol and RPC marshalling errors. Codes in these ranges will continue to be assigned explicitly, without the use of com_err.

Registration Policy

In most cases, new codes will be assigned on request in tables which are coordinated by the AFS Assigned Numbers Registrar. Requests for code assignment must include information about the meaning and usage of the new code(s) to be assigned.

Because of their special nature, codes in the tables of volume package and Rx protocol errors will normally be assigned only when it is the concensus of the AFS development community that a new code is needed.

New AFS-related com_err error tables will be established when there is a demonstrated need not served by any existing table (for example, a new AFS component or protocol whose error should be separate from those in any existing table). Proposals for new tables should include the proposed table name, purpose of the table, and an initial list of codes which the table would contain. If the need is not plainly clear, the registrar may refer the request to the AFS development community for discussion. Once a new table is established, assignment of codes in the new table will normally be coordinated by the AFS Assigned Numbers Registrar.

New com_err error tables for purposes not related to AFS will be registered on request. Registration requests should include the table name, purpose of the table, and a contact address. The registrar will generally not assign table names or insure their uniqueness, but may provide advice in selection of a table name. The AFS Assigned Numbers Registrar will generally not coordinate assignment of codes in error tables that are not AFS-related. However, a link to an official copy of the table will be published, if one is provided by the contact.