On Tue, Mar 7, 2017 at 9:41 AM, Dimitri John Ledkov <[email protected]> wrote:
> On 7 March 2017 at 14:37, Ryan Harper <[email protected]> wrote: > > On Tue, Mar 7, 2017 at 6:27 AM, Dimitri John Ledkov < > [email protected]> > > wrote: > > > >> Should one not restart systemd-networkd after writing out .link et.al. > >> units? > >> > > > > systemd-networkd only deals with .netdev and .network files; .link files > > are handled by udev > > > > > > This occurs during boot, before systemd-networkd starts. > > > > cloud-init-local.service runs before network-pre.target and writes out a > > /etc/netplan/nplan.yaml, > > invokes `netplan generate` which writes out > > /run/systemd/network/10-netplan-xx.{.link,network,netdev} > > as needed; however, the cold plug of devices > (systemd-udev-trigger.service) > > does netplan rename the interfaces? Netplan does not rename interfaces directly; it writes .link files which are processed by udev. cloud-init itself may rename interfaces via ip set link names due to udev refusing to rename interfaces after they've been renamed once. > this will then introduce a race, > ideally we'd want to rename interfaces only once. > All of the renames are in sequence, not parallel so I'm not sure I'm following the race. The kernel boots with one name for the devices; udev will rename the interfaces by policy; then during rootfs boot, any .link files will apply a third rename, if needed. In my case, all of the .link files are matched via MAC, so interface name does not come into play. > (E.g. does udev in the initramfs rename interface from eth0 to e.g. > ens3, and then netplan's .link files rename enc3 again into something > else?) > Yes, see above. > > > happens prior to > > cloud-init-local.service; as it's required for mounting the rootfs among > > other things. > > > > The udev service is also used for device renaming, which would need to > > occur before starting > > networkd. As such, in cloud-init-local, after generating netplan > > configuration, we re-trigger > > the net subsystem events which *should* process any .link files. > > > > The bug, I believe, is that during cloud-init-local execution, udev does > > *not* process the .link files > > prior to starting systemd. > > > > Is there a typo here, and/or can you rephrase this assertion? > cloud-init-local is a systemd unit therefore by definition systemd and > udev are running "during cloud-init-local execution". > Sure. The cloud-init-local unit will do the following things: 1) write /etc/netplan/nplan.yml 2) exec 'netplan generate' 3) exec 'udevadm trigger --subsystem-match=net' After (2), we have .link files in /run/systemd/network/ which *should* get processed by "cold-plugging" the net subsystem(3); but they do not. After boot is complete, one can login and re-run (3) and udev will at that time process the .link files. This bug wonders what the difference is between running (3) under cloud-init-local unit, and as a user logged in after boot is complete. -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1669564 Title: udevadm trigger subsystem-match=net doesn't always run rules To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1669564/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
