[Bug 1003656] Re: bridge-utils/vlan udev hooks prevent execution of upstart hook, slowing down boot
Stéphane Graber
stgraber at stgraber.org
Tue Sep 11 16:09:14 UTC 2012
I just spent a few minutes trying to figure out the ordering based on the scripts for Andrew's system, it's basically:
- eth0 appears
- triggers udev
- triggers upstart
- triggers ifup eth0
- triggers bonding
- bond0 appears
- triggers udev
- triggers bridge-network-interface
- triggers ifup br0
- br0 appears
- triggers udev
- triggers upstart
- triggers ifup br0 => fails, already configured
- dhclient br0 => fails as it's blocking and no interface in bond
- triggers upstart
- triggers ifup bond0
- eth0 is joined in the bond
- eth1 appears
- triggers udev
- triggers upstart
- triggers ifup eth1
- triggers bonding
- eth1 is joined in the bond
As you can see, it's relatively complex. The main problem as easily seen above is that udev being sequential, the "ifup br0" will be called before the bond interface is fully setup and so will fail to acquire an IP as nothing's in the bond at this point.
A possible way around the problem would be to only create the bridge
from the udev hook but not actually call ifup, letting the upstart job
take care of this. This would make the code similar to what vlan and
ifenslave are currently doing where as far as I know we're not getting a
similar deadlock.
I have a system reproducing this bug, so I'll now be trying my
workaround and re-read all the scripts once more to see if I missed
something.
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to bridge-utils in Ubuntu.
https://bugs.launchpad.net/bugs/1003656
Title:
bridge-utils/vlan udev hooks prevent execution of upstart hook,
slowing down boot
Status in “bridge-utils” package in Ubuntu:
Triaged
Status in “vlan” package in Ubuntu:
Invalid
Status in “bridge-utils” source package in Precise:
Triaged
Status in “bridge-utils” source package in Quantal:
Triaged
Status in “vlan” source package in Quantal:
Invalid
Bug description:
we're trying to migrate our network configuration from lucid to
precise. in 10.04 we tied eth0+eth1 together into bond0, then set br0
up on top of that and assigned an address via dhcp. in 12.04 this
only works if br0 is configured with a static ip address. it fails
when trying to use dhcp. to simplify testing i've removed eth1 from
the configuration (sanity checked against
http://www.stgraber.org/2012/01/04/networking-in-ubuntu-12-04-lts/ ):
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
bond-master bond0
auto bond0
iface bond0 inet manual
bond-slaves none
bond-mode 802.3ad
bond-miimon 100
auto br0
iface br0 inet dhcp
bridge_ports bond0
bridge_stp off
the above results in a system w/o network connectivity. the dhcp
server reports requests from an unexpected mac addr (different each
boot). udevd logs "timeout 'bridge-network-interface'". poking
around a little before the timeout shows the following 2 groups of
processes:
|-ifup,1361 --allow auto eth0
| `-sh,1363 -c run-parts /etc/network/if-pre-up.d
| `-run-parts,1364 /etc/network/if-pre-up.d
| `-ifenslave,1392 /etc/network/if-pre-up.d/ifenslave
| `-sleep,2380 0.1
| |-udevd,599 --daemon
| | `-bridge-network-,1429 /lib/udev/bridge-network-interface
| | `-ifup,1457 --allow auto br0
| | `-sh,1540 -c dhclient3 -e IF_METRIC=100 -pf /var/run/dhclient.br0.pid -lf /var/lib/dhcp/dhclient.br0.leases -1 br0
| | `-dhclient3,1541 -e IF_METRIC=100 -pf /var/run/dhclient.br0.pid -lf /var/lib/dhcp/dhclient.br0.leases -1 br0
the ifenslave appears to be looping over that `sleep` (testing for
/run/network/ifenslave.bond0) until it is killed and the dhclient is
making its request w/the unexpected mac addr (also reported in `ip
link show br0`). interestingly br0's mac addr matches that of eth0
(as expected) once bridge-network-interface has timed out and been
killed.
a workaround appears to be adding the line:
pre-up /sbin/ifup --allow auto bond0
to the "auto br0" stanza.
ProblemType: Bug
DistroRelease: Ubuntu 12.04
Package: bridge-utils 1.5-2ubuntu6
ProcVersionSignature: Ubuntu 3.2.0-24.38-generic 3.2.16
Uname: Linux 3.2.0-24-generic x86_64
ApportVersion: 2.0.1-0ubuntu7
Architecture: amd64
Date: Wed May 23 13:44:43 2012
ProcEnviron:
TERM=xterm
PATH=(custom, user)
LANG=en_US.UTF-8
SHELL=/usr/bin/zsh
SourcePackage: bridge-utils
UpgradeStatus: No upgrade log present (probably fresh install)
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/bridge-utils/+bug/1003656/+subscriptions
More information about the foundations-bugs
mailing list