Thread (9 messages) 9 messages, 3 authors, 2011-05-18

Re: [PATCH net-next-2.6] net: add rcu protection to netdev->ifalias

From: Stephen Hemminger <hidden>
Date: 2011-05-17 22:25:07

On Wed, 18 May 2011 00:18:12 +0200
Eric Dumazet [off-list ref] wrote:
Le lundi 02 mai 2011 à 15:27 -0700, David Miller a écrit :
quoted
From: Stephen Hemminger <redacted>
Date: Thu, 28 Apr 2011 08:43:37 -0700
quoted
On Thu, 28 Apr 2011 10:56:07 +0200
Eric Dumazet [off-list ref] wrote:
quoted
Four years ago, Patrick made a change to hold rtnl mutex during netlink
dump callbacks.

I believe it was a wrong move. This slows down concurrent dumps, making
good old /proc/net/ files faster than rtnetlink in some situations.

This occurred to me because one "ip link show dev ..." was _very_ slow
on a workload adding/removing network devices in background.

All dump callbacks are able to use RCU locking now, so this patch does
roughly a revert of commits :

1c2d670f366 : [RTNETLINK]: Hold rtnl_mutex during netlink dump callbacks
6313c1e0992 : [RTNETLINK]: Remove unnecessary locking in dump callbacks

This let writers fight for rtnl mutex and readers going full speed.

It also takes care of phonet : phonet_route_get() is now called from rcu
read section. I renamed it to phonet_route_get_rcu()

Signed-off-by: Eric Dumazet <redacted>
Cc: Patrick McHardy <redacted>
Cc: Remi Denis-Courmont <redacted>
Acked-by: Stephen Hemminger <redacted>
Applied, thanks everyone!
I think we probably have to make some fixes, because rtnl_fill_ifinfo()
can access fields that were previously protected with RTNL

Let's see if it's doable, before considering re-adding rtnl_lock() in
rtnl_dump_ifinfo() ?

First step : dev->ifalias

Its late here, I'll continue the work tomorrow.

Thanks

[PATCH net-next-2.6] net: add rcu protection to netdev->ifalias

Avoid holding RTNL in show_ifalias() and rtnl_fill_ifinfo() to
manipulate netdev->ifalias

Signed-off-by: Eric Dumazet <redacted>
I am beginning to think the idea of optimizing case of "ip link show"
running in background with adding/removing network devices is silly. 
And switching to RCU leads to all sorts of corner cases where only
partial data will be read. Is it really worth it?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help