nfsd: deal with revoked delegations appropriately
authorAndrew Elble <aweits@rit.edu>
Fri, 3 Nov 2017 18:06:31 +0000 (14:06 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Tue, 7 Nov 2017 21:44:02 +0000 (16:44 -0500)
commit95da1b3a5aded124dd1bda1e3cdb876184813140
tree6764bb8c88390cdfc1cdee2733b3be6767e3e9e2
parent77a08867a66796f8316449e030e0bfc84f2a3f66
nfsd: deal with revoked delegations appropriately

If a delegation has been revoked by the server, operations using that
delegation should error out with NFS4ERR_DELEG_REVOKED in the >4.1
case, and NFS4ERR_BAD_STATEID otherwise.

The server needs NFSv4.1 clients to explicitly free revoked delegations.
If the server returns NFS4ERR_DELEG_REVOKED, the client will do that;
otherwise it may just forget about the delegation and be unable to
recover when it later sees SEQ4_STATUS_RECALLABLE_STATE_REVOKED set on a
SEQUENCE reply.  That can cause the Linux 4.1 client to loop in its
stage manager.

Signed-off-by: Andrew Elble <aweits@rit.edu>
Reviewed-by: Trond Myklebust <trond.myklebust@primarydata.com>
Cc: stable@vger.kernel.org
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/nfs4state.c