In accessing files across a network, file access error conditions are more common. For example, the EIO error conditions would occur much more frequently for remote files than for local files. Consequently, an application which does not check for EIO or simply fails completely when an EIO occurs, may have to be modified so that it can continue.
The EIO error condition indicates an unrecoverable situation. Access to a file or device is lost forever. In traditional Unix and IEEE 1003.1-1990, the EAGAIN error condition indicates that access to a file or device may be only temporarily lost. The application may regain access by trying again using the same file descriptor.
In NFS, ESTALE is also used to indicate a recoverable access error condition. ESTALE in an NFS implementation means that an identification code, the NFS ``file handle,'' has lost its validity. Consequently, the validity of any file descriptors associated with an invalid file handle have been lost. One way that this may occur is a server crash. When the server recovers, file handles which an application may have been using may no longer be valid. New file handles may be obtained by closing and opening the file.
In addition to requiring an error condition for indicating another kind of recoverable file access error, transparent file access also needs an error condition to indicate that a particular type of file access may not be supported. For example, a client whose local file system supports directories, i.e., a hierarchical file system, may be accessing a file system on a server which does not support directories, i.e., the server only supports a ``flat'' file system. A collection of files from such a server may be mounted in a directory on the client but the client cannot create a directory in the remote file system. In this case, an application should expect an error condition, such as EOPNOTSUPP, indicating ``operation not supported'' when attempting to create a directory.