Thread (104 messages) 104 messages, 13 authors, 2013-02-19

[PATCH v5 04/45] percpu_rwlock: Implement the core design of Per-CPU Reader-Writer Locks

From: Srivatsa S. Bhat <hidden>
Date: 2013-02-10 20:22:36
Also in: linux-arch, linux-pm, linuxppc-dev, lkml, netdev

On 02/11/2013 01:43 AM, Oleg Nesterov wrote:
On 02/11, Srivatsa S. Bhat wrote:
quoted
On 02/09/2013 04:40 AM, Paul E. McKenney wrote:
quoted
quoted
+static void announce_writer_inactive(struct percpu_rwlock *pcpu_rwlock)
+{
+	unsigned int cpu;
+
+	drop_writer_signal(pcpu_rwlock, smp_processor_id());
Why do we drop ourselves twice?  More to the point, why is it important to
drop ourselves first?
I don't see where we are dropping ourselves twice. Note that we are no longer
in the cpu_online_mask, so the 'for' loop below won't include us. So we need
to manually drop ourselves. It doesn't matter whether we drop ourselves first
or later.
Yes, but this just reflects its usage in cpu-hotplug. cpu goes away under
_write_lock.
Ah, right. I guess the code still has remnants from the older version in which
this locking scheme wasn't generic and was tied to cpu-hotplug alone..
Perhaps _write_lock/unlock shoud use for_each_possible_cpu() instead?
Hmm, that wouldn't be too bad.
Hmm... I think this makes sense anyway. Otherwise, in theory,
percpu_write_lock(random_non_hotplug_lock) can race with cpu_up?
Yeah, makes sense. Will change it to for_each_possible_cpu().
And I had previously fixed such races with lglocks with a complicated scheme (to
avoid the costly for_each_possible loop), which was finally rewritten to use
for_each_possible_cpu() for the sake of simplicity..
Regards,
Srivatsa S. Bhat
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help