alistair23-linux/fs/nfs
Idan Kedar 8554116e17 pnfs: defer release of pages in layoutget
we have encountered a bug whereby reading a lot of files (copying
fedora's /bin) from a pNFS mount and hitting Ctrl+C in the middle caused
a general protection fault in xdr_shrink_bufhead. this function is
called when decoding the response from LAYOUTGET. the decoding is done
by a worker thread, and the caller of LAYOUTGET waits for the worker
thread to complete.

hitting Ctrl+C caused the synchronous wait to end and the next thing the
caller does is to free the pages, so when the worker thread calls
xdr_shrink_bufhead, the pages are gone. therefore, the cleanup of these
pages has been moved to nfs4_layoutget_release.

Signed-off-by: Idan Kedar <idank@tonian.com>
Signed-off-by: Benny Halevy <bhalevy@tonian.com>
Cc: stable@vger.kernel.org
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
2012-08-02 17:38:54 -04:00
..
blocklayout pnfsblock: bail out partial page IO 2012-07-30 18:52:06 -04:00
objlayout pnfs-obj: Fix __r4w_get_page when offset is beyond i_size 2012-07-20 11:50:31 +03:00
cache_lib.c
cache_lib.h
callback.c nfs: increase number of permitted callback connections. 2012-07-31 12:33:29 -04:00
callback.h NFS: Convert v4 into a module 2012-07-30 19:06:52 -04:00
callback_proc.c
callback_xdr.c SUNRPC: service request network namespace helper introduced 2012-07-27 16:49:21 -04:00
client.c NFS: Convert v4 into a module 2012-07-30 19:06:52 -04:00
delegation.c NFS: Create a return_delegation rpc op 2012-06-29 11:46:45 -04:00
delegation.h NFS: Convert v4 into a module 2012-07-30 19:06:52 -04:00
dir.c NFS: Convert v4 into a module 2012-07-30 19:06:52 -04:00
direct.c Merge branch 'akpm' (Andrew's patch-bomb) 2012-07-31 19:25:39 -07:00
dns_resolve.c NFS: Convert v4 into a module 2012-07-30 19:06:52 -04:00
dns_resolve.h
file.c Merge branch 'akpm' (Andrew's patch-bomb) 2012-07-31 19:25:39 -07:00
fscache-index.c
fscache.c
fscache.h
getroot.c NFS: Move the v4 getroot code to nfs4getroot.c 2012-07-17 13:33:51 -04:00
idmap.c NFS: Keep module parameters in the generic NFS client 2012-07-30 19:06:31 -04:00
inode.c Merge branch 'akpm' (Andrew's patch-bomb) 2012-07-31 19:25:39 -07:00
internal.h Merge branch 'akpm' (Andrew's patch-bomb) 2012-07-31 19:25:39 -07:00
iostat.h
Kconfig Merge branch 'akpm' (Andrew's patch-bomb) 2012-07-31 19:25:39 -07:00
Makefile NFS: Convert v4 into a module 2012-07-30 19:06:52 -04:00
mount_clnt.c
namespace.c NFS: Convert v4 into a module 2012-07-30 19:06:52 -04:00
netns.h NFS: Convert v4 into a module 2012-07-30 19:06:52 -04:00
nfs.h NFS: Convert v4 into a module 2012-07-30 19:06:52 -04:00
nfs2super.c NFS: Convert v2 into a module 2012-07-30 19:06:41 -04:00
nfs2xdr.c NFS: Let xdr_read_pages() check for buffer overflows 2012-06-28 17:20:43 -04:00
nfs3acl.c
nfs3client.c NFS: Only initialize the ACL client in the v3 case 2012-07-30 19:05:54 -04:00
nfs3proc.c NFS: Only initialize the ACL client in the v3 case 2012-07-30 19:05:54 -04:00
nfs3super.c NFS: Convert v3 into a module 2012-07-30 19:06:46 -04:00
nfs3xdr.c NFS: Cleanup - only store the write verifier in struct nfs_page 2012-06-28 17:20:50 -04:00
nfs4_fs.h NFS: Convert v4 into a module 2012-07-30 19:06:52 -04:00
nfs4client.c NFS: Keep module parameters in the generic NFS client 2012-07-30 19:06:31 -04:00
nfs4file.c NFS: Split out NFS v4 file operations 2012-07-17 13:33:50 -04:00
nfs4filelayout.c NFSv4.1 don't send LAYOUTCOMMIT if data resent through MDS 2012-07-16 14:37:00 -04:00
nfs4filelayout.h
nfs4filelayoutdev.c NFSv4.1: Use session max response size for GETDEVICEINFO gdia_maxcount 2012-06-28 17:20:50 -04:00
nfs4getroot.c NFS: Move the v4 getroot code to nfs4getroot.c 2012-07-17 13:33:51 -04:00
nfs4namespace.c
nfs4proc.c pnfs: defer release of pages in layoutget 2012-08-02 17:38:54 -04:00
nfs4renewd.c
nfs4state.c NFS: Clean up nfs4_proc_setclientid() and friends 2012-07-16 15:12:16 -04:00
nfs4super.c NFS: Convert v4 into a module 2012-07-30 19:06:52 -04:00
nfs4sysctl.c NFS: Initialize v4 sysctls from nfs_init_v4() 2012-07-17 13:33:18 -04:00
nfs4xdr.c NFS: Keep module parameters in the generic NFS client 2012-07-30 19:06:31 -04:00
nfsroot.c
pagelist.c Merge branch 'akpm' (Andrew's patch-bomb) 2012-07-31 19:25:39 -07:00
pnfs.c pnfs: defer release of pages in layoutget 2012-08-02 17:38:54 -04:00
pnfs.h pnfs: defer release of pages in layoutget 2012-08-02 17:38:54 -04:00
pnfs_dev.c
proc.c NFS: Only initialize the ACL client in the v3 case 2012-07-30 19:05:54 -04:00
read.c Merge branch 'akpm' (Andrew's patch-bomb) 2012-07-31 19:25:39 -07:00
super.c NFS: Convert v4 into a module 2012-07-30 19:06:52 -04:00
symlink.c
sysctl.c NFS: Initialize v4 sysctls from nfs_init_v4() 2012-07-17 13:33:18 -04:00
unlink.c NFS: Create a return_delegation rpc op 2012-06-29 11:46:45 -04:00
write.c nfs: tear down caches in nfs_init_writepagecache when allocation fails 2012-08-02 17:36:07 -04:00