linux/fs/nfs
Trond Myklebust e25d2c749d NFSv4.1: Return NFS4ERR_BADSESSION to callbacks during session resets
commit 910ac68a2b upstream.

If the client is in the process of resetting the session when it receives
a callback, then returning NFS4ERR_DELAY may cause a deadlock with the
DESTROY_SESSION call.

Basically, if the client returns NFS4ERR_DELAY in response to the
CB_SEQUENCE call, then the server is entitled to believe that the
client is busy because it is already processing that call. In that
case, the server is perfectly entitled to respond with a
NFS4ERR_BACK_CHAN_BUSY to any DESTROY_SESSION call.

Fix this by having the client reply with a NFS4ERR_BADSESSION in
response to the callback if it is resetting the session.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-08-29 13:29:08 -07:00
..
objlayout pnfs-obj: Bug when we are running out of bio 2011-08-29 13:29:08 -07:00
cache_lib.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09: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 NFSv4.1: Return NFS4ERR_BADSESSION to callbacks during session resets 2011-08-29 13:29:08 -07:00
callback_xdr.c NFSv4.1: Fix the callback 'highest_used_slotid' behaviour 2011-08-29 13:29:08 -07:00
callback.c NFS do not find client in NFSv4 pg_authenticate 2011-01-25 15:26:51 -05:00
callback.h NFSv4.1: Fix the callback 'highest_used_slotid' behaviour 2011-08-29 13:29:08 -07:00
client.c NFSv4.1: purge deviceid cache on nfs_free_client 2011-05-29 20:50:42 +03:00
delegation.c NFSv4: Don't use the delegation->inode in nfs_mark_return_delegation() 2011-08-04 21:58:40 -07:00
delegation.h NFS: Move cl_delegations to the nfs_server struct 2011-01-06 14:57:46 -05:00
dir.c NFS: Fix spurious readdir cookie loop messages 2011-08-04 21:58:40 -07:00
direct.c NFS: account direct-io into task io accounting 2011-03-11 15:39:27 -05:00
dns_resolve.c sunrpc: use seconds since boot in expiry cache 2010-09-07 19:21:20 -04:00
dns_resolve.h NFS: Use kernel DNS resolver [ver #2] 2010-08-11 17:11:28 +00:00
file.c Fix common misspellings 2011-03-31 11:26:23 -03: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 FS-Cache: Add a helper to bulk uncache pages on an inode 2011-07-07 13:21:56 -07:00
fscache.h NFS: Propagate 'fsc' mount option through automounts 2009-09-23 14:36:39 -04:00
getroot.c Merge branch 'nfs-for-2.6.39' into nfs-for-next 2011-03-24 17:03:14 -04:00
idmap.c NFSv4: Send unmapped uid/gids to the server when using auth_sys 2011-03-11 15:39:27 -05:00
inode.c NFSv4.1: allow nfs_fhget to succeed with mounted on fileid 2011-06-15 11:24:29 -04:00
internal.h NFSv4.1: allow nfs_fhget to succeed with mounted on fileid 2011-06-15 11:24:29 -04:00
iostat.h NFS: Squelch compiler warning in nfs_add_server_stats() 2010-05-14 15:09:31 -04:00
Kconfig pnfs-obj: objlayoutdriver module skeleton 2011-05-29 20:52:35 +03:00
Makefile pnfs-obj: objlayoutdriver module skeleton 2011-05-29 20:52:35 +03:00
mount_clnt.c NFS: Remove redundant unlikely() 2010-12-21 11:51:23 -05:00
namespace.c NFS: Remove unused argument from nfs_find_best_sec() 2011-04-12 19:34:23 -04:00
nfs2xdr.c Merge branch 'bugfixes' into nfs-for-2.6.38 2011-01-10 14:48:02 -05:00
nfs3acl.c NFS: Prevent memory allocation failure in nfsacl_encode() 2011-01-25 15:24:47 -05:00
nfs3proc.c NFS: lookup supports alternate client 2011-03-24 13:52:41 -04:00
nfs3xdr.c NFS: Fix "kernel BUG at fs/nfs/nfs3xdr.c:1338!" 2011-01-25 15:24:47 -05:00
nfs4_fs.h NFSv4.1: Don't loop forever in nfs4_proc_create_session 2011-04-24 14:28:18 -04:00
nfs4filelayout.c pnfs: save layoutcommit lwb at layout header 2011-08-04 21:58:37 -07:00
nfs4filelayout.h NFSv4.1: purge deviceid cache on nfs_free_client 2011-05-29 20:50:42 +03:00
nfs4filelayoutdev.c SUNRPC: introduce xdr_init_decode_pages 2011-05-29 20:52:32 +03:00
nfs4namespace.c nfs: nfs_do_{ref,sub}mount() superblock argument is redundant 2011-03-16 16:48:06 -04:00
nfs4proc.c pnfs: let layoutcommit handle a list of lseg 2011-08-04 21:58:37 -07:00
nfs4renewd.c NFSv4.1: new flag for state renewal check 2011-03-11 15:38:41 -05:00
nfs4state.c NFSv4.1: Fix the handling of NFS4ERR_SEQ_MISORDERED errors 2011-05-27 17:42:01 -04:00
nfs4xdr.c pnfs: use lwb as layoutcommit length 2011-08-04 21:58:37 -07:00
nfsroot.c NFS: Revert NFSROOT default mount options 2011-05-27 17:42:47 -04:00
pagelist.c NFSv4.1: file layout must consider pg_bsize for coalescing 2011-06-20 16:12:26 -04:00
pnfs_dev.c NFSv4.1: Fix a refcounting issue in the pNFS device id cache 2011-06-15 11:24:29 -04:00
pnfs.c pnfs: let layoutcommit handle a list of lseg 2011-08-04 21:58:37 -07:00
pnfs.h pnfs: let layoutcommit handle a list of lseg 2011-08-04 21:58:37 -07:00
proc.c NFS: lookup supports alternate client 2011-03-24 13:52:41 -04:00
read.c NFSv4.1: unify pnfs_pageio_init functions 2011-05-29 20:56:43 +03:00
super.c pnfs: client stats 2011-05-29 20:52:34 +03:00
symlink.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
sysctl.c NFS: new idmapper 2010-10-07 18:48:49 -04:00
unlink.c nfs: store devname at disconnected NFS roots 2011-03-16 16:44:24 -04:00
write.c pnfs: write: Set mds_offset in the generic layer - it is needed by all LDs 2011-06-28 14:12:11 -04:00