linux/fs/nfs
Chuck Lever fb12529577 NFS: Add separate mountd status code decoders for each mountd version
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: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
2009-06-17 18:02:12 -07:00
..
callback_proc.c nfs: replace remaining __FUNCTION__ occurrences 2008-05-16 09:43:29 -07:00
callback_xdr.c nfs: replace remaining __FUNCTION__ occurrences 2008-05-16 09:43:29 -07:00
callback.c NFS: Fix false error return from nfs_callback_up() if ipv6.ko is not available 2009-06-17 18:02:10 -07:00
callback.h NFS: Start PF_INET6 callback listener only if IPv6 support is available 2009-03-28 16:02:43 -04:00
client.c NFS: Return error code from nfs_callback_up() to user space 2009-06-17 18:02:10 -07:00
delegation.c NFS: Ensure we always hold the BKL when dereferencing inode->i_flock 2009-06-17 13:23:00 -07:00
delegation.h NFSv4: Convert delegation->type field to fmode_t 2008-12-23 15:21:53 -05:00
dir.c nfs: Fix NFS v4 client handling of MAY_EXEC in nfs_permission. 2009-05-18 20:11:12 -07:00
direct.c NFS: Use NFSDBG_FILE for all fops 2008-07-09 12:09:04 -04:00
file.c NFS: add support for splice writes 2009-06-17 18:02:09 -07:00
fscache-index.c NFS: Add read context retention for FS-Cache to call back with 2009-04-03 16:42:44 +01:00
fscache.c NFS: Store pages from an NFS inode into a local cache 2009-04-03 16:42:45 +01:00
fscache.h NFS: Display local caching state 2009-04-03 16:42:47 +01:00
getroot.c NFS: Fix the type of struct nfs_fattr->mode 2009-03-11 14:10:26 -04:00
idmap.c nfs: fix sparse warnings 2008-02-20 16:15:44 -05:00
inode.c NFS: Use local disk inode cache 2009-04-03 16:42:43 +01:00
internal.h NFS: Add mount options to enable local caching on NFS 2009-04-03 16:42:48 +01:00
iostat.h remove put_cpu_no_resched() 2009-06-16 19:47:48 -07:00
Kconfig NFS: Permit local filesystem caching to be enabled for NFS 2009-04-03 16:42:42 +01:00
Makefile NFS: Define and create server-level objects 2009-04-03 16:42:42 +01:00
mount_clnt.c NFS: Add separate mountd status code decoders for each mountd version 2009-06-17 18:02:12 -07:00
namespace.c switch follow_down() 2009-06-11 21:36:01 -04:00
nfs2xdr.c NFS: Fix the type of struct nfs_fattr->mode 2009-03-11 14:10:26 -04:00
nfs3acl.c NFSv3: Fix posix ACL code 2009-03-10 20:33:18 -04:00
nfs3proc.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 2009-04-02 21:09:10 -07:00
nfs3xdr.c NFS: Fix the XDR iovec calculation in nfs3_xdr_setaclargs 2009-04-21 07:46:49 -07:00
nfs4_fs.h constify dentry_operations: NFS 2009-03-27 14:43:59 -04:00
nfs4namespace.c NFS: Fix misparsing of nfsv4 fs_locations attribute (take 2) 2009-03-10 20:33:17 -04:00
nfs4proc.c NFSv4: Handle more errors when recovering open file and locking state 2009-06-17 13:22:59 -07:00
nfs4renewd.c NFSv4: Return unreferenced delegations more promptly 2008-12-23 15:21:52 -05:00
nfs4state.c NFS: Ensure we always hold the BKL when dereferencing inode->i_flock 2009-06-17 13:23:00 -07:00
nfs4xdr.c NFSv4: Make decode_getfattr() set fattr->valid to reflect what was decoded 2009-03-11 14:10:27 -04:00
nfsroot.c NFS: Clean up MNT program definitions 2009-06-17 18:02:11 -07:00
pagelist.c NFS: Throttle page dirtying while we're flushing to disk 2009-03-11 14:10:30 -04:00
proc.c NFS: Optimise NFS close() 2009-03-19 15:35:50 -04:00
read.c NFS: Store pages from an NFS inode into a local cache 2009-04-03 16:42:45 +01:00
super.c NFS: Do not display the setting of the "intr" mount option 2009-06-17 18:02:09 -07:00
symlink.c nfs: remove unnecessary NFS_NEED_* defines 2008-04-23 16:13:37 -04:00
sysctl.c
unlink.c NFS: Clean up nfs_sb_active/nfs_sb_deactive 2008-10-06 20:08:26 -04:00
write.c NFS: Fix up a mismerged patch 2009-03-19 15:17:40 -04:00