Comment 14 for bug 1636708

Revision history for this message
Dan Streetman (ddstreet) wrote :

> networking.service spawns ifup@.services in parallel with no ordering information

no, networking.service calls ifup -a, it doesn't spawn ifup@ services.

ifup -a doesn't bring up interfaces in parallel, it brings them up sequentially as ordered in the /etc/networking/interface file(s). However, while bringing up an interface frequently other interfaces are created which does trigger parallel ifup@ service calls - for example, if bond1 and bond1.2 are both defined, while bond1 is being ifup'ed, the actual bond1 interface is created and processed by udev, which then calls /lib/udev/vlan-network-interface with bond1, which then parses the ifupdown configuration and finds the bond1.2 interface that uses bond1 as its raw-device, and so it runs /etc/network/if-pre-up.d/vlan which creates the bond1.2 interface - that is then processed by udev, which then ifup's it in parallel to bond1's ifup, etc.

> To resolve boot time races, you need to provide manual dependency ordering of the
> ifup@.service systemd units

i don't believe that is entirely correct, but if your suggestion fixes things for @tom-verdaat then great. ifupdown (and the vlan add-on to it) is rather a mess, and i can't wait to move on to netplan with networkd.