FS-Cache: Add use/unuse/wake cookie wrappers
authorDavid Howells <dhowells@redhat.com>
Fri, 20 Sep 2013 23:09:31 +0000 (00:09 +0100)
committerDavid Howells <dhowells@redhat.com>
Fri, 27 Sep 2013 17:40:25 +0000 (18:40 +0100)
commit8fb883f3e30065529e4f35d4b4f355193dcdb7a2
tree2a1096b66c9465539fb6e13daa16137d730f3ea3
parent2457aaf73a97a97c8596ed3903bd09601976f3bc
FS-Cache: Add use/unuse/wake cookie wrappers

Add wrapper functions for dealing with cookie->n_active:

 (*) __fscache_use_cookie() to increment it.

 (*) __fscache_unuse_cookie() to decrement and test against zero.

 (*) __fscache_wake_unused_cookie() to wake up anyone waiting for it to reach
     zero.

The second and third are split so that the third can be done after cookie->lock
has been released in case the waiter wakes up whilst we're still holding it and
tries to get it.

We will need to wake-on-zero once the cookie disablement patch is applied
because it will then be possible to see n_active become zero without the cookie
being relinquished.

Also move the cookie usement out of fscache_attr_changed_op() and into
fscache_attr_changed() and the operation struct so that cookie disablement
will be able to track it.

Whilst we're at it, only increment n_active if we're about to do
fscache_submit_op() so that we don't have to deal with undoing it if anything
earlier fails.  Possibly this should be moved into fscache_submit_op() which
could look at FSCACHE_OP_UNUSE_COOKIE.

Signed-off-by: David Howells <dhowells@redhat.com>
fs/fscache/cookie.c
fs/fscache/page.c
include/linux/fscache-cache.h