1
linux/fs/nfs
Andy Adamson e608e79f1b nfs41: call free slot from nfs4_restart_rpc
nfs41_sequence_free_slot can be called multiple times on SEQUENCE operation
errors.
No reason to inline nfs4_restart_rpc

Reported-by: Trond Myklebust <trond.myklebust@netapp.com>

nfs_writeback_done and nfs_readpage_retry call nfs4_restart_rpc outside the
error handler, and the slot is not freed prior to restarting in the rpc_prepare
state during session reset.

Fix this by moving the call to nfs41_sequence_free_slot from the error
path of nfs41_sequence_done into nfs4_restart_rpc, and by removing the test
for NFS4CLNT_SESSION_SETUP.
Always free slot and goto the rpc prepare state on async errors.

Signed-off-by: Andy Adamson <andros@netapp.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
2009-12-04 15:55:29 -05:00
..
cache_lib.c NFS: Add a dns resolver for use with NFSv4 referrals and migration 2009-08-19 18:22:15 -04:00
cache_lib.h NFS: Add a dns resolver for use with NFSv4 referrals and migration 2009-08-19 18:22:15 -04:00
callback_proc.c
callback_xdr.c trivial: remove unnecessary semicolons 2009-09-21 15:14:58 +02:00
callback.c The rpc server does not require that service threads take the BKL. 2009-12-03 15:58:33 -05:00
callback.h
client.c nfs: Avoid overrun when copying client IP address string 2009-10-06 15:42:18 -04:00
delegation.c NFSv4: Fix a potential state manager deadlock when returning delegations 2009-12-03 08:10:17 -05:00
delegation.h NFSv4: Fix a potential state manager deadlock when returning delegations 2009-12-03 08:10:17 -05:00
dir.c nfs: clean up sillyrenaming in nfs_rename() 2009-12-03 15:58:56 -05:00
direct.c nfs: Panic when commit fails 2009-10-23 14:16:30 -04:00
dns_resolve.c NFSv4: Ensure nfs_dns_lookup() and nfs_dns_update() are declared static 2009-12-03 15:54:01 -05:00
dns_resolve.h NFS: Add a dns resolver for use with NFSv4 referrals and migration 2009-08-19 18:22:15 -04:00
file.c const: mark struct vm_struct_operations 2009-09-27 11:39:25 -07:00
fscache-index.c
fscache.c FS-Cache: Handle pages pending storage that get evicted under OOM conditions 2009-11-19 18:11:35 +00:00
fscache.h NFS: Propagate 'fsc' mount option through automounts 2009-09-23 14:36:39 -04:00
getroot.c
idmap.c
inode.c truncate: use new helpers 2009-09-24 08:41:47 -04:00
internal.h nfs41: call free slot from nfs4_restart_rpc 2009-12-04 15:55:29 -05:00
iostat.h
Kconfig
Makefile NFS: Add a dns resolver for use with NFSv4 referrals and migration 2009-08-19 18:22:15 -04:00
mount_clnt.c
namespace.c
nfs2xdr.c headers: utsname.h redux 2009-09-23 18:13:10 -07:00
nfs3acl.c
nfs3proc.c headers: utsname.h redux 2009-09-23 18:13:10 -07:00
nfs3xdr.c headers: utsname.h redux 2009-09-23 18:13:10 -07:00
nfs4_fs.h nfs41: rename cl_state session SETUP bit to RESET 2009-12-04 15:55:05 -05:00
nfs4namespace.c NFSv4: Fix the referral mount code 2009-10-06 15:42:20 -04:00
nfs4proc.c nfs41: call free slot from nfs4_restart_rpc 2009-12-04 15:55:29 -05:00
nfs4renewd.c NFSv4: Kill nfs4_renewd_prepare_shutdown() 2009-10-08 11:50:55 -04:00
nfs4state.c nfs41: rename cl_state session SETUP bit to RESET 2009-12-04 15:55:05 -05:00
nfs4xdr.c Re: acl trouble after upgrading ubuntu 2009-12-03 08:10:17 -05:00
nfsroot.c
pagelist.c
proc.c headers: utsname.h redux 2009-09-23 18:13:10 -07:00
read.c nfs41: call free slot from nfs4_restart_rpc 2009-12-04 15:55:29 -05:00
super.c NFS: Revert default r/wsize behavior 2009-12-03 15:58:56 -05:00
symlink.c
sysctl.c
unlink.c nfs41: call free slot from nfs4_restart_rpc 2009-12-04 15:55:29 -05:00
write.c nfs41: call free slot from nfs4_restart_rpc 2009-12-04 15:55:29 -05:00