recovery: trigger recovery on RESTART_RECLAIM_NEEDED

adds a check for sequence flag SEQ4_STATUS_RESTART_RECLAIM_NEEDED in nfs41_recover_sequence_flags().  if other _STATE_REVOKED flags are set, call nfs41_client_state_revoked() as normal but follow it up with a RECLAIM_COMPLETE.  otherwise, reclaim all locks with nfs41_recover_client_state().  like other callers of nfs41_recover_client_state(), we need to handle BADSESSION errors because the recovery operations are sent with try_recovery=FALSE.  because this logic is similar to our default NFS4ERR_BADSESSION handling, i moved the common code into a new nfs41_recover_session() function in recovery.c

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
This commit is contained in:
Casey Bodley 2011-12-19 16:03:33 -05:00 committed by unknown
parent ab51beeb98
commit 6c1c300a3b
3 changed files with 62 additions and 30 deletions

View file

@ -39,6 +39,10 @@ void nfs41_recovery_finish(
IN nfs41_client *client);
int nfs41_recover_session(
IN nfs41_session *session,
IN bool_t client_state_lost);
void nfs41_recover_sequence_flags(
IN nfs41_session *session,
IN uint32_t flags);