Comment 11 for bug 1729145

Revision history for this message
Dmitrii Shcherbakov (dmitriis) wrote :

We do run udevd at the initramfs stage in init-top and stop it in init-bottom:

➜ scripts git:(ubuntu/xenial-updates) ✗ grep -RiP udev
init-bottom/udev:# Stop udevd, we'll miss a few events while we run init, but we catch up
init-bottom/udev:udevadm control --exit

init-top/udev:SYSTEMD_LOG_LEVEL=$log_level /lib/systemd/systemd-udevd --daemon --resolve-names=never
init-top/udev:udevadm trigger --type=subsystems --action=add
init-top/udev:udevadm trigger --type=devices --action=add
init-top/udev:udevadm settle || true

And, from what I can see after adding some logging to the udev rule and updating initramfs, KOBJ_CHANGE events generated by the bcache driver are processed by 69-bcache.rules:

http://paste.ubuntu.com/26080228/ (rule)

https://paste.ubuntu.com/26080236/ (dmesg)
[ 1.789254] AFTER DRIVER BCACHE: devpath: /devices/virtual/block/bcache0 UUID: dd563676-f731-420c-a65d-93992321eb14, LABEL:
[ 1.790563] AFTER DRIVER BCACHE: devpath: /devices/virtual/block/bcache1 UUID: 3aec199f-d1d7-452f-a56d-9c946c72cae1, LABEL:
[ 1.794265] PROBING BCACHE /devices/virtual/block/bcache3
[ 1.795957] BEFORE DRIVER BCACHE /devices/virtual/block/bcache3
[ 1.798215] AFTER DRIVER BCACHE: devpath: /devices/virtual/block/bcache3 UUID: 2c8f2de3-a1a5-4f53-ad00-09294eb19512, LABEL:
[ 1.801311] PROBING BCACHE /devices/virtual/block/bcache2
[ 1.803180] BEFORE DRIVER BCACHE /devices/virtual/block/bcache2
[ 1.804731] AFTER DRIVER BCACHE: devpath: /devices/virtual/block/bcache2 UUID: dcdb4830-78f2-494a-905b-efa549b484fc, LABEL:

So the UUID is present in the environment of the CHANGE uevent but the symlink is not present when I ssh into the system after the boot process.

I wonder why that happens as devtmpfs mounted at /dev is moved to the new rootfs before init script exits and systemd is started - so if it's created on that devtmpfs, it should be there at the end:

https://git.launchpad.net/~usd-import-team/ubuntu/+source/systemd/tree/debian/extra/initramfs-tools/scripts/init-bottom/udev?h=applied/ubuntu/xenial-updates