NFSv4.1: Always send a RECLAIM_COMPLETE after establishing lease
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Mon, 13 Mar 2023 22:45:53 +0000 (18:45 -0400)
committerAnna Schumaker <Anna.Schumaker@Netapp.com>
Mon, 10 Apr 2023 19:55:17 +0000 (15:55 -0400)
The spec requires that we always at least send a RECLAIM_COMPLETE when
we're done establishing the lease and recovering any state.

Fixes: fce5c838e133 ("nfs41: RECLAIM_COMPLETE functionality")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
fs/nfs/nfs4state.c

index 2a0ca5c..660ccfa 100644 (file)
@@ -67,6 +67,8 @@
 
 #define OPENOWNER_POOL_SIZE    8
 
+static void nfs4_state_start_reclaim_reboot(struct nfs_client *clp);
+
 const nfs4_stateid zero_stateid = {
        { .data = { 0 } },
        .type = NFS4_SPECIAL_STATEID_TYPE,
@@ -330,6 +332,8 @@ do_confirm:
        status = nfs4_proc_create_session(clp, cred);
        if (status != 0)
                goto out;
+       if (!(clp->cl_exchange_flags & EXCHGID4_FLAG_CONFIRMED_R))
+               nfs4_state_start_reclaim_reboot(clp);
        nfs41_finish_session_reset(clp);
        nfs_mark_client_ready(clp, NFS_CS_READY);
 out: