• Chuck Lever's avatar
    NFS: Add separate mountd status code decoders for each mountd version · fb125295
    Chuck Lever authored
    Introduce data structures and xdr_stream-based decoding functions for
    unmarshalling mountd status codes properly.
    
    Mountd version 3 uses specific standard error return codes that are
    not errno values and not NFS3ERR_ values.  These have a well-defined
    standard mapping to local errno values.  Introduce data structures
    and a decoder function that map these status codes to local errno
    values properly.  This is new functionality (but not used yet).
    
    Version 1 mountd status values are defined by RFC 1094 as UNIX error
    values (errno values).  Errno values on heterogeneous systems do not
    necessarily match each other.  To avoid exposing possibly incorrect
    errno values to upper layers, the current XDR decoder converts all
    non-zero MNT version 1 status codes to -EACCES.
    
    The OpenGroup XNFS standard provides a mapping similar to but smaller
    than the version 3 error codes.  Implement a decoder that uses the XNFS
    error codes, replacing the current decoder.
    
    For both mountd protocol versions, map unrecognized errors to -EACCES.
    
    Finally we introduce a replacement data structure for mnt_fhstatus
    at this time, which is used by the new XDR decoders.  In addition to
    documenting that the status value returned by the XDR decoders is
    always an errno, this new structure will be expanded in subsequent
    patches.
    Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
    Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
    fb125295
mount_clnt.c 8.1 KB