diff options
author | Tejun Heo <tj@kernel.org> | 2014-09-24 13:31:49 -0400 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2014-09-24 13:31:49 -0400 |
commit | f47ad45784611297b699f3dffb6c7222b76afe64 (patch) | |
tree | 9497c0a4bad4c6b97cfd08bf22a8b2313606ce6a /lib/stmp_device.c | |
parent | 490c79a65708873228cf114cf00e32c204e4e907 (diff) | |
download | blackbird-op-linux-f47ad45784611297b699f3dffb6c7222b76afe64.tar.gz blackbird-op-linux-f47ad45784611297b699f3dffb6c7222b76afe64.zip |
percpu_ref: decouple switching to percpu mode and reinit
percpu_ref has treated the dropping of the base reference and
switching to atomic mode as an integral operation; however, there's
nothing inherent tying the two together.
The use cases for percpu_ref have been expanding continuously. While
the current init/kill/reinit/exit model can cover a lot, the coupling
of kill/reinit with atomic/percpu mode switching is turning out to be
too restrictive for use cases where many percpu_refs are created and
destroyed back-to-back with only some of them reaching extended
operation. The coupling also makes implementing always-atomic debug
mode difficult.
This patch separates out percpu mode switching into
percpu_ref_switch_to_percpu() and reimplements percpu_ref_reinit() on
top of it.
* DEAD still requires ATOMIC. A dead ref can't be switched to percpu
mode w/o going through reinit.
v2: __percpu_ref_switch_to_percpu() was missing static. Fixed.
Reported by Fengguang aka kbuild test robot.
Signed-off-by: Tejun Heo <tj@kernel.org>
Reviewed-by: Kent Overstreet <kmo@daterainc.com>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Christoph Hellwig <hch@infradead.org>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: kbuild test robot <fengguang.wu@intel.com>
Diffstat (limited to 'lib/stmp_device.c')
0 files changed, 0 insertions, 0 deletions