• D
    FS-Cache: Add use/unuse/wake cookie wrappers · 8fb883f3
    David Howells 提交于
    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: NDavid Howells <dhowells@redhat.com>
    8fb883f3
fscache-cache.h 19.6 KB