recovery: handle state revocation flags in SEQUENCE response

if any of (SEQ4_STATUS_EXPIRED_ALL_STATE_REVOKED | SEQ4_STATUS_EXPIRED_SOME_STATE_REVOKED | SEQ4_STATUS_ADMIN_STATE_REVOKED) are set in the session flags returned by SEQUENCE:
* enter client recovery mode
* determine which state was lost with TEST_STATEID (consider all delegations, opens, locks, and layouts)
* send FREE_STATEID for each stateid revoked
* recall all layouts and forget devices (required by 12.7.2: Dealing with Lease Expiration on the Client)
* call recover_delegation(), recover_open() or recover_locks() to reclaim each lock

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
This commit is contained in:
Casey Bodley 2011-10-14 12:25:04 -04:00 committed by unknown
parent ed2ec18d2d
commit 78a0bb0ac5
3 changed files with 195 additions and 17 deletions

View file

@ -42,6 +42,11 @@ int nfs41_recover_client_state(
IN nfs41_session *session,
IN nfs41_client *client);
void nfs41_client_state_revoked(
IN nfs41_session *session,
IN nfs41_client *client,
IN uint32_t revoked);
struct __nfs_argop4;
bool_t nfs41_recover_stateid(
IN nfs41_session *session,