Thread (34 messages) 34 messages, 10 authors, 2019-11-29

Re: unregister_netdevice: waiting for DEV to become free (2)

From: David Ahern <hidden>
Date: 2019-04-29 18:43:22
Also in: lkml

Possibly related (same subject, not in this thread)

On 4/29/19 12:34 PM, David Ahern wrote:
On 4/27/19 10:22 PM, Tetsuo Handa wrote:
quoted
On 2019/04/28 8:52, Eric Dumazet wrote:
quoted
On 4/27/19 3:33 PM, Tetsuo Handa wrote:
quoted
I'm waiting for davem why it is safe to move the dst entry from
"a device to unregister" to "a loopback device in that namespace".
I'm waiting for an explanation how the dst entry which was moved to
"a loopback device in that namespace" is released (i.e. what the
expected shutdown sequence is).
The most probable explanation is that we make sure the loopback device
is the last one to be dismantled at netns deletion,
and this would obviously happen after all dst have been released.
rt_flush_dev() becomes a no-op if "dev" == "a loopback device in that
namespace". And according to debug printk(), rt_flush_dev() is called
on "a loopback device in that namespace" itself.

If "a loopback device in that namespace" is the last "one" (== "a network
device in that namespace" ?), which shutdown sequence should have called
dev_put("a loopback device in that namespace") before unregistration of
"a loopback device in that namespace" starts?

Since I'm not a netdev person, I appreciate if you can explain
that shutdown sequence using a flow chart.
The attached patch adds a tracepoint to notifier_call_chain. If you have
KALLSYMS enabled it will show the order of the function handlers:

perf record -e notifier:* -a -g &

ip netns del <NAME>
<wait a few seconds>

fg
<ctrl-c on perf-record>

perf script
with the header file this time.

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help