[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

ifupdown locking up when bringing down bridge devices

(Sorry for the first subject-less post.  Fat-fingered it)

The networking init script is hanging and reporting the following error when
bringing down br0 (bridge device via bridge-utils, for those who don't

unregister_netdevice: waiting for br0 to become free. Usage count = 1

This is occuring when "brctl delbr br0" is ran from the
/etc/network/if-post-down.d/bridge script.  However, this only occurs if run
by ifupdown framework, and only while using 2.6.9 kernel.  And when they
break, it seems to be something about bringing the interface full down
("ifdown br0" as opposed to "ifconfig br0 down").  I have tried disabling
the bridge scripts and just have ifupdown bring down the br0 interface, but
brctl would still hang when bringing down br0.  

The only way I cat get it to work is by running "ifconfig br0 down" and
"brctl delbr br0" by hand before using "/etc/init.d/networking stop" or
"ifdown -a". This successfully brings down the bridge.  I can then do a
"/etc/init.d/networking stop" to bring down everything else.

I have verified this on two different machines, running different hardware.
Both work fine with 2.6.8 kernel, but break on the 2.6.9 kernel.    So, is
this a bug for the kernel-source-2.6.9, bridge-utils, or ifupdown?  The
versions I am using are all current sarge and sid packages.

My original br0 entry in /etc/network/interfaces that crashes:

    iface br0 inet static
        bridge_ports eth1 eth2

My current automated workaround is to add those two lines mentioned above to
the "stop" and "restart" sections of the /etc/init.d/networking script just
about the "ifdown -a" lines.  And to change my br0 entry to:

    iface br0 inet static
        bridge_ports eth1 eth2
        down ifconfig eth1 down
        down ifconfig eth2 down

These last two entries are needed since the if-post-down.d/bridge script
doesn't get ran when there are no active bridge interfaces.

Reply to: