ms-nfs41-client/daemon
Casey Bodley 8616b03597 recovery: recover from STALE_STATEID errors
consider an operation that takes a stateid, and results in a BADSESSION error due to server reboot.  we'll recover the client and session, and send OPENs to reclaim all of the client's state.  but after recovery, we'll resend the original operation with the original stateid, and this will result in a STALE_STATEID error

we handle this by making use of the information in stateid_arg.  if we determine that stateid_arg.stateid is different from the nfs41_open_state's stateid, we copy the new stateid into stateid_arg.stateid and retry

note that if another thread is in recovery, it hasn't finished reclaiming its open state yet; so we wait on recovery to finish before comparing the stateids

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2010-12-06 14:21:34 -05:00
..
callback_server.c adding refcount on nfs41_root to callback server 2010-11-02 15:54:50 -04:00
callback_xdr.c fresh git tree for public release 2010-10-12 10:15:48 -04:00
daemon_debug.c adding sec flavor to upcall 2010-12-02 14:22:05 -05:00
daemon_debug.h adding sec flavor to upcall 2010-12-02 14:22:05 -05:00
from_kernel.h volume: daemon handles FileFsAttributeInformation 2010-10-12 10:35:51 -04:00
getattr.c ref counting for nfs41_root 2010-10-27 16:18:23 -04:00
idmap.c adding --noldap startup option 2010-12-02 17:43:12 -05:00
idmap.h idmap.c for ldap caching and configuration 2010-11-08 12:54:40 -05:00
list.h fresh git tree for public release 2010-10-12 10:15:48 -04:00
lock.c recovery: operations take stateid_arg instead of stateid4 2010-12-06 14:21:28 -05:00
lookup.c adding tags to compounds 2010-10-27 15:00:12 -04:00
makefile fresh git tree for public release 2010-10-12 10:15:48 -04:00
mount.c creating nfs client per security flavor 2010-12-02 14:22:05 -05:00
name_cache.c replace rbtree implementation with tree.h from freebsd 2010-12-01 10:25:29 -05:00
name_cache.h name cache: insert supports negative entries 2010-10-12 10:35:43 -04:00
namespace.c memory leak in nfs41_root_create 2010-12-02 14:22:06 -05:00
nfs41.h recovery: operations take stateid_arg instead of stateid4 2010-12-06 14:21:28 -05:00
nfs41_callback.h fresh git tree for public release 2010-10-12 10:15:48 -04:00
nfs41_client.c recovery: client keeps list of associated open state 2010-12-06 14:21:16 -05:00
nfs41_compound.c recovery: recover from STALE_STATEID errors 2010-12-06 14:21:34 -05:00
nfs41_compound.h adding tags to compounds 2010-10-27 15:00:12 -04:00
nfs41_const.h symlink: limit symlink depth to avoid following cyclical links 2010-10-15 17:24:04 -04:00
nfs41_daemon.c adding --noldap startup option 2010-12-02 17:43:12 -05:00
nfs41_ops.c recovery: operations take stateid_arg instead of stateid4 2010-12-06 14:21:28 -05:00
nfs41_ops.h recovery: operations take stateid_arg instead of stateid4 2010-12-06 14:21:28 -05:00
nfs41_rpc.c fixing memory leak in get_client_for_netaddr 2010-12-02 14:22:07 -05:00
nfs41_server.c fix for warning C4204: non-constant aggregate initializer 2010-11-08 12:29:47 -05:00
nfs41_session.c fresh git tree for public release 2010-10-12 10:15:48 -04:00
nfs41_superblock.c cosmetic: cleaning up small functions 2010-11-05 15:10:20 -04:00
nfs41_types.h setting SUPPORTS_HARD_LINKS if link_support is enabled 2010-11-04 11:51:26 -04:00
nfs41_xdr.c recovery: operations take stateid_arg instead of stateid4 2010-12-06 14:21:28 -05:00
nfs41_xdr.h fresh git tree for public release 2010-10-12 10:15:48 -04:00
open.c recovery: operations take stateid_arg instead of stateid4 2010-12-06 14:21:28 -05:00
pnfs.h recovery: operations take stateid_arg instead of stateid4 2010-12-06 14:21:28 -05:00
pnfs_debug.c fresh git tree for public release 2010-10-12 10:15:48 -04:00
pnfs_device.c recovery: operations take stateid_arg instead of stateid4 2010-12-06 14:21:28 -05:00
pnfs_io.c recovery: operations take stateid_arg instead of stateid4 2010-12-06 14:21:28 -05:00
pnfs_layout.c recovery: operations take stateid_arg instead of stateid4 2010-12-06 14:21:28 -05:00
readdir.c fix for warning C4204: non-constant aggregate initializer 2010-11-08 12:29:47 -05:00
readwrite.c recovery: operations take stateid_arg instead of stateid4 2010-12-06 14:21:28 -05:00
service.c warnings from WDK 6000 2010-10-19 11:17:29 -04:00
service.h first stab at nfsd as a service 2010-10-12 10:36:03 -04:00
setattr.c recovery: operations take stateid_arg instead of stateid4 2010-12-06 14:21:28 -05:00
sources idmap.c for ldap caching and configuration 2010-11-08 12:54:40 -05:00
symlink.c ref counting for nfs41_root 2010-10-27 16:18:23 -04:00
tree.h replace rbtree implementation with tree.h from freebsd 2010-12-01 10:25:29 -05:00
upcall.c adding version to the upcall 2010-11-08 12:54:42 -05:00
upcall.h adding sec flavor to upcall 2010-12-02 14:22:05 -05:00
util.c warnings from WDK 6000 2010-10-19 11:17:29 -04:00
util.h adding version to the upcall 2010-11-08 12:54:42 -05:00
volume.c setting SUPPORTS_HARD_LINKS if link_support is enabled 2010-11-04 11:51:26 -04:00