On Thu, Mar 13, 2008 at 01:16:46PM +0200, Dan Shimshoni wrote:
> Dan,
>
> - It could be that you encountered (or "discovered") a kernel BUG
> with the locking mechansim of bridge devices.
>
> - What I would suggest is the following:
>
> - First, If you can give more details (kernel version / disto) it would
> help.
>
> - Second, if you can post this mailing list the scripts you are
> running (for adding/deleting the tun device) and describe
> the environment (how you exactly start and configure the tun devices,
> etc). that cause this crash it will really help.
>
> I, for one , will happily try to test it on two Linux machines to see
> if it crash , and I believe that there will be others.
Thanks. But it's rather hard to reproduce.
It happens quite often in our complex environment, but it did not appear when I
tried to brctl addif/delif in from simple scripts. If I come up with something
that's simple to post and reproduces the problem, you'll be the first to know.
I'm using CentOS 5, 2.6.18-8.el5 x86_64 kernel, with bridge-utils-1.1-2.
Do someone here care to take a look at net/bridge/br_if.c's br_add_if()?
I cannot really read kernel code; please enlighten me. I see there
list_add_rcu(&p->list, &br->port_list);
but I did not spot where br->port_list is locked. I worry because
/**
* list_add_rcu - add a new entry to rcu-protected list
* @new: new entry to be added
* @head: list head to add it after
*
* Insert a new entry after the specified head.
* This is good for implementing stacks.
*
* The caller must take whatever precautions are necessary
* (such as holding appropriate locks) to avoid racing
* with another list-mutation primitive, such as list_add_rcu()
* or list_del_rcu(), running on this same list.
* However, it is perfectly legal to run concurrently with
* the _rcu list-traversal primitives, such as
* list_for_each_entry_rcu().
*/
Thanks,
Dan.
=================================================================
To unsubscribe, send mail to [EMAIL PROTECTED] with
the word "unsubscribe" in the message body, e.g., run the command
echo unsubscribe | mail [EMAIL PROTECTED]