• Trond Myklebust's avatar
    NFSv4: Don't call nfs4_state_mark_reclaim_reboot() from error handlers · ae1007d3
    Trond Myklebust authored
    In the case of a server reboot, the state recovery thread starts by calling
    nfs4_state_end_reclaim_reboot() in order to avoid edge conditions when
    the server reboots while the client is in the middle of recovery.
    
    However, if the client has already marked the nfs4_state as requiring
    reboot recovery, then the above behaviour will cause the recovery thread to
    treat the open as if it was part of such an edge condition: the open will
    be recovered as if it was part of a lease expiration (and all the locks
    will be lost).
    Fix is to remove the call to nfs4_state_mark_reclaim_reboot from
    nfs4_async_handle_error(), and nfs4_handle_exception(). Instead we leave it
    to the recovery thread to do this for us.
    Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
    Cc: stable@kernel.org
    ae1007d3
nfs4proc.c 143 KB