Message ID | 20091110175647.339425269@vyatta.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
Stephen Hemminger a écrit : > Use RCU to walk list of network devices in qdisc dump. > This could be optimized for large number of devices. > > Signed-off-by: Stephen Hemminger <shemminger@vyatta.com> > Acked-by: Eric Dumazet <eric.dumazet@gmail.com> -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Eric Dumazet <eric.dumazet@gmail.com> Date: Tue, 10 Nov 2009 19:20:57 +0100 > Stephen Hemminger a écrit : >> Use RCU to walk list of network devices in qdisc dump. >> This could be optimized for large number of devices. >> >> Signed-off-by: Stephen Hemminger <shemminger@vyatta.com> >> > > Acked-by: Eric Dumazet <eric.dumazet@gmail.com> Applied. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
--- a/net/sched/sch_api.c 2009-11-09 22:19:09.002480816 -0800 +++ b/net/sched/sch_api.c 2009-11-10 09:28:38.166439067 -0800 @@ -1279,9 +1279,10 @@ static int tc_dump_qdisc(struct sk_buff s_idx = cb->args[0]; s_q_idx = q_idx = cb->args[1]; - read_lock(&dev_base_lock); + + rcu_read_lock(); idx = 0; - for_each_netdev(&init_net, dev) { + for_each_netdev_rcu(&init_net, dev) { struct netdev_queue *dev_queue; if (idx < s_idx) @@ -1302,7 +1303,7 @@ cont: } done: - read_unlock(&dev_base_lock); + rcu_read_unlock(); cb->args[0] = idx; cb->args[1] = q_idx;
Use RCU to walk list of network devices in qdisc dump. This could be optimized for large number of devices. Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>