Thread (215 messages) 215 messages, 22 authors, 2009-05-01

Re: [PATCH] netfilter: use per-cpu spinlock rather than RCU (v3)

From: Linus Torvalds <torvalds@linux-foundation.org>
Date: 2009-04-16 00:12:55
Also in: lkml, netfilter-devel


On Wed, 15 Apr 2009, David Miller wrote:
I really think we should entertain the idea where we don't RCU quiesce
when adding rules.  That was dismissed as not workable because the new
rule must be "visible" as soon as we return to userspace but let's get
real, effectively it will be.
I never understood that dismissal.

The new rule _will_ be visible as we return to user space. It's just that 
old packets may still be in flight in other queues.

But that is true even _without_ the "synchronize_net()". The old packets 
just had to make it slightly further in the queueing - but as far as user 
space is concerned, there is absolutely _zero_ difference between the two. 
In both cases it may see packets queued with the old rules. 
I almost cringed when the per-spinlock idea was proposed, but per-cpu
rwlocks just takes things too far for my tastes.
I really personally would prefer the RCU approach too. I don't think 
rwlocks are any more cringe-worthy than spinlocks, although it is true 
that they tend to be slightly more expensive.

The pure RCU "just get rid of the unnecessary 'serialze_net()'" approach 
seems to be clearly superior to either.

		Linus
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help