NFSv4: Fix client recovery when server reboots multiple times
authorTrond Myklebust <trond.myklebust@primarydata.com>
Fri, 13 Jan 2017 18:31:32 +0000 (13:31 -0500)
committerTrond Myklebust <trond.myklebust@primarydata.com>
Fri, 13 Jan 2017 18:31:32 +0000 (13:31 -0500)
If the server reboots multiple times, the client should rely on the
server to tell it that it cannot reclaim state as per section 9.6.3.4
in RFC7530 and section 8.4.2.1 in RFC5661.
Currently, the client is being to conservative, and is assuming that
if the server reboots while state recovery is in progress, then it must
ignore state that was not recovered before the reboot.

Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
fs/nfs/nfs4state.c

index 1d152f4470cd6f6b0bcc6f73fd572e331b18778b..90e6193ce6bed300ddadb1aa1a9aca64a8c2aafc 100644 (file)
@@ -1729,7 +1729,6 @@ static int nfs4_recovery_handle_error(struct nfs_client *clp, int error)
                        break;
                case -NFS4ERR_STALE_CLIENTID:
                        set_bit(NFS4CLNT_LEASE_EXPIRED, &clp->cl_state);
-                       nfs4_state_clear_reclaim_reboot(clp);
                        nfs4_state_start_reclaim_reboot(clp);
                        break;
                case -NFS4ERR_EXPIRED: