nfsd4: shut down more of delegation earlier
authorJ. Bruce Fields <bfields@redhat.com>
Thu, 21 Mar 2013 15:21:50 +0000 (11:21 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Thu, 4 Apr 2013 17:25:15 +0000 (13:25 -0400)
commit68a3396178e6688ad7367202cdf0af8ed03c8727
tree1a05bea4199eb6637860a5242a9f8794c0fba5c6
parent8be2d2344cc192c20d7b2aa3211a5b74082e47d4
nfsd4: shut down more of delegation earlier

Once we've unhashed the delegation, it's only hanging around for the
benefit of an oustanding recall, which only needs the encoded
filehandle, stateid, and dl_retries counter.  No point keeping the file
around any longer, or keeping it hashed.

This also fixes a race: calls to idr_remove should really be serialized
by the caller, but the nfs4_put_delegation call from the callback code
isn't taking the state lock.

(Better might be to cancel the callback before destroying the
delegation, and remove any need for reference counting--but I don't see
an easy way to cancel an rpc call.)

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