nfsd4: implement SEQ4_STATUS_RECALLABLE_STATE_REVOKED
authorJ. Bruce Fields <bfields@redhat.com>
Tue, 9 Apr 2013 21:02:51 +0000 (17:02 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Tue, 16 Apr 2013 14:59:30 +0000 (10:59 -0400)
commit3bd64a5ba1719c2bb6cba4493dfd3e23a7653e54
treec968f3f51d6082d3c7f0a03ec3d9fdaa031e6593
parent23340032e64d70ce76817a88e8193c8040b095cf
nfsd4: implement SEQ4_STATUS_RECALLABLE_STATE_REVOKED

A 4.1 server must notify a client that has had any state revoked using
the SEQ4_STATUS_RECALLABLE_STATE_REVOKED flag.  The client can figure
out exactly which state is the problem using CHECK_STATEID and then free
it using FREE_STATEID.  The status flag will be unset once all such
revoked stateids are freed.

Our server's only recallable state is delegations.  So we keep with each
4.1 client a list of delegations that have timed out and been recalled,
but haven't yet been freed by FREE_STATEID.

Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/nfs4state.c
fs/nfsd/state.h