Fix reversed test in nfs4_op_readlink

This comes from switching the consequent and alternative without
changing the predicate.  I am ashamed.

Signed-off-by: Adam C. Emerson <aemerson@linuxbox.com>
LRU queue lanes have partitions (lexical change only).

The LRU queue isn't subject to fragmentation, and the "fragments"
{X lanes} partition the queue, so call these partitions.

Signed-off-by: Matt Benjamin <matt@linuxbox.com>
LRU cleanup queue.

Defer cache entry cleanup processing to the LRU thread.
Define cleanup queue and implement cache_inode_lru_cleanup_push.
Implement cleanup processing in LRU thread.  Use new cleanup
mechanism in cache_inode_kill_entry.

Signed-off-by: Matt Benjamin <matt@linuxbox.com>
Remove pthread_wrlock_trylock in state_wipe_file.

The function is now called only from the LRU thread, in
deferred cleanup processing.

Signed-off-by: Matt Benjamin <matt@linuxbox.com>
Streamline atomics in cache_inode_lru.

The code holds lru->mtx (modulo the one special case) in all
the paths where lru->refcount is inc/decremented, so we
should just use ordinary increment or decrement.

Signed-off-by: Matt Benjamin <matt@linuxbox.com>
Deferred cleanup fixes.

1. make cache_inode_cleanup_push idempotent
2. move lru_thread cleanup to static inline routine
3. streamline checks for the 3 "killed" states (switch to
   preprocessor defines in cache_inode_lru.h, for composing)

Signed-off-by: Matt Benjamin <matt@linuxbox.com>