]> git.baikalelectronics.ru Git - kernel.git/commit
percpu_ref: add PCPU_REF_DEAD
authorTejun Heo <tj@kernel.org>
Wed, 24 Sep 2014 17:31:49 +0000 (13:31 -0400)
committerTejun Heo <tj@kernel.org>
Wed, 24 Sep 2014 17:31:49 +0000 (13:31 -0400)
commitf6922aff7070c6590e8df881af69d48c11e291b3
tree025e5eb1351f394a83e3400e221bd3149b6eb6a4
parent31f564705055392ea09b58d2cab446e4535210d6
percpu_ref: add PCPU_REF_DEAD

percpu_ref will be restructured so that percpu/atomic mode switching
and reference killing are dedoupled.  In preparation, add
PCPU_REF_DEAD and PCPU_REF_ATOMIC_DEAD which is OR of ATOMIC and DEAD.
For now, ATOMIC and DEAD are changed together and all PCPU_REF_ATOMIC
uses are converted to PCPU_REF_ATOMIC_DEAD without causing any
behavior changes.

percpu_ref_init() now specifies an explicit alignment when allocating
the percpu counters so that the pointer has enough unused low bits to
accomodate the flags.  Note that one flag was fine as min alignment
for percpu memory is 2 bytes but two flags are already too many for
the natural alignment of unsigned longs on archs like cris and m68k.

v2: The original patch had BUILD_BUG_ON() which triggers if unsigned
    long's alignment isn't enough to accomodate the flags, which
    triggered on cris and m64k.  percpu_ref_init() updated to specify
    the required alignment explicitly.  Reported by Fengguang.

Signed-off-by: Tejun Heo <tj@kernel.org>
Reviewed-by: Kent Overstreet <kmo@daterainc.com>
Cc: kbuild test robot <fengguang.wu@intel.com>
include/linux/percpu-refcount.h
lib/percpu-refcount.c