percpu-refcount: one bit is enough for REF_STATUS

percpu-refcount currently reserves two lowest bits of its percpu
pointer to indicate its state; however, only one bit is used for
PCPU_REF_DEAD.

Simplify it by removing PCPU_STATUS_BITS/MASK and testing
PCPU_REF_DEAD directly.  This also allows the compiler to choose a
more efficient instruction depending on the architecture.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Kent Overstreet <kmo@daterainc.com>
Cc: Christoph Lameter <cl@linux-foundation.org>
This commit is contained in:
Tejun Heo
2014-06-28 08:10:12 -04:00
parent 55c6c814ae
commit d630dc4c9a
2 changed files with 2 additions and 4 deletions

View File

@@ -96,7 +96,7 @@ static void percpu_ref_kill_rcu(struct rcu_head *rcu)
/* Mask out PCPU_REF_DEAD */
pcpu_count = (unsigned __percpu *)
(((unsigned long) pcpu_count) & ~PCPU_STATUS_MASK);
(((unsigned long) pcpu_count) & ~PCPU_REF_DEAD);
for_each_possible_cpu(cpu)
count += *per_cpu_ptr(pcpu_count, cpu);