<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/net/core/dst.c, branch v2.6.25.3</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>[NETNS][DST] dst: pass the dst_ops as parameter to the gc functions</title>
<updated>2008-01-28T23:02:46+00:00</updated>
<author>
<name>Daniel Lezcano</name>
<email>dlezcano@fr.ibm.com</email>
</author>
<published>2008-01-18T11:56:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=569d36452ee26c08523cc9f658901c5188640853'/>
<id>569d36452ee26c08523cc9f658901c5188640853</id>
<content type='text'>
The garbage collection function receive the dst_ops structure as
parameter. This is useful for the next incoming patchset because it
will need the dst_ops (there will be several instances) and the
network namespace pointer (contained in the dst_ops).

The protocols which do not take care of the namespaces will not be
impacted by this change (expect for the function signature), they do
just ignore the parameter.

Signed-off-by: Daniel Lezcano &lt;dlezcano@fr.ibm.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The garbage collection function receive the dst_ops structure as
parameter. This is useful for the next incoming patchset because it
will need the dst_ops (there will be several instances) and the
network namespace pointer (contained in the dst_ops).

The protocols which do not take care of the namespaces will not be
impacted by this change (expect for the function signature), they do
just ignore the parameter.

Signed-off-by: Daniel Lezcano &lt;dlezcano@fr.ibm.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[NET]: dst_ifdown() cleanup</title>
<updated>2008-01-28T22:57:05+00:00</updated>
<author>
<name>Eric Dumazet</name>
<email>dada1@cosmosbay.com</email>
</author>
<published>2007-12-11T10:00:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=64b7d96167977850f4a24e52dd0a76b03c6542cf'/>
<id>64b7d96167977850f4a24e52dd0a76b03c6542cf</id>
<content type='text'>
This cleanup shrinks size of net/core/dst.o on i386 from 1299 to 1289 bytes.
(This is because dev_hold()/dev_put() are doing atomic_inc()/atomic_dec() and
force compiler to re-evaluate memory contents.)

Signed-off-by: Eric Dumazet &lt;dada1@cosmosbay.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This cleanup shrinks size of net/core/dst.o on i386 from 1299 to 1289 bytes.
(This is because dev_hold()/dev_put() are doing atomic_inc()/atomic_dec() and
force compiler to re-evaluate memory contents.)

Signed-off-by: Eric Dumazet &lt;dada1@cosmosbay.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[NET]: Multiple namespaces in the all dst_ifdown routines.</title>
<updated>2008-01-28T22:56:44+00:00</updated>
<author>
<name>Denis V. Lunev</name>
<email>den@openvz.org</email>
</author>
<published>2007-12-07T08:38:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=5a3e55d68ec5baac578bf32ba67607088c763657'/>
<id>5a3e55d68ec5baac578bf32ba67607088c763657</id>
<content type='text'>
Move dst entries to a namespace loopback to catch refcounting leaks.

Signed-off-by: Denis V. Lunev &lt;den@openvz.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Move dst entries to a namespace loopback to catch refcounting leaks.

Signed-off-by: Denis V. Lunev &lt;den@openvz.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[NET]: Eliminate duplicate copies of dst_discard</title>
<updated>2008-01-28T22:53:37+00:00</updated>
<author>
<name>Herbert Xu</name>
<email>herbert@gondor.apana.org.au</email>
</author>
<published>2007-11-14T05:34:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=352e512c32b634768303a43768245a0363cebbe7'/>
<id>352e512c32b634768303a43768245a0363cebbe7</id>
<content type='text'>
We have a number of copies of dst_discard scattered around the place
which all do the same thing, namely free a packet on the input or
output paths.

This patch deletes all of them except dst_discard and points all the
users to it.

The only non-trivial bit is decnet where it returns an error.
However, conceptually this is identical to the blackhole functions
used in IPv4 and IPv6 which do not return errors.  So they should
either all return errors or all return zero.  For now I've stuck with
the majority and picked zero as the return value.

It doesn't really matter in practice since few if any driver would
react differently depending on a zero return value or NET_RX_DROP.

Signed-off-by: Herbert Xu &lt;herbert@gondor.apana.org.au&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We have a number of copies of dst_discard scattered around the place
which all do the same thing, namely free a packet on the input or
output paths.

This patch deletes all of them except dst_discard and points all the
users to it.

The only non-trivial bit is decnet where it returns an error.
However, conceptually this is identical to the blackhole functions
used in IPv4 and IPv6 which do not return errors.  So they should
either all return errors or all return zero.  For now I've stuck with
the majority and picked zero as the return value.

It doesn't really matter in practice since few if any driver would
react differently depending on a zero return value or NET_RX_DROP.

Signed-off-by: Herbert Xu &lt;herbert@gondor.apana.org.au&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[NET]: Removing duplicit #includes</title>
<updated>2007-11-07T12:11:44+00:00</updated>
<author>
<name>Jiri Olsa</name>
<email>olsajiri@gmail.com</email>
</author>
<published>2007-11-07T08:49:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=40208d71e0c6b5f912b185e637272b6481fcef3f'/>
<id>40208d71e0c6b5f912b185e637272b6481fcef3f</id>
<content type='text'>
Removing duplicit #includes for net/

Signed-off-by: Jiri Olsa &lt;olsajiri@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Removing duplicit #includes for net/

Signed-off-by: Jiri Olsa &lt;olsajiri@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[NET]: Make the loopback device per network namespace.</title>
<updated>2007-10-10T23:52:49+00:00</updated>
<author>
<name>Eric W. Biederman</name>
<email>ebiederm@xmission.com</email>
</author>
<published>2007-09-27T05:10:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=2774c7aba6c97a2535be3309a2209770953780b3'/>
<id>2774c7aba6c97a2535be3309a2209770953780b3</id>
<content type='text'>
This patch makes loopback_dev per network namespace.  Adding
code to create a different loopback device for each network
namespace and adding the code to free a loopback device
when a network namespace exits.

This patch modifies all users the loopback_dev so they
access it as init_net.loopback_dev, keeping all of the
code compiling and working.  A later pass will be needed to
update the users to use something other than the initial network
namespace.

Signed-off-by: Eric W. Biederman &lt;ebiederm@xmission.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch makes loopback_dev per network namespace.  Adding
code to create a different loopback device for each network
namespace and adding the code to free a loopback device
when a network namespace exits.

This patch modifies all users the loopback_dev so they
access it as init_net.loopback_dev, keeping all of the
code compiling and working.  A later pass will be needed to
update the users to use something other than the initial network
namespace.

Signed-off-by: Eric W. Biederman &lt;ebiederm@xmission.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[NET]: Dynamically allocate the loopback device, part 1.</title>
<updated>2007-10-10T23:52:14+00:00</updated>
<author>
<name>Daniel Lezcano</name>
<email>dlezcano@fr.ibm.com</email>
</author>
<published>2007-09-26T02:16:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=de3cb747ffac5f2a4a6bb156e7e2fd5229e688e5'/>
<id>de3cb747ffac5f2a4a6bb156e7e2fd5229e688e5</id>
<content type='text'>
This patch replaces all occurences to the static variable
loopback_dev to a pointer loopback_dev. That provides the
mindless, trivial, uninteressting change part for the dynamic
allocation for the loopback.

Signed-off-by: Eric W. Biederman &lt;ebiederm@xmission.com&gt;
Signed-off-by: Daniel Lezcano &lt;dlezcano@fr.ibm.com&gt;
Acked-By: Kirill Korotaev &lt;dev@sw.ru&gt;
Acked-by: Benjamin Thery &lt;benjamin.thery@bull.net&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch replaces all occurences to the static variable
loopback_dev to a pointer loopback_dev. That provides the
mindless, trivial, uninteressting change part for the dynamic
allocation for the loopback.

Signed-off-by: Eric W. Biederman &lt;ebiederm@xmission.com&gt;
Signed-off-by: Daniel Lezcano &lt;dlezcano@fr.ibm.com&gt;
Acked-By: Kirill Korotaev &lt;dev@sw.ru&gt;
Acked-by: Benjamin Thery &lt;benjamin.thery@bull.net&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[PATCH] NET : convert IP route cache garbage collection from softirq processing to a workqueue</title>
<updated>2007-10-10T23:49:15+00:00</updated>
<author>
<name>Eric Dumazet</name>
<email>dada1@cosmosbay.com</email>
</author>
<published>2007-09-12T12:29:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=86bba269d08f0c545ae76c90b56727f65d62d57f'/>
<id>86bba269d08f0c545ae76c90b56727f65d62d57f</id>
<content type='text'>
When the periodic IP route cache flush is done (every 600 seconds on
default configuration), some hosts suffer a lot and eventually trigger
the "soft lockup" message.

dst_run_gc() is doing a scan of a possibly huge list of dst_entries,
eventually freeing some (less than 1%) of them, while holding the
dst_lock spinlock for the whole scan.

Then it rearms a timer to redo the full thing 1/10 s later...
The slowdown can last one minute or so, depending on how active are
the tcp sessions.

This second version of the patch converts the processing from a softirq
based one to a workqueue.

Even if the list of entries in garbage_list is huge, host is still
responsive to softirqs and can make progress.

Instead of resetting gc timer to 0.1 second if one entry was freed in a
gc run, we do this if more than 10% of entries were freed.

Before patch :

Aug 16 06:21:37 SRV1 kernel: BUG: soft lockup detected on CPU#0!
Aug 16 06:21:37 SRV1 kernel:
Aug 16 06:21:37 SRV1 kernel: Call Trace:
Aug 16 06:21:37 SRV1 kernel:  &lt;IRQ&gt;  [&lt;ffffffff802286f0&gt;] wake_up_process+0x10/0x20
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff80251e09&gt;] softlockup_tick+0xe9/0x110
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff803cd380&gt;] dst_run_gc+0x0/0x140
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff802376f3&gt;] run_local_timers+0x13/0x20
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff802379c7&gt;] update_process_times+0x57/0x90
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff80216034&gt;] smp_local_timer_interrupt+0x34/0x60
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff802165cc&gt;] smp_apic_timer_interrupt+0x5c/0x80
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff8020a816&gt;] apic_timer_interrupt+0x66/0x70
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff803cd3d3&gt;] dst_run_gc+0x53/0x140
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff803cd3c6&gt;] dst_run_gc+0x46/0x140
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff80237148&gt;] run_timer_softirq+0x148/0x1c0
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff8023340c&gt;] __do_softirq+0x6c/0xe0
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff8020ad6c&gt;] call_softirq+0x1c/0x30
Aug 16 06:21:37 SRV1 kernel:  &lt;EOI&gt;  [&lt;ffffffff8020cb34&gt;] do_softirq+0x34/0x90
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff802331cf&gt;] local_bh_enable_ip+0x3f/0x60
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff80422913&gt;] _spin_unlock_bh+0x13/0x20
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff803dfde8&gt;] rt_garbage_collect+0x1d8/0x320
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff803cd4dd&gt;] dst_alloc+0x1d/0xa0
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff803e1433&gt;] __ip_route_output_key+0x573/0x800
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff803c02e2&gt;] sock_common_recvmsg+0x32/0x50
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff803e16dc&gt;] ip_route_output_flow+0x1c/0x60
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff80400160&gt;] tcp_v4_connect+0x150/0x610
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff803ebf07&gt;] inet_bind_bucket_create+0x17/0x60
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff8040cd16&gt;] inet_stream_connect+0xa6/0x2c0
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff80422981&gt;] _spin_lock_bh+0x11/0x30
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff803c0bdf&gt;] lock_sock_nested+0xcf/0xe0
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff80422981&gt;] _spin_lock_bh+0x11/0x30
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff803be551&gt;] sys_connect+0x71/0xa0
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff803eee3f&gt;] tcp_setsockopt+0x1f/0x30
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff803c030f&gt;] sock_common_setsockopt+0xf/0x20
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff803be4bd&gt;] sys_setsockopt+0x9d/0xc0
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff8028881e&gt;] sys_ioctl+0x5e/0x80
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff80209c4e&gt;] system_call+0x7e/0x83

After patch : (RT_CACHE_DEBUG set to 2 to get following traces)

dst_total: 75469 delayed: 74109 work_perf: 141 expires: 150 elapsed: 8092 us
dst_total: 78725 delayed: 73366 work_perf: 743 expires: 400 elapsed: 8542 us
dst_total: 86126 delayed: 71844 work_perf: 1522 expires: 775 elapsed: 8849 us
dst_total: 100173 delayed: 68791 work_perf: 3053 expires: 1256 elapsed: 9748 us
dst_total: 121798 delayed: 64711 work_perf: 4080 expires: 1997 elapsed: 10146 us
dst_total: 154522 delayed: 58316 work_perf: 6395 expires: 25 elapsed: 11402 us
dst_total: 154957 delayed: 58252 work_perf: 64 expires: 150 elapsed: 6148 us
dst_total: 157377 delayed: 57843 work_perf: 409 expires: 400 elapsed: 6350 us
dst_total: 163745 delayed: 56679 work_perf: 1164 expires: 775 elapsed: 7051 us
dst_total: 176577 delayed: 53965 work_perf: 2714 expires: 1389 elapsed: 8120 us
dst_total: 198993 delayed: 49627 work_perf: 4338 expires: 1997 elapsed: 8909 us
dst_total: 226638 delayed: 46865 work_perf: 2762 expires: 2748 elapsed: 7351 us

I successfully reduced the IP route cache of many hosts by a four factor
thanks to this patch. Previously, I had to disable "ip route flush cache"
to avoid crashes.

Signed-off-by: Eric Dumazet &lt;dada1@cosmosbay.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When the periodic IP route cache flush is done (every 600 seconds on
default configuration), some hosts suffer a lot and eventually trigger
the "soft lockup" message.

dst_run_gc() is doing a scan of a possibly huge list of dst_entries,
eventually freeing some (less than 1%) of them, while holding the
dst_lock spinlock for the whole scan.

Then it rearms a timer to redo the full thing 1/10 s later...
The slowdown can last one minute or so, depending on how active are
the tcp sessions.

This second version of the patch converts the processing from a softirq
based one to a workqueue.

Even if the list of entries in garbage_list is huge, host is still
responsive to softirqs and can make progress.

Instead of resetting gc timer to 0.1 second if one entry was freed in a
gc run, we do this if more than 10% of entries were freed.

Before patch :

Aug 16 06:21:37 SRV1 kernel: BUG: soft lockup detected on CPU#0!
Aug 16 06:21:37 SRV1 kernel:
Aug 16 06:21:37 SRV1 kernel: Call Trace:
Aug 16 06:21:37 SRV1 kernel:  &lt;IRQ&gt;  [&lt;ffffffff802286f0&gt;] wake_up_process+0x10/0x20
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff80251e09&gt;] softlockup_tick+0xe9/0x110
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff803cd380&gt;] dst_run_gc+0x0/0x140
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff802376f3&gt;] run_local_timers+0x13/0x20
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff802379c7&gt;] update_process_times+0x57/0x90
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff80216034&gt;] smp_local_timer_interrupt+0x34/0x60
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff802165cc&gt;] smp_apic_timer_interrupt+0x5c/0x80
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff8020a816&gt;] apic_timer_interrupt+0x66/0x70
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff803cd3d3&gt;] dst_run_gc+0x53/0x140
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff803cd3c6&gt;] dst_run_gc+0x46/0x140
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff80237148&gt;] run_timer_softirq+0x148/0x1c0
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff8023340c&gt;] __do_softirq+0x6c/0xe0
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff8020ad6c&gt;] call_softirq+0x1c/0x30
Aug 16 06:21:37 SRV1 kernel:  &lt;EOI&gt;  [&lt;ffffffff8020cb34&gt;] do_softirq+0x34/0x90
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff802331cf&gt;] local_bh_enable_ip+0x3f/0x60
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff80422913&gt;] _spin_unlock_bh+0x13/0x20
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff803dfde8&gt;] rt_garbage_collect+0x1d8/0x320
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff803cd4dd&gt;] dst_alloc+0x1d/0xa0
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff803e1433&gt;] __ip_route_output_key+0x573/0x800
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff803c02e2&gt;] sock_common_recvmsg+0x32/0x50
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff803e16dc&gt;] ip_route_output_flow+0x1c/0x60
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff80400160&gt;] tcp_v4_connect+0x150/0x610
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff803ebf07&gt;] inet_bind_bucket_create+0x17/0x60
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff8040cd16&gt;] inet_stream_connect+0xa6/0x2c0
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff80422981&gt;] _spin_lock_bh+0x11/0x30
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff803c0bdf&gt;] lock_sock_nested+0xcf/0xe0
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff80422981&gt;] _spin_lock_bh+0x11/0x30
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff803be551&gt;] sys_connect+0x71/0xa0
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff803eee3f&gt;] tcp_setsockopt+0x1f/0x30
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff803c030f&gt;] sock_common_setsockopt+0xf/0x20
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff803be4bd&gt;] sys_setsockopt+0x9d/0xc0
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff8028881e&gt;] sys_ioctl+0x5e/0x80
Aug 16 06:21:37 SRV1 kernel:  [&lt;ffffffff80209c4e&gt;] system_call+0x7e/0x83

After patch : (RT_CACHE_DEBUG set to 2 to get following traces)

dst_total: 75469 delayed: 74109 work_perf: 141 expires: 150 elapsed: 8092 us
dst_total: 78725 delayed: 73366 work_perf: 743 expires: 400 elapsed: 8542 us
dst_total: 86126 delayed: 71844 work_perf: 1522 expires: 775 elapsed: 8849 us
dst_total: 100173 delayed: 68791 work_perf: 3053 expires: 1256 elapsed: 9748 us
dst_total: 121798 delayed: 64711 work_perf: 4080 expires: 1997 elapsed: 10146 us
dst_total: 154522 delayed: 58316 work_perf: 6395 expires: 25 elapsed: 11402 us
dst_total: 154957 delayed: 58252 work_perf: 64 expires: 150 elapsed: 6148 us
dst_total: 157377 delayed: 57843 work_perf: 409 expires: 400 elapsed: 6350 us
dst_total: 163745 delayed: 56679 work_perf: 1164 expires: 775 elapsed: 7051 us
dst_total: 176577 delayed: 53965 work_perf: 2714 expires: 1389 elapsed: 8120 us
dst_total: 198993 delayed: 49627 work_perf: 4338 expires: 1997 elapsed: 8909 us
dst_total: 226638 delayed: 46865 work_perf: 2762 expires: 2748 elapsed: 7351 us

I successfully reduced the IP route cache of many hosts by a four factor
thanks to this patch. Previously, I had to disable "ip route flush cache"
to avoid crashes.

Signed-off-by: Eric Dumazet &lt;dada1@cosmosbay.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[NET]: Make device event notification network namespace safe</title>
<updated>2007-10-10T23:49:09+00:00</updated>
<author>
<name>Eric W. Biederman</name>
<email>ebiederm@xmission.com</email>
</author>
<published>2007-09-12T11:02:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=e9dc86534051b78e41e5b746cccc291b57a3a311'/>
<id>e9dc86534051b78e41e5b746cccc291b57a3a311</id>
<content type='text'>
Every user of the network device notifiers is either a protocol
stack or a pseudo device.  If a protocol stack that does not have
support for multiple network namespaces receives an event for a
device that is not in the initial network namespace it quite possibly
can get confused and do the wrong thing.

To avoid problems until all of the protocol stacks are converted
this patch modifies all netdev event handlers to ignore events on
devices that are not in the initial network namespace.

As the rest of the code is made network namespace aware these
checks can be removed.

Signed-off-by: Eric W. Biederman &lt;ebiederm@xmission.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Every user of the network device notifiers is either a protocol
stack or a pseudo device.  If a protocol stack that does not have
support for multiple network namespaces receives an event for a
device that is not in the initial network namespace it quite possibly
can get confused and do the wrong thing.

To avoid problems until all of the protocol stacks are converted
this patch modifies all netdev event handlers to ignore events on
devices that are not in the initial network namespace.

As the rest of the code is made network namespace aware these
checks can be removed.

Signed-off-by: Eric W. Biederman &lt;ebiederm@xmission.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[NET]: Merge dst_discard_in and dst_discard_out.</title>
<updated>2007-06-07T20:39:46+00:00</updated>
<author>
<name>Denis Cheng</name>
<email>crquan@gmail.com</email>
</author>
<published>2007-06-05T07:06:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=c4b1010f406d7c3f819c22a6323c46776d5b148c'/>
<id>c4b1010f406d7c3f819c22a6323c46776d5b148c</id>
<content type='text'>
Signed-off-by: Denis Cheng &lt;crquan@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Denis Cheng &lt;crquan@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
</feed>
