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>
Showing
- Documentation/filesystems/caching/fscache.txt 5 additions, 5 deletionsDocumentation/filesystems/caching/fscache.txt
- fs/cachefiles/namei.c 6 additions, 7 deletionsfs/cachefiles/namei.c
- fs/fscache/internal.h 7 additions, 0 deletionsfs/fscache/internal.h
- fs/fscache/main.c 76 additions, 0 deletionsfs/fscache/main.c
- fs/fscache/object-list.c 5 additions, 6 deletionsfs/fscache/object-list.c
- fs/fscache/object.c 53 additions, 53 deletionsfs/fscache/object.c
- include/linux/fscache-cache.h 6 additions, 3 deletionsinclude/linux/fscache-cache.h
Loading
Please register or sign in to comment