-
-
Notifications
You must be signed in to change notification settings - Fork 4.3k
Description
systemd version the issue has been seen with
256
Used distribution
Ubuntu 24.10
Linux kernel version used
6.8.0-31-generic
CPU architectures issue was seen on
x86_64
Component
systemd-networkd, udevadm
Expected behaviour you didn't see
Network hardware-offloading settings, as defined in .link files, and queried via ethtool are not applied after triggering udev CHANGE events.
I think this is related to 0c3af33 as I can see the following log message in my systemd-udevd debug log:
Enabling debug logging in systemd-udevd I can especially see this log message:
enp5s0: Not applying .link settings on 'change' uevent.
Looks like ethtool settings (like the offloading bits) are only applied for ADD, BIND, or MOVE events on systemd v256+, not on CHANGE events any more, as it used to be previously.
This is causing issues for Netplan in Ubuntu Oracular (24.10) and Debian unstable:
- CLI:apply: call udevadm trigger, using --action=move (Closes: #1071220) (LP: #2066344, LP: #2071363) canonical/netplan#479
- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1071220
Unexpected behaviour you saw
No response
Steps to reproduce the problem
On systemd 256
System status after reboot (kernel defaults used for offloading options):
root@oo-vm:~# apt list systemd
systemd/oracular-proposed,now 256-1ubuntu1 amd64 [installed,automatic]
root@oo-vm:~# cat /etc/systemd/network/10-test.network
[Match]
Name=enp5s0
[Network]
DHCP=true
root@oo-vm:~# networkctl status enp5s0 | grep "Link File"
Link File: /usr/lib/systemd/network/99-default.link
root@oo-vm:~# ethtool -k enp5s0 | grep tx-checksumming
tx-checksumming: on
Preparing a test case at runtime:
root@oo-vm:~# cat 10-test.link
[Match]
OriginalName=enp5s0
[Link]
ReceiveChecksumOffload=false
TransmitChecksumOffload=false
TCPSegmentationOffload=false
TCP6SegmentationOffload=false
GenericSegmentationOffload=false
GenericReceiveOffload=false
root@oo-vm:~# cp 10-test.link /etc/systemd/network/
Using udevadm to trigger --action=change events is not enough to get the offloading options applied:
root@oo-vm:~# udevadm control --reload
root@oo-vm:~# udevadm trigger --subsystem-match=net --settle
root@oo-vm:~# networkctl status enp5s0 | grep "Link File"
Link File: /usr/lib/systemd/network/99-default.link
root@oo-vm:~# ethtool -k enp5s0 | grep tx-checksumming
tx-checksumming: on
See last line here ^, tx-checksumming is still "on" even though, we defined TransmitChecksumOffload=false and the 10-test.link "Link File" was not picked up.
It works when using --action=move (or add, or bind), though:
root@oo-vm:~# udevadm control --reload
root@oo-vm:~# udevadm trigger --action=move --subsystem-match=net --settle
root@oo-vm:~# networkctl status enp5s0 | grep "Link File"
Link File: /etc/systemd/network/10-test.link
root@oo-vm:~# ethtool -k enp5s0 | grep tx-checksumming
tx-checksumming: off
On systemd 255
System status after reboot (kernel defaults used for offloading options):
root@oo-vm-255:~# apt list systemd
systemd/oracular,now 255.4-1ubuntu8 amd64 [installed,automatic]
root@oo-vm-255:~# cat /etc/systemd/network/10-test.network
[Match]
Name=enp5s0
[Network]
DHCP=true
root@oo-vm-255:~# networkctl status enp5s0 | grep "Link File"
Link File: /usr/lib/systemd/network/99-default.link
root@oo-vm-255:~# ethtool -k enp5s0 | grep tx-checksumming
tx-checksumming: on
Preparing the exactly same test case at runtime:
root@oo-vm-255:~# cat 10-test.link
[Match]
OriginalName=enp5s0
[Link]
ReceiveChecksumOffload=false
TransmitChecksumOffload=false
TCPSegmentationOffload=false
TCP6SegmentationOffload=false
GenericSegmentationOffload=false
GenericReceiveOffload=false
root@oo-vm-255:~# cp 10-test.link /etc/systemd/network/
Using udevadm to trigger --action=change events is enough to get the offloading options applied:
root@oo-vm-255:~# udevadm control --reload
root@oo-vm-255:~# udevadm trigger --subsystem-match=net --settle
root@oo-vm-255:~# networkctl status enp5s0 | grep "Link File"
Link File: /etc/systemd/network/10-test.link
root@oo-vm-255:~# ethtool -k enp5s0 | grep tx-checksumming
tx-checksumming: on
Here it picks up the new .link file and offloading settings, by triggering the default --action=change events.
Additional program output to the terminal or log subsystem illustrating the issue
Jul 03 12:56:17 oo-vm systemd-udevd[394]: Reading rules file: /usr/lib/udev/rules.d/77-mm-telit-port-types.rules
Jul 03 12:56:17 oo-vm systemd-udevd[394]: Reading rules file: /usr/lib/udev/rules.d/77-mm-tplink-port-types.rules
Jul 03 12:56:17 oo-vm systemd-udevd[394]: Reading rules file: /usr/lib/udev/rules.d/77-mm-ublox-port-types.rules
Jul 03 12:56:17 oo-vm systemd-udevd[394]: Reading rules file: /usr/lib/udev/rules.d/77-mm-x22x-port-types.rules
Jul 03 12:56:17 oo-vm systemd-udevd[394]: Reading rules file: /usr/lib/udev/rules.d/77-mm-zte-port-types.rules
Jul 03 12:56:17 oo-vm systemd-udevd[394]: Reading rules file: /usr/lib/udev/rules.d/78-graphics-card.rules
Jul 03 12:56:17 oo-vm systemd-udevd[394]: Reading rules file: /usr/lib/udev/rules.d/78-sound-card.rules
Jul 03 12:56:17 oo-vm systemd-udevd[394]: Reading rules file: /usr/lib/udev/rules.d/80-debian-compat.rules
Jul 03 12:56:17 oo-vm systemd-udevd[394]: Reading rules file: /usr/lib/udev/rules.d/80-drivers.rules
Jul 03 12:56:17 oo-vm systemd-udevd[394]: Reading rules file: /usr/lib/udev/rules.d/80-mm-candidate.rules
Jul 03 12:56:17 oo-vm systemd-udevd[394]: Reading rules file: /usr/lib/udev/rules.d/80-net-setup-link.rules
Jul 03 12:56:17 oo-vm systemd-udevd[394]: Reading rules file: /usr/lib/udev/rules.d/80-udisks2.rules
Jul 03 12:56:17 oo-vm systemd-udevd[394]: Reading rules file: /usr/lib/udev/rules.d/81-net-dhcp.rules
Jul 03 12:56:17 oo-vm systemd-udevd[394]: Reading rules file: /usr/lib/udev/rules.d/85-hdparm.rules
Jul 03 12:56:17 oo-vm systemd-udevd[394]: Reading rules file: /usr/lib/udev/rules.d/90-bolt.rules
Jul 03 12:56:17 oo-vm systemd-udevd[394]: Reading rules file: /usr/lib/udev/rules.d/90-console-setup.rules
Jul 03 12:56:17 oo-vm systemd-udevd[394]: Reading rules file: /usr/lib/udev/rules.d/90-fwupd-devices.rules
Jul 03 12:56:17 oo-vm systemd-udevd[394]: Reading rules file: /usr/lib/udev/rules.d/90-iocost.rules
Jul 03 12:56:17 oo-vm systemd-udevd[394]: Reading rules file: /run/udev/rules.d/90-netplan.rules
Jul 03 12:56:17 oo-vm systemd-udevd[394]: Reading rules file: /usr/lib/udev/rules.d/95-dm-notify.rules
Jul 03 12:56:17 oo-vm systemd-udevd[394]: Reading rules file: /usr/lib/udev/rules.d/95-kpartx.rules
Jul 03 12:56:17 oo-vm systemd-udevd[394]: Reading rules file: /usr/lib/udev/rules.d/96-e2scrub.rules
Jul 03 12:56:17 oo-vm systemd-udevd[394]: Reading rules file: /usr/lib/udev/rules.d/99-lxd-agent.rules
Jul 03 12:56:17 oo-vm systemd-udevd[394]: Reading rules file: /usr/lib/udev/rules.d/99-systemd.rules
Jul 03 12:56:17 oo-vm systemd-udevd[394]: Reading rules file: /usr/lib/udev/rules.d/99-vmware-scsi-udev.rules
Jul 03 12:56:18 oo-vm systemd-udevd[394]: enp5s0: Device is queued (SEQNUM=3129, ACTION=change)
Jul 03 12:56:18 oo-vm systemd-udevd[394]: enp5s0: Device ready for processing (SEQNUM=3129, ACTION=change)
Jul 03 12:56:18 oo-vm systemd-udevd[394]: Successfully forked off '(udev-worker)' as PID 993.
Jul 03 12:56:18 oo-vm systemd-udevd[394]: enp5s0: Worker [993] is forked for processing SEQNUM=3129.
Jul 03 12:56:18 oo-vm (udev-worker)[993]: enp5s0: Processing device (SEQNUM=3129, ACTION=change)
Jul 03 12:56:18 oo-vm (udev-worker)[993]: enp5s0: sd-device: Created database file '/run/udev/data/n2' for '/devices/p>
Jul 03 12:56:18 oo-vm (udev-worker)[993]: value '[dmi/id]sys_vendor' is 'QEMU'
Jul 03 12:56:18 oo-vm (udev-worker)[993]: value '[dmi/id]sys_vendor' is 'QEMU'
Jul 03 12:56:18 oo-vm (udev-worker)[993]: enp5s0: /usr/lib/udev/rules.d/50-udev-default.rules:31 Importing properties >
Jul 03 12:56:18 oo-vm (udev-worker)[993]: enp5s0: /usr/lib/udev/rules.d/75-net-description.rules:6 Importing propertie>
Jul 03 12:56:18 oo-vm (udev-worker)[993]: enp5s0: No entry found from hwdb.
Jul 03 12:56:18 oo-vm (udev-worker)[993]: enp5s0: /usr/lib/udev/rules.d/75-net-description.rules:6 Failed to run built>
Jul 03 12:56:18 oo-vm (udev-worker)[993]: enp5s0: /usr/lib/udev/rules.d/75-net-description.rules:8 Importing propertie>
Jul 03 12:56:18 oo-vm systemd-udevd[394]: lo: Device is queued (SEQNUM=3130, ACTION=change)
Jul 03 12:56:18 oo-vm systemd-udevd[394]: lo: Device ready for processing (SEQNUM=3130, ACTION=change)
Jul 03 12:56:18 oo-vm systemd-udevd[394]: Successfully forked off '(udev-worker)' as PID 995.
Jul 03 12:56:18 oo-vm systemd-udevd[394]: lo: Worker [995] is forked for processing SEQNUM=3130.
Jul 03 12:56:18 oo-vm systemd-udevd[394]: Received udev control message (PING)
Jul 03 12:56:18 oo-vm (udev-worker)[995]: lo: Processing device (SEQNUM=3130, ACTION=change)
Jul 03 12:56:18 oo-vm (udev-worker)[995]: lo: sd-device: Created database file '/run/udev/data/n1' for '/devices/virtu>
Jul 03 12:56:18 oo-vm (udev-worker)[995]: value '[dmi/id]sys_vendor' is 'QEMU'
Jul 03 12:56:18 oo-vm (udev-worker)[995]: value '[dmi/id]sys_vendor' is 'QEMU'
Jul 03 12:56:18 oo-vm (udev-worker)[995]: lo: /usr/lib/udev/rules.d/50-udev-default.rules:31 Importing properties from>
Jul 03 12:56:18 oo-vm (udev-worker)[995]: lo: Querying driver name via ethtool API is not supported by device 'lo', ig>
Jul 03 12:56:18 oo-vm (udev-worker)[995]: lo: /usr/lib/udev/rules.d/75-net-description.rules:6 Importing properties fr>
Jul 03 12:56:18 oo-vm (udev-worker)[995]: lo: No entry found from hwdb.
Jul 03 12:56:18 oo-vm (udev-worker)[995]: lo: /usr/lib/udev/rules.d/75-net-description.rules:6 Failed to run builtin '>
Jul 03 12:56:18 oo-vm (udev-worker)[995]: lo: /usr/lib/udev/rules.d/75-net-description.rules:8 Importing properties fr>
Jul 03 12:56:18 oo-vm (udev-worker)[995]: lo: Failed to determine prefix for network interface naming, ignoring: Opera>
Jul 03 12:56:18 oo-vm (udev-worker)[995]: lo: /usr/lib/udev/rules.d/80-net-setup-link.rules:5 Importing properties fro>
Jul 03 12:56:18 oo-vm (udev-worker)[995]: lo: /usr/lib/udev/rules.d/80-net-setup-link.rules:5 Failed to run builtin 'p>
Jul 03 12:56:18 oo-vm (udev-worker)[995]: lo: /usr/lib/udev/rules.d/80-net-setup-link.rules:9 Importing properties fro>
Jul 03 12:56:18 oo-vm (udev-worker)[995]: lo: Not applying .link settings on 'change' uevent.
Jul 03 12:56:18 oo-vm (udev-worker)[995]: lo: /usr/lib/udev/rules.d/80-net-setup-link.rules:11 NAME 'lo'
Jul 03 12:56:18 oo-vm (udev-worker)[995]: lo: sd-device: Created database file '/run/udev/data/n1' for '/devices/virtu>
Jul 03 12:56:18 oo-vm (udev-worker)[995]: lo: sd-device: Created database file '/run/udev/data/n1' for '/devices/virtu>
Jul 03 12:56:18 oo-vm (udev-worker)[995]: lo: Device processed (SEQNUM=3130, ACTION=change)
Jul 03 12:56:18 oo-vm (udev-worker)[995]: lo: sd-device-monitor(worker): Passed 230 byte to netlink monitor.
Jul 03 12:56:18 oo-vm (udev-worker)[993]: enp5s0: MAC address identifier: hw_addr=00:16:3e:77:21:d0 → x00163e7721d0
Jul 03 12:56:18 oo-vm (udev-worker)[993]: sd-device: Failed to chase symlinks in "/sys/devices/pci0000:00/0000:00:01.4>
Jul 03 12:56:18 oo-vm (udev-worker)[993]: virtio10: Failed to get 'of_node' child device: No such device
Jul 03 12:56:18 oo-vm (udev-worker)[993]: sd-device: Failed to chase symlinks in "/sys/devices/pci0000:00/0000:00:01.4>
Jul 03 12:56:18 oo-vm (udev-worker)[993]: 0000:05:00.0: Failed to get PCI onboard label: No such file or directory
Jul 03 12:56:18 oo-vm (udev-worker)[993]: 0000:05:00.0: Could not obtain onboard index: No such file or directory
Jul 03 12:56:18 oo-vm (udev-worker)[993]: enp5s0: PCI path identifier: domain=n/a bus_and_slot=p5s0 func=n/a port=n/a >
Jul 03 12:56:18 oo-vm (udev-worker)[993]: enp5s0: Could not find usb parent device: No such file or directory
Jul 03 12:56:18 oo-vm (udev-worker)[993]: enp5s0: Could not get bcma parent device: No such file or directory
Jul 03 12:56:18 oo-vm (udev-worker)[993]: enp5s0: /usr/lib/udev/rules.d/75-net-description.rules:14 Importing properti>
Jul 03 12:56:18 oo-vm (udev-worker)[993]: enp5s0: hwdb modalias key: "pci:v00001AF4d00001041sv00001AF4sd00001100bc02sc>
Jul 03 12:56:18 oo-vm (udev-worker)[993]: enp5s0: /usr/lib/udev/rules.d/80-net-setup-link.rules:5 Importing properties>
Jul 03 12:56:18 oo-vm (udev-worker)[993]: enp5s0: /usr/lib/udev/rules.d/80-net-setup-link.rules:9 Importing properties>
Jul 03 12:56:18 oo-vm (udev-worker)[993]: enp5s0: Not applying .link settings on 'change' uevent.
Jul 03 12:56:18 oo-vm (udev-worker)[993]: enp5s0: /usr/lib/udev/rules.d/80-net-setup-link.rules:11 NAME 'enp5s0'
Jul 03 12:56:18 oo-vm (udev-worker)[993]: enp5s0: sd-device: Created database file '/run/udev/data/n2' for '/devices/p>
Jul 03 12:56:18 oo-vm (udev-worker)[993]: enp5s0: sd-device: Created database file '/run/udev/data/n2' for '/devices/p>
Jul 03 12:56:18 oo-vm (udev-worker)[993]: enp5s0: Device processed (SEQNUM=3129, ACTION=change)
Jul 03 12:56:18 oo-vm (udev-worker)[993]: enp5s0: sd-device-monitor(worker): Passed 870 byte to netlink monitor.
Jul 03 12:56:18 oo-vm systemd-udevd[394]: No events are queued, removing /run/udev/queue.
Jul 03 12:56:21 oo-vm systemd-udevd[394]: Cleanup idle workers
Jul 03 12:56:21 oo-vm systemd-udevd[394]: Worker [993] exited.