From: Eric Dumazet Date: Tue, 3 Jan 2012 00:00:11 +0000 (+0000) Subject: net_sched: qdisc_alloc_handle() can be too slow X-Git-Tag: v3.3-rc1~182^2~47 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fa0f5aa74316c636427ac92dad0bc5714c34ca17;p=pandora-kernel.git net_sched: qdisc_alloc_handle() can be too slow When trying to allocate ~32768 qdiscs using autohandle mechanism, we can fill the space managed by kernel (handles in [8000-FFFF]:0000 range) But O(N^2) qdisc_alloc_handle() loops 0x10000 times instead of 0x8000 time tc add qdisc add dev eth0 parent 10:7fff pfifo limit 10 RTNETLINK answers: Cannot allocate memory real 1m54.826s user 0m0.000s sys 0m0.004s INFO: rcu_sched_state detected stall on CPU 0 (t=60000 jiffies) Half number of loops, and add a cond_resched() call. We hold rtnl at this point. Signed-off-by: Eric Dumazet CC: Dave Taht Signed-off-by: David S. Miller --- Reading git-diff-tree failed