Hi Ed, I looked into this, and the issue only happens if such interfaces (with state DOWN and NO-CARRIER) are managed by systemd-networkd (check with 'networkctl list').
Per systemd-networkd-wait-online.service man page [1]: 'By default, it will wait for all links it is aware of and which are managed by systemd-networkd.service(8) to be fully configured or failed,' [1] https://www.freedesktop.org/software/systemd/man/systemd-networkd- wait-online.service.html The issue can be reproduced in a VM with a NIC configured in libvirt XML as "<interface type='ethernet'><link state=down'/></interface>" that is managed by netplan. Steps below. Hope this helps, Mauricio --- Create a VM (bionic): --- $ uvt-simplestreams-libvirt sync release=bionic arch=amd64 $ uvt-kvm create --cpu 2 --memory 2048 --disk 4 --password password bionic release=bionic arch=amd64 $ uvt-kvm wait bionic Give it an ethernet interface with link down: --- $ virsh edit bionic ... <interface type='ethernet'> <model type='virtio'/> <link state='down'/> </interface> ... Re-start the VM: --- $ virsh shutdown bionic $ virsh start bionic $ uvt-kvm wait bionic $ uvt-kvm ssh bionic Check that systemd-networkd-wait-online.service is happy with 'ens3' only: --- By default, only the 'ens3' interface is configured in netplan (thus managed by systemd-networkd, default renderer in netplan). $ ip -o l 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000\ link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000\ link/ether 52:54:00:b8:ff:f1 brd ff:ff:ff:ff:ff:ff 3: ens7: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000\ link/ether 52:54:00:fb:c6:b6 brd ff:ff:ff:ff:ff:ff $ grep -r ens[0-9]: /etc/netplan /etc/netplan/50-cloud-init.yaml: ens3: $ ls -1 /run/systemd/network/*.network /run/systemd/network/10-netplan-ens3.network Notice that the 'ens7' interface (other/new) SETUP status is 'unmanaged': $ sudo networkctl list IDX LINK TYPE OPERATIONAL SETUP 1 lo loopback carrier unmanaged 2 ens3 ether routable configured 3 ens7 ether off unmanaged 3 links listed. Thus, despite being 'state DOWN', systemd-networkd-wait-online.service doesn't care, and succeeds: $ systemctl status systemd-networkd-wait-online.service | grep Process Process: 611 ExecStart=/lib/systemd/systemd-networkd-wait-online (code=exited, status=0/SUCCESS) Check that systemd-networkd-wait-online.service gets unhappy with 'ens7' too: --- If you just configure 'ens7' in netplan, even without setting/getting IP: $ cat <<EOF | sudo tee /etc/netplan/ens7.yaml network: ethernets: ens7: match: macaddress: 52:54:00:fb:c6:b6 set-name: ens7 version: 2 EOF $ sudo netplan apply $ grep -r ens[0-9]: /etc/netplan /etc/netplan/ens7.yaml: ens7: /etc/netplan/50-cloud-init.yaml: ens3: $ ls -1 /run/systemd/network/*.network /run/systemd/network/10-netplan-ens3.network /run/systemd/network/10-netplan-ens7.network Now systemd-networkd-wait-online.service cares about it (SETUP status is 'configuring'): $ sudo networkctl list IDX LINK TYPE OPERATIONAL SETUP 1 lo loopback carrier unmanaged 2 ens3 ether routable configured 3 ens7 ether no-carrier configuring 3 links listed. And sure enough, systemd-networkd-wait-online.service now times out: $ time sudo systemctl restart systemd-networkd-wait-online.service <... wait ...> Job for systemd-networkd-wait-online.service failed because the control process exited with error code. See "systemctl status systemd-networkd-wait-online.service" and "journalctl -xe" for details. real 2m0.260s user 0m0.012s sys 0m0.011s $ systemctl status systemd-networkd-wait-online.service ● systemd-networkd-wait-online.service - Wait for Network to be Configured ... Process: 1215 ExecStart=/lib/systemd/systemd-networkd-wait-online (code=exited, status=1/FAILURE) Main PID: 1215 (code=exited, status=1/FAILURE) ... Feb 12 00:01:08 bionic systemd-networkd-wait-online[1215]: Event loop failed: Connection timed out Feb 12 00:01:08 bionic systemd[1]: systemd-networkd-wait-online.service: Main process exited, code=exited, status=1/FAILURE Feb 12 00:01:08 bionic systemd[1]: systemd-networkd-wait-online.service: Failed with result 'exit-code'. Feb 12 00:01:08 bionic systemd[1]: Failed to start Wait for Network to be Configured. Also, notice that the NO-CARRIER bit only showed up now, presumably after systemd-networkd set the bit UP: $ ip -o l 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000\ link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000\ link/ether 52:54:00:b8:ff:f1 brd ff:ff:ff:ff:ff:ff 3: ens7: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000\ link/ether 52:54:00:fb:c6:b6 brd ff:ff:ff:ff:ff:ff ubuntu@bionic:~$ -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1838607 Title: vaultlocker service fails when some interface are DOWN with NO-CARRIER To manage notifications about this bug go to: https://bugs.launchpad.net/bionic-backports/+bug/1838607/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
