linux/net/core
Eric Dumazet e67f88dd12 net: dont hold rtnl mutex during netlink dump callbacks
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 :

1c2d670f36 : [RTNETLINK]: Hold rtnl_mutex during netlink dump callbacks
6313c1e099 : [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 <eric.dumazet@gmail.com>
Cc: Patrick McHardy <kaber@trash.net>
Cc: Remi Denis-Courmont <remi.denis-courmont@nokia.com>
Acked-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2011-05-02 15:26:28 -07:00
..
datagram.c Fix a typo in datagram.c and sctp/socket.c. 2010-12-06 13:10:11 -08:00
dev_addr_lists.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-03-18 10:37:40 -07:00
dev.c ethtool: Call ethtool's get/set_settings callbacks with cleaned data 2011-04-29 14:01:30 -07:00
drop_monitor.c net: fix incorrect spelling in drop monitor protocol 2011-03-21 18:20:26 -07:00
dst.c net: Use non-zero allocations in dst_alloc(). 2011-04-28 22:26:00 -07:00
ethtool.c net: fix hw_features ethtool_ops->set_flags compatibility 2011-04-21 17:21:43 -07:00
fib_rules.c net: dont hold rtnl mutex during netlink dump callbacks 2011-05-02 15:26:28 -07:00
filter.c net: filter: Just In Time compiler for x86-64 2011-04-27 23:05:08 -07:00
flow.c net: Make flow cache paths use a const struct flowi. 2011-02-22 18:44:31 -08:00
gen_estimator.c pkt_sched: remov unnecessary bh_disable 2010-09-10 12:47:59 -07:00
gen_stats.c net/core: EXPORT_SYMBOL cleanups 2010-07-12 12:57:55 -07:00
iovec.c net: Limit socket I/O iovec total length to INT_MAX. 2010-10-28 11:47:52 -07:00
kmap_skb.h
link_watch.c Fix common misspellings 2011-03-31 11:26:23 -03:00
Makefile net: support time stamping in phy devices. 2010-07-18 19:15:26 -07:00
neighbour.c neigh: __rcu annotations 2011-01-20 16:59:34 -08:00
net_namespace.c net: minor cleanup to net_namespace.c. 2011-04-15 15:47:51 -07:00
net-sysfs.c ethtool: Call ethtool's get/set_settings callbacks with cleaned data 2011-04-29 14:01:30 -07:00
net-sysfs.h xps: Add CONFIG_XPS 2010-11-28 18:24:14 -08:00
net-traces.c netdev: Add tracepoints to netdev layer 2010-09-07 17:51:33 +02:00
netevent.c net/core: EXPORT_SYMBOL cleanups 2010-07-12 12:57:55 -07:00
netpoll.c inet: constify ip headers and in6_addr 2011-04-22 11:04:14 -07:00
pktgen.c pktgen: create num frags requested 2011-04-29 11:37:35 -07:00
request_sock.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2010-12-08 13:47:38 -08:00
rtnetlink.c net: dont hold rtnl mutex during netlink dump callbacks 2011-05-02 15:26:28 -07:00
scm.c Allow passing O_PATH descriptors via SCM_RIGHTS datagrams 2011-03-15 02:21:45 -04:00
skbuff.c Fix common misspellings 2011-03-31 11:26:23 -03:00
sock.c Fix common misspellings 2011-03-31 11:26:23 -03:00
stream.c net: Fix the condition passed to sk_wait_event() 2010-10-03 20:41:32 -07:00
sysctl_net_core.c net: filter: Just In Time compiler for x86-64 2011-04-27 23:05:08 -07:00
timestamping.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2010-12-17 12:27:22 -08:00
user_dma.c net/core/user_dma.c: Use frag list abstraction interfaces. 2009-06-09 00:19:10 -07:00
utils.c net: return operator cleanup 2010-09-23 14:33:39 -07:00