Thread (33 messages) 33 messages, 4 authors, 2013-09-28

Re: [CFT][PATCH] net: Delay default_device_exit_batch until no devices are unregistering

From: David Miller <davem@davemloft.net>
Date: 2013-09-18 03:52:50

From: Francesco Ruggeri <redacted>
Date: Tue, 17 Sep 2013 20:50:41 -0700
quoted
quoted
List/count I don't much care but currently we don't have a list of
all of the devices that are unregistering.

The problem with this is that netdev_run_todo moves all of the
devices to a local list, so they are only visible from a list_head
on the stack.  Which makes sense as we run this all in the context
of rtnl_unlock.
And when that local list is processed (the while loop completes and
has iterated over the entire list), either the global todo list is
empty, or it is not empty.

And the waked up code will check for this.

I really don't see what the problem is.
I am not sure that would work.
list_empty(&net_todo_list) does not guarantee that there are no
unregistering devices still in flight.
Another process may have copied net_todo_run into its local list, left
net_todo_list empty and still be in the middle of processing
unregistering devices (without the rtnl lock) when
default_device_exit_batch starts executing.
Ok, now I understand.

Eric B., when you get a chance can you resubmit your patch and perhaps
elaborate on the situation in the commit message.

If I was confused I'm sure other people will be if they look into
this in the future.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help