aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2014-09-24 13:31:48 -0400
committerTejun Heo <tj@kernel.org>2014-09-24 13:31:48 -0400
commit6251f9976af7656b6970a8820153f356430f5de2 (patch)
treeaa2d83279dfb125b9bbd88083a32bfa5e99bf3da /lib
parenta2237370194484ee6aeeff04b617e4b14d178966 (diff)
percpu_ref: minor code and comment updates
* Some comments became stale. Updated. * percpu_ref_tryget() unnecessarily initializes @ret. Removed. * A blank line removed from percpu_ref_kill_rcu(). * Explicit function name in a WARN format string replaced with __func__. * WARN_ON() in percpu_ref_reinit() converted to WARN_ON_ONCE(). Signed-off-by: Tejun Heo <tj@kernel.org> Reviewed-by: Kent Overstreet <kmo@daterainc.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/percpu-refcount.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/lib/percpu-refcount.c b/lib/percpu-refcount.c
index 070dab5e7d77..8ef3f5c20df6 100644
--- a/lib/percpu-refcount.c
+++ b/lib/percpu-refcount.c
@@ -108,7 +108,6 @@ static void percpu_ref_kill_rcu(struct rcu_head *rcu)
108 * reaching 0 before we add the percpu counts. But doing it at the same 108 * reaching 0 before we add the percpu counts. But doing it at the same
109 * time is equivalent and saves us atomic operations: 109 * time is equivalent and saves us atomic operations:
110 */ 110 */
111
112 atomic_long_add((long)count - PCPU_COUNT_BIAS, &ref->count); 111 atomic_long_add((long)count - PCPU_COUNT_BIAS, &ref->count);
113 112
114 WARN_ONCE(atomic_long_read(&ref->count) <= 0, 113 WARN_ONCE(atomic_long_read(&ref->count) <= 0,
@@ -120,8 +119,8 @@ static void percpu_ref_kill_rcu(struct rcu_head *rcu)
120 ref->confirm_kill(ref); 119 ref->confirm_kill(ref);
121 120
122 /* 121 /*
123 * Now we're in single atomic_t mode with a consistent refcount, so it's 122 * Now we're in single atomic_long_t mode with a consistent
124 * safe to drop our initial ref: 123 * refcount, so it's safe to drop our initial ref:
125 */ 124 */
126 percpu_ref_put(ref); 125 percpu_ref_put(ref);
127} 126}
@@ -134,8 +133,8 @@ static void percpu_ref_kill_rcu(struct rcu_head *rcu)
134 * Equivalent to percpu_ref_kill() but also schedules kill confirmation if 133 * Equivalent to percpu_ref_kill() but also schedules kill confirmation if
135 * @confirm_kill is not NULL. @confirm_kill, which may not block, will be 134 * @confirm_kill is not NULL. @confirm_kill, which may not block, will be
136 * called after @ref is seen as dead from all CPUs - all further 135 * called after @ref is seen as dead from all CPUs - all further
137 * invocations of percpu_ref_tryget() will fail. See percpu_ref_tryget() 136 * invocations of percpu_ref_tryget_live() will fail. See
138 * for more details. 137 * percpu_ref_tryget_live() for more details.
139 * 138 *
140 * Due to the way percpu_ref is implemented, @confirm_kill will be called 139 * Due to the way percpu_ref is implemented, @confirm_kill will be called
141 * after at least one full RCU grace period has passed but this is an 140 * after at least one full RCU grace period has passed but this is an
@@ -145,8 +144,7 @@ void percpu_ref_kill_and_confirm(struct percpu_ref *ref,
145 percpu_ref_func_t *confirm_kill) 144 percpu_ref_func_t *confirm_kill)
146{ 145{
147 WARN_ONCE(ref->pcpu_count_ptr & PCPU_REF_DEAD, 146 WARN_ONCE(ref->pcpu_count_ptr & PCPU_REF_DEAD,
148 "percpu_ref_kill() called more than once on %pf!", 147 "%s called more than once on %pf!", __func__, ref->release);
149 ref->release);
150 148
151 ref->pcpu_count_ptr |= PCPU_REF_DEAD; 149 ref->pcpu_count_ptr |= PCPU_REF_DEAD;
152 ref->confirm_kill = confirm_kill; 150 ref->confirm_kill = confirm_kill;
@@ -172,7 +170,7 @@ void percpu_ref_reinit(struct percpu_ref *ref)
172 int cpu; 170 int cpu;
173 171
174 BUG_ON(!pcpu_count); 172 BUG_ON(!pcpu_count);
175 WARN_ON(!percpu_ref_is_zero(ref)); 173 WARN_ON_ONCE(!percpu_ref_is_zero(ref));
176 174
177 atomic_long_set(&ref->count, 1 + PCPU_COUNT_BIAS); 175 atomic_long_set(&ref->count, 1 + PCPU_COUNT_BIAS);
178 176