• Andy Adamson's avatar
    nfs41: schedule async session reset · b069d94a
    Andy Adamson authored
    Define a new session reset state which is set upon a sequence operation error
    in both the sync and async error handlers.
    
    Place all new requests and all but the last outstanding rpc on the
    slot_tbl_waitq. Spawn the recovery thread when the last slot is free.
    Call nfs4_proc_destroy_session, reinitialize the session, call
    nfs4_proc_create_session, clear the session reset state, and wake up the next
    task on the slot_tbl_waitq.
    
    Return the nfs4_proc_destroy_session status to the session reclaimer and
    check for NFS4ERR_BADSESSION and NFS4ERR_DEADSESSION. Other destroy session
    errors should be handled in nfs4_proc_destroy_session where the call can
    be retried with adjusted arguments.
    
    Signed-off-by: Andy Adamson<andros@netapp.com>
    Signed-off-by: default avatarBenny Halevy <bhalevy@panasas.com>
    nfs41: make nfs4_wait_bit_killable public]
        nfs4_wait_bit_killable to be used by NFSv4.1 session recover logic.
    Signed-off-by: default avatarRahul Iyer <iyer@netapp.com>
    Signed-off-by: default avatarBenny Halevy <bhalevy@panasas.com>
    [nfs41: have create_session work on nfs_client]
    Signed-off-by: default avatarAndy Adamson <andros@netapp.com>
    [nfs41: trigger the state manager for session reset]
        Replace the session reset state with the NFS4CLNT_SESSION_SETUP cl_state.
        Place all rpc tasks to sleep on the slot table waitqueue until the slot
        table is drained, then schedule state recovery and wait for it to complete.
    Signed-off-by: default avatarAndy Adamson <andros@netapp.com>
    [nfs41: remove nfs41_session_recovery [ch]
    Replaced by using the nfs4_state_manager.
    Signed-off-by: default avatarAndy Adamson <andros@netapp.com>
    [nfs41: nfs4_wait_bit_killable only used locally]
    [nfs41: keep nfs4_wait_bit_killable static]
    [nfs41: keep const nfs_server in nfs4_handle_exception]
    [nfs41: remove session parameter from nfs4_find_slot]
    Signed-off-by: Andy Adamson <andros@netapp.com
    Signed-off-by: default avatarBenny Halevy <bhalevy@panasas.com>
    [nfs41: resset the session from nfs41_setup_sequence]
    Signed-off-by: default avatarAndy Adamson <andros@netapp.com>
    Signed-off-by: default avatarBenny Halevy <bhalevy@panasas.com>
    Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
    b069d94a
nfs4proc.c 130 KB