alistair23-linux/fs/nfs
Trond Myklebust 0b67130149 NFS: Fix asynchronous read error handling
We must always call ->read_done() before we truncate the page data, or
decide to flag an error. The reasons are that
	in NFSv2, ->read_done() is where the eof flag gets set.
	in NFSv3/v4 ->read_done() handles EJUKEBOX-type errors, and
		  v4 state recovery.

However, we need to mark the pages as uptodate before we deal with short
read errors, since we may need to modify the nfs_read_data arguments.

We therefore split the current nfs_readpage_result() into two parts:
nfs_readpage_result(), which calls ->read_done() etc, and
nfs_readpage_retry(), which subsequently handles short reads.

Note: Removing the code that retries in case of a short read also fixes a
bug in nfs_direct_read_result(), which used to return a corrupted number of
bytes.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
2006-12-06 10:46:27 -05:00
..
callback.c [PATCH] knfsd: Drop 'serv' option to svc_recv and svc_process 2006-10-02 07:57:18 -07:00
callback.h [PATCH] xdr annotations: fs/nfs/callback* 2006-10-20 10:26:40 -07:00
callback_proc.c [PATCH] fs/nfs/callback* passes error values big-endian 2006-10-20 10:26:40 -07:00
callback_xdr.c [PATCH] xdr annotations: fs/nfs/callback* 2006-10-20 10:26:40 -07:00
client.c [PATCH] NFS: Fix NFSv4 callback regression 2006-10-20 10:26:39 -07:00
delegation.c [PATCH] fs: Removing useless casts 2006-09-27 08:26:10 -07:00
delegation.h NFS: Rename struct nfs4_client to struct nfs_client 2006-09-22 23:24:31 -04:00
dir.c [PATCH] NFS: Cache invalidation fixup 2006-10-21 13:35:06 -07:00
direct.c [PATCH] NFS: Deal with failure of invalidate_inode_pages2() 2006-10-20 10:26:39 -07:00
file.c [PATCH] Vectorize aio_read/aio_write fileop methods 2006-10-01 00:39:28 -07:00
getroot.c Remove all inclusions of <linux/config.h> 2006-10-04 03:38:54 -04:00
idmap.c SUNRPC: Make rpc_mkpipe() take the parent dentry as an argument 2006-09-22 23:24:54 -04:00
inode.c [PATCH] NFS: __nfs_revalidate_inode() can use "inode" before checking it is non-NULL 2006-10-20 10:26:39 -07:00
internal.h [PATCH] xdr annotations: NFS readdir entries 2006-10-20 10:26:40 -07:00
iostat.h NFSv4: Fix an oops in nfs4_fill_super 2006-03-20 13:44:48 -05:00
Makefile NFS: Share NFS superblocks per-protocol per-server per-FSID 2006-09-22 23:24:37 -04:00
mount_clnt.c [PATCH] xdr annotations: mount_clnt 2006-10-20 10:26:41 -07:00
namespace.c Remove all inclusions of <linux/config.h> 2006-10-04 03:38:54 -04:00
nfs2xdr.c [PATCH] xdr annotations: NFS readdir entries 2006-10-20 10:26:40 -07:00
nfs3acl.c NFSv3: Client-side nfsacl caching fix 2006-06-09 09:34:11 -04:00
nfs3proc.c NFS Exclusive open not supported bug 2006-12-06 10:46:26 -05:00
nfs3xdr.c [PATCH] xdr annotations: NFS readdir entries 2006-10-20 10:26:40 -07:00
nfs4_fs.h [PATCH] xdr annotations: NFS readdir entries 2006-10-20 10:26:40 -07:00
nfs4namespace.c Remove all inclusions of <linux/config.h> 2006-10-04 03:38:54 -04:00
nfs4proc.c Fix a second potential rpc_wakeup race... 2006-12-06 10:46:25 -05:00
nfs4renewd.c NFSv4: Fix a use-after-free issue with the nfs server. 2006-09-22 23:24:54 -04:00
nfs4state.c NFS: Share NFS superblocks per-protocol per-server per-FSID 2006-09-22 23:24:37 -04:00
nfs4xdr.c [PATCH] xdr annotations: NFS readdir entries 2006-10-20 10:26:40 -07:00
nfsroot.c [NET]: ipconfig and nfsroot annotations 2006-12-02 21:21:09 -08:00
pagelist.c [PATCH] Really ignore kmem_cache_destroy return value 2006-09-27 08:26:10 -07:00
proc.c [PATCH] fs: Removing useless casts 2006-09-27 08:26:10 -07:00
read.c NFS: Fix asynchronous read error handling 2006-12-06 10:46:27 -05:00
super.c [PATCH] NFSv4: Fix thinko in fs/nfs/super.c 2006-10-20 10:26:38 -07:00
symlink.c nfs: remove nfs_put_link() 2006-06-25 06:39:35 -04:00
sysctl.c [PATCH] sysctl: implement CTL_UNNUMBERED 2006-11-06 01:46:23 -08:00
unlink.c NFS: kzalloc conversion in fs/nfs 2006-03-20 13:44:10 -05:00
write.c SUNRPC: Fix a potential race in rpc_wake_up_task() 2006-12-06 10:46:26 -05:00