udev: boot script does not trigger subsystem coldplug

Bug #1713536 reported by bugproxy on 2017-08-28
14
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Ubuntu on IBM z Systems
Medium
Canonical Foundations Team
systemd (Ubuntu)
Status tracked in Artful
Xenial
Undecided
Unassigned
Zesty
Undecided
Unassigned
Artful
Undecided
Skipper Bug Screeners

Bug Description

[Impact]
subsystems udev rules are not processed on boot, thus resulting in missing devices on boot / before rootfs is mounted.

[Solution]
trigger udev subsystems and devices, in the initramfs, in that order.

[Testcase]
Boot s390x system with chzdev configured devices, and cio_ignore=all kernel command line parameter. The chzdev configured devices should still be discovered on boot.

[Original Bug report]

The udev initramfs-tools boot script does not trigger subsystem "add" uevents. As a result, udev rules that listen to subsystem "add" events are never activated. This problem exists on at least Ubuntu 16.04 and 17.10.

On s390, this results in a boot failure if the kernel is configured to start with an active device black list (kernel parameter cio_ignore=all,!condev). An example for an affected udev rule looks like this:

    ACTION=="add", SUBSYSTEM=="subsystem", KERNEL=="ccw", RUN{program}+="/bin/sh -c 'echo free 0009,ec30,ec32,f5f0-f5f2 > /proc/cio_ignore'"

A proposed fix would be:

Modify /usr/share/initramfs-tools/scripts/init-top/udev:

Replace line
        udevadm trigger --action=add
with
        udevadm trigger --type=subsystems --action=add
        udevadm trigger --type=devices --action=add

This would also be consistent with the steps that the systemd udev coldplug unit file performs (see /lib/systemd/system/systemd-udev-trigger.service).

[Regression Potential]
More udev rules will be now triggered, earlier, during initramfs stage of boot rather than post-pivot-root. However, this is inline with current rootfs behaviour and thus should not regress behaviour - simply some rules will get triggered earlier.

bugproxy (bugproxy) on 2017-08-28
tags: added: architecture-s39064 bugnameltc-158070 severity-medium targetmilestone-inin1604
Changed in ubuntu:
assignee: nobody → Skipper Bug Screeners (skipper-screen-team)
affects: ubuntu → initramfs-tools-ubuntu-touch (Ubuntu)
Steve Langasek (vorlon) on 2017-08-28
affects: initramfs-tools-ubuntu-touch (Ubuntu) → systemd (Ubuntu)
Changed in ubuntu-power-systems:
importance: Undecided → Medium
assignee: nobody → Canonical Foundations Team (canonical-foundations)
affects: ubuntu-power-systems → ubuntu-z-systems
Changed in systemd (Ubuntu):
status: New → Confirmed
Changed in systemd (Ubuntu Artful):
status: Confirmed → Fix Committed
Changed in systemd (Ubuntu Zesty):
status: New → In Progress
description: updated
description: updated
Changed in systemd (Ubuntu Xenial):
status: New → In Progress

Hello bugproxy, or anyone else affected,

Accepted systemd into zesty-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/systemd/232-21ubuntu6 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed.Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested and change the tag from verification-needed-zesty to verification-done-zesty. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-zesty. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Changed in systemd (Ubuntu Zesty):
status: In Progress → Fix Committed
tags: added: verification-needed verification-needed-zesty
Changed in ubuntu-z-systems:
status: New → In Progress

------- Comment From <email address hidden> 2017-09-11 08:12 EDT-------
Fix successfully verified on Ubuntu 17.04 with udev package version 232-21ubuntu6.

tags: added: verification-done verification-done-zesty
removed: verification-needed verification-needed-zesty
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package systemd - 234-2ubuntu10

---------------
systemd (234-2ubuntu10) artful; urgency=medium

  * Do not fail debootstrap if /etc/resolv.conf is immutable. (LP: #1713212)
  * Revert "Create /etc/resolv.conf on resolved start, if it is an empty file."
    As it is ineffective, and correct creation of /etc/resolv.conf has been fixed.
    This reverts commit ccba42504f216f6ffbc54eb2c9af347355f8d86b.
  * initramfs-tools: trigger udevadm add actions with subsystems first.
    This updates the initramfs-tools init-top udev script to trigger udevadm
    actions with type specified. This mimicks the
    systemd-udev-trigger.service. Without type specified only devices are
    triggered, but triggering subsystems may also be required and should happen
    before triggering the devices. This is the case for example on s390x with zdev
    generated udev rules. (LP: #1713536)

 -- Dimitri John Ledkov <email address hidden> Wed, 30 Aug 2017 11:22:41 +0100

Changed in systemd (Ubuntu Artful):
status: Fix Committed → Fix Released

Hello bugproxy, or anyone else affected,

Accepted systemd into xenial-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/systemd/229-4ubuntu20 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed.Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested and change the tag from verification-needed-xenial to verification-done-xenial. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-xenial. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Changed in systemd (Ubuntu Xenial):
status: In Progress → Fix Committed
tags: added: verification-needed verification-needed-xenial
removed: verification-done
Changed in ubuntu-z-systems:
status: In Progress → Fix Committed
Dimitri John Ledkov (xnox) wrote :

Used 229-4ubuntu19, added set +x at the top of the init-top/udev script and booted with break=bottom to clearly observe initramfs boot messages and check that there is only one (devices) trigger.

Upgraded to 229-4ubuntu20, added set +x at the top of the init-top/udev script booted again and clearly boserved that subsystems and devices are triggered.

tags: added: verification-done verification-done-xenial
removed: verification-needed verification-needed-xenial
Brian Murray (brian-murray) wrote :

Hello bugproxy, or anyone else affected,

Accepted systemd into zesty-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/systemd/232-21ubuntu7 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed.Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested and change the tag from verification-needed-zesty to verification-done-zesty. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-zesty. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

tags: added: verification-needed verification-needed-zesty
removed: verification-done verification-done-zesty
Dimitri John Ledkov (xnox) wrote :

With systemd 232-21ubuntu7 installed, changing default boot param to break=bottom, and added set -x to the udev init-top script and rebooting.

Observed that in the console boot log that both subsystems and devices are triggered.

tags: added: verification-done verification-done-zesty
removed: verification-needed verification-needed-zesty
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers