From: Jeff Layton Date: Fri, 12 Sep 2014 20:40:22 +0000 (-0400) Subject: nfsd: reject reclaim request when client has already sent RECLAIM_COMPLETE X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=3b3e7b72239a748f516d6aee8c12df48d50e2d7e;p=openwrt%2Fstaging%2Fblogic.git nfsd: reject reclaim request when client has already sent RECLAIM_COMPLETE As stated in RFC 5661, section 18.51.3: Once a RECLAIM_COMPLETE is done, there can be no further reclaim operations for locks whose scope is defined as having completed recovery. Once the client sends RECLAIM_COMPLETE, the server will not allow the client to do subsequent reclaims of locking state for that scope and, if these are attempted, will return NFS4ERR_NO_GRACE. Ensure that we enforce that requirement. Signed-off-by: Jeff Layton --- diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index bed41f727c0b..08fb273ad4e0 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -5650,6 +5650,9 @@ nfs4_check_open_reclaim(clientid_t *clid, if (status) return nfserr_reclaim_bad; + if (test_bit(NFSD4_CLIENT_RECLAIM_COMPLETE, &cstate->clp->cl_flags)) + return nfserr_no_grace; + if (nfsd4_client_record_check(cstate->clp)) return nfserr_reclaim_bad;