diff options
author | Jeff Layton <jlayton@primarydata.com> | 2014-09-12 16:40:22 -0400 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2014-09-17 16:33:13 -0400 |
commit | 3b3e7b72239a748f516d6aee8c12df48d50e2d7e (patch) | |
tree | 7ff017c72c4fb3f94fe18f22971023b881655b04 /fs/nfsd/nfs4state.c | |
parent | 919b8049f0e00458ff4dce22ad293c9a24ac3723 (diff) |
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 <jlayton@primarydata.com>
Diffstat (limited to 'fs/nfsd/nfs4state.c')
-rw-r--r-- | fs/nfsd/nfs4state.c | 3 |
1 files changed, 3 insertions, 0 deletions
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; |