sunrpc/cache: make sure deferred requests eventually get revisited.
authorNeilBrown <neilb@suse.de>
Tue, 4 Aug 2009 05:22:38 +0000 (15:22 +1000)
committerJ. Bruce Fields <bfields@citi.umich.edu>
Tue, 4 Aug 2009 15:03:01 +0000 (11:03 -0400)
commit5c4d26390341732a8d614141a4cf4663610a1698
tree1361af921aadc75c1a1fa1a23eb83292dcad8130
parentf866a8194f7cbabb9135b98b9ac7d26237b88367
sunrpc/cache: make sure deferred requests eventually get revisited.

While deferred requests normally get revisited quite quickly,
it is possible for a request to remain in the deferral queue
when the cache item is discarded.  We can easily make sure that
doesn't happen by calling cache_revisit_request just before
the final 'put'.

Also there is a small chance that a race would cause one thread to
defer a request against a cache item while another thread is failing
to queue an upcall for that item.  So when the upcall fails, make
sure to revisit all deferred requests.

Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
net/sunrpc/cache.c