fscache: convert object to use workqueue instead of slow-work
authorTejun Heo <tj@kernel.org>
Tue, 20 Jul 2010 20:09:01 +0000 (22:09 +0200)
committerTejun Heo <tj@kernel.org>
Thu, 22 Jul 2010 20:58:34 +0000 (22:58 +0200)
commit8b8edefa2fffbff97f9eec8b70e78ae23abad1a0
tree7f0efac8adb9c9ed7be8af63e51510954f1c51dc
parente120153ddf8620fd0a194d301e9c5a8b28483bb5
fscache: convert object to use workqueue instead of slow-work

Make fscache object state transition callbacks use workqueue instead
of slow-work.  New dedicated unbound CPU workqueue fscache_object_wq
is created.  get/put callbacks are renamed and modified to take
@object and called directly from the enqueue wrapper and the work
function.  While at it, make all open coded instances of get/put to
use fscache_get/put_object().

* Unbound workqueue is used.

* work_busy() output is printed instead of slow-work flags in object
  debugging outputs.  They mean basically the same thing bit-for-bit.

* sysctl fscache.object_max_active added to control concurrency.  The
  default value is nr_cpus clamped between 4 and
  WQ_UNBOUND_MAX_ACTIVE.

* slow_work_sleep_till_thread_needed() is replaced with fscache
  private implementation fscache_object_sleep_till_congested() which
  waits on fscache_object_wq congestion.

* debugfs support is dropped for now.  Tracing API based debug
  facility is planned to be added.

Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: David Howells <dhowells@redhat.com>
Documentation/filesystems/caching/fscache.txt
fs/cachefiles/namei.c
fs/fscache/internal.h
fs/fscache/main.c
fs/fscache/object-list.c
fs/fscache/object.c
include/linux/fscache-cache.h