nfs41: nfs41: fix state manager deadlock in session reset
If the session is reset during state recovery, the state manager thread can sleep on the slot_tbl_waitq causing a deadlock. Add a completion framework to the session. Have the state manager thread set a new session state (NFS4CLNT_SESSION_DRAINING) and wait for the session slot table to drain. Signal the state manager thread in nfs41_sequence_free_slot when the NFS4CLNT_SESSION_DRAINING bit is set and the session is drained. Reported-by: Trond Myklebust <trond@netapp.com> Signed-off-by: Andy Adamson <andros@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:

committed by
Trond Myklebust

parent
05f0d23647
commit
ea028ac925
@@ -45,6 +45,7 @@ enum nfs4_client_state {
|
||||
NFS4CLNT_RECLAIM_NOGRACE,
|
||||
NFS4CLNT_DELEGRETURN,
|
||||
NFS4CLNT_SESSION_RESET,
|
||||
NFS4CLNT_SESSION_DRAINING,
|
||||
};
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user