cosmetic: move sequence status recovery to separate function
new function nfs41_recover_sequence_flags() in recovery.c takes care of checking status flags, entering recovery mode, and reclaiming state Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
This commit is contained in:
parent
aacff9d721
commit
ab51beeb98
3 changed files with 31 additions and 13 deletions
|
|
@ -191,19 +191,10 @@ retry:
|
|||
if (status)
|
||||
goto out_free_slot;
|
||||
|
||||
if (try_recovery) {
|
||||
/* check status flags for state revocation */
|
||||
uint32_t revoked = seq->sr_resok4.sr_status_flags &
|
||||
(SEQ4_STATUS_EXPIRED_ALL_STATE_REVOKED
|
||||
| SEQ4_STATUS_EXPIRED_SOME_STATE_REVOKED
|
||||
| SEQ4_STATUS_ADMIN_STATE_REVOKED);
|
||||
|
||||
if (revoked && nfs41_recovery_start_or_wait(session->client)) {
|
||||
/* free stateids and attempt to recover them */
|
||||
nfs41_client_state_revoked(session, session->client, revoked);
|
||||
nfs41_recovery_finish(session->client);
|
||||
}
|
||||
}
|
||||
/* check sequence status flags for state revocation */
|
||||
if (try_recovery && seq->sr_resok4.sr_status_flags)
|
||||
nfs41_recover_sequence_flags(session,
|
||||
seq->sr_resok4.sr_status_flags);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -70,6 +70,28 @@ void nfs41_recovery_finish(
|
|||
}
|
||||
|
||||
|
||||
void nfs41_recover_sequence_flags(
|
||||
IN nfs41_session *session,
|
||||
IN uint32_t flags)
|
||||
{
|
||||
const uint32_t revoked = flags &
|
||||
(SEQ4_STATUS_EXPIRED_ALL_STATE_REVOKED
|
||||
| SEQ4_STATUS_EXPIRED_SOME_STATE_REVOKED
|
||||
| SEQ4_STATUS_ADMIN_STATE_REVOKED);
|
||||
|
||||
/* no state recovery needed */
|
||||
if (revoked == 0)
|
||||
return;
|
||||
|
||||
if (!nfs41_recovery_start_or_wait(session->client))
|
||||
return;
|
||||
|
||||
/* free stateids and attempt to recover them */
|
||||
nfs41_client_state_revoked(session, session->client, revoked);
|
||||
nfs41_recovery_finish(session->client);
|
||||
}
|
||||
|
||||
|
||||
/* client state recovery for server reboot or lease expiration */
|
||||
static int recover_open_grace(
|
||||
IN nfs41_session *session,
|
||||
|
|
|
|||
|
|
@ -38,6 +38,11 @@ bool_t nfs41_recovery_start_or_wait(
|
|||
void nfs41_recovery_finish(
|
||||
IN nfs41_client *client);
|
||||
|
||||
|
||||
void nfs41_recover_sequence_flags(
|
||||
IN nfs41_session *session,
|
||||
IN uint32_t flags);
|
||||
|
||||
int nfs41_recover_client_state(
|
||||
IN nfs41_session *session,
|
||||
IN nfs41_client *client);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue