It looks like there is some ordering issues: This is a grep through /run/udev/links ; these are checked by udev-dev
# find . -name 'b250*' ./\x2fdisk\x2fby-uuid\x2f0a270acb-56b8-4498-8bad-b3bb149fe869/b250:1 ./\x2fdisk\x2fby-uuid\x2f92b0868d-7e56-4956-8e55-2c90ebee4a72/b250:0 ./\x2fbcache\x2fby-uuid\x2f92d882d8-38cd-4537-847b-6f9c40ba67b4/b250:1 ./\x2fbcache\x2fby-uuid\x2f57e009b1-6bf4-42ea-abe0-334b10941a0b/b250:0 So both /dev/bcache/by-uuid and /dev/disk/by-uuid both point to the bcache device (b250:0) udevd shows this: Nov 30 23:39:10.738290 ubuntu systemd-udevd[465]: LINK 'disk/by-uuid/0a270acb-56b8-4498-8bad-b3bb149fe869' /lib/udev/rules.d/60-persistent-storage.rules:79 Nov 30 23:39:10.738304 ubuntu systemd-udevd[465]: update old name, '/dev/bcache/by-uuid/92d882d8-38cd-4537-847b-6f9c40ba67b4' no longer belonging to '/devices/virtual/block/bcache1' Nov 30 23:39:10.738321 ubuntu systemd-udevd[465]: no reference left, remove '/dev/bcache/by-uuid/92d882d8-38cd-4537-847b-6f9c40ba67b4' Nov 30 23:39:10.738361 ubuntu systemd-udevd[465]: found 'b250:1' claiming '/run/udev/links/\x2fdisk\x2fby-uuid\x2f0a270acb-56b8-4498-8bad-b3bb149fe869' Nov 30 23:39:10.738370 ubuntu systemd-udevd[465]: creating link '/dev/disk/by-uuid/0a270acb-56b8-4498-8bad-b3bb149fe869' to '/dev/bcache1' Nov 30 23:39:10.738380 ubuntu systemd-udevd[465]: preserve already existing symlink '/dev/disk/by-uuid/0a270acb-56b8-4498-8bad-b3bb149fe869' to '../../bcache1' Nov 30 23:39:10.743215 ubuntu systemd-udevd[487]: LINK 'disk/by-uuid/92b0868d-7e56-4956-8e55-2c90ebee4a72' /lib/udev/rules.d/60-persistent-storage.rules:79 Nov 30 23:39:10.743228 ubuntu systemd-udevd[487]: update old name, '/dev/bcache/by-uuid/57e009b1-6bf4-42ea-abe0-334b10941a0b' no longer belonging to '/devices/virtual/block/bcache0' Nov 30 23:39:10.743247 ubuntu systemd-udevd[487]: no reference left, remove '/dev/bcache/by-uuid/57e009b1-6bf4-42ea-abe0-334b10941a0b' Nov 30 23:39:10.743291 ubuntu systemd-udevd[487]: found 'b250:0' claiming '/run/udev/links/\x2fdisk\x2fby-uuid\x2f92b0868d-7e56-4956-8e55-2c90ebee4a72' Nov 30 23:39:10.743302 ubuntu systemd-udevd[487]: creating link '/dev/disk/by-uuid/92b0868d-7e56-4956-8e55-2c90ebee4a72' to '/dev/bcache0' Nov 30 23:39:10.743312 ubuntu systemd-udevd[487]: preserve already existing symlink '/dev/disk/by-uuid/92b0868d-7e56-4956-8e55-2c90ebee4a72' to '../../bcache0' It would seem that the 'no longer belonging to ...bcache1' is the trigger for the removal however, 250:1 is indeed bcache1 device. # ls -al /dev/bcache1 brw-rw---- 1 root disk 250, 1 Nov 30 23:39 /dev/bcache1 Looking at the systemd/udev/udev-event.c it appears that for entries in the current udev database that don't have a new event associated with them get the call to remove the old link void udev_event_execute_rules() ... if (major(udev_device_get_devnum(dev)) > 0) { bool apply; /* remove/update possible left-over symlinks from old database entry */ if (event->dev_db != NULL) udev_node_update_old_links(dev, event->dev_db); Will need to crawl through the db to see what the the event->dev_db entry is and where that get's set. On Thu, Nov 30, 2017 at 2:41 PM, Dmitrii Shcherbakov < 1729...@bugs.launchpad.net> wrote: > Looks like masking systemd-udevd removes this behavior. Need to figure > out where it actually clears everything out. > > ubuntu@maas-xenial4:~$ sudo systemctl mask systemd-udevd > 11:32 PM Created symlink from /etc/systemd/system/systemd-udevd.service > to /dev/null. > > # reboot > > ubuntu@maas-xenial4:~$ ls /dev/bcache/by-uuid/ > 2963855b-3d2b-4387-abd1-3ae788919de4 727212eb-0f0b-4d20-9191-f0577a38454e > 835afacf-6213-48a9-864c-43733822668b aa04ab39-a42c-446f-aff5-addbd9c80e06 > > -- > You received this bug notification because you are subscribed to the bug > report. > https://bugs.launchpad.net/bugs/1729145 > > Title: > /dev/bcache/by-uuid links not created after reboot > > To manage notifications about this bug go to: > https://bugs.launchpad.net/ubuntu/+source/linux/+bug/ > 1729145/+subscriptions > -- You received this bug notification because you are a member of Kernel Packages, which is subscribed to linux in Ubuntu. https://bugs.launchpad.net/bugs/1729145 Title: /dev/bcache/by-uuid links not created after reboot Status in linux package in Ubuntu: Triaged Status in systemd package in Ubuntu: New Status in linux source package in Xenial: Triaged Status in systemd source package in Xenial: New Status in linux source package in Zesty: Triaged Status in systemd source package in Zesty: New Status in linux source package in Artful: Triaged Status in systemd source package in Artful: New Status in linux source package in Bionic: Triaged Status in systemd source package in Bionic: New Bug description: 1. $ lsb_release -rd Description: Ubuntu 17.10 Release: 17.10 2. $ apt-cache policy linux-image-`uname -r` linux-image-4.13.0-16-generic: Installed: 4.13.0-16.19 Candidate: 4.13.0-16.19 Version table: *** 4.13.0-16.19 500 500 http://nova.clouds.archive.ubuntu.com/ubuntu artful/main amd64 Packages 100 /var/lib/dpkg/status 3. After creating some bcache devices and rebooting /dev/bcache/by-uuid/<UUID> -> ../../bcacheN symlinks point to the current bcache device which is caching the dev.uuid found after creating a backing device. 4. /dev/bcache/by-uuid does not exist and there are not symlinks underneath It appears that since the initramfs loads the bcache module which probes and finds all of the cache devices and backing devices then once the rootfs is mounted and udev gets to run, the bcache kernel module does not emit the CACHED_UUID value into the environment if the underlying devices are already registered. In dmesg, one can see that prior to mounting the rootfs, we see bcache register events: [ 5.333973] bcache: register_bdev() registered backing device vdb2 [ 5.354138] bcache: register_bdev() registered backing device vdb4 [ 5.365665] bcache: register_bdev() registered backing device vdb3 [ 5.397720] bcache: bch_journal_replay() journal replay done, 0 keys in 1 entries, seq 1 [ 5.428683] bcache: register_cache() registered cache device vdb1 then rootfs ismounted and systemd starts systemd-udev [ 9.350889] systemd[1]: Listening on udev Kernel Socket. And then the coldplug replay of kernel events triggers /lib/udev/rules.d/69-bcache.rules which invokes /lib/udev/bcache-register which writes the device name (/dev/vdb1 or /dev/bcache0) into /sys/fs/bcache/register and results is the bcache kernel driver attempting to register the block device. However, there is already a bcache device associated already and registration fails [ 11.173141] bcache: register_bcache() error opening /dev/vdb2: device already registered [ 11.184617] bcache: register_bcache() error opening /dev/vdb3: device already registered [ 11.199130] bcache: register_bcache() error opening /dev/vdb1: device already registered [ 11.271694] bcache: register_bcache() error opening /dev/vdb4: device already registered The problem then is that only a kernel call to bch_cached_dev_run() which happens like this: bcache_register() register_bdev() bch_cached_dev_run() kobject_uevent_env(&disk_to_dev(d->disk)->kobj, KOBJ_CHANGE, env); where env includes: "DRIVER=bcache", kasprintf(GFP_KERNEL, "CACHED_UUID=%pU", dc->sb.uuid), NULL, NULL, }; Since that event is not emitted for any previously registered device, then the symlink will not be created. ProblemType: Bug DistroRelease: Ubuntu 17.10 Package: linux-image-4.13.0-16-generic 4.13.0-16.19 ProcVersionSignature: User Name 4.13.0-16.19-generic 4.13.4 Uname: Linux 4.13.0-16-generic x86_64 AlsaDevices: total 0 crw-rw---- 1 root audio 116, 1 Oct 31 22:09 seq crw-rw---- 1 root audio 116, 33 Oct 31 22:09 timer AplayDevices: Error: [Errno 2] No such file or directory: 'aplay': 'aplay' ApportVersion: 2.20.7-0ubuntu3.1 Architecture: amd64 ArecordDevices: Error: [Errno 2] No such file or directory: 'arecord': 'arecord' AudioDevicesInUse: Error: command ['fuser', '-v', '/dev/snd/seq', '/dev/snd/timer'] failed with exit code 1: CRDA: N/A Date: Wed Nov 1 01:39:01 2017 Ec2AMI: ami-0000030b Ec2AMIManifest: FIXME Ec2AvailabilityZone: nova Ec2InstanceType: m1.small Ec2Kernel: unavailable Ec2Ramdisk: unavailable IwConfig: Error: [Errno 2] No such file or directory: 'iwconfig': 'iwconfig' Lsusb: Bus 001 Device 002: ID 0627:0001 Adomax Technology Co., Ltd Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub MachineType: OpenStack Foundation OpenStack Nova PciMultimedia: ProcEnviron: TERM=xterm PATH=(custom, no user) XDG_RUNTIME_DIR=<set> LANG=C.UTF-8 SHELL=/bin/bash ProcFB: ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-4.13.0-16-generic root=LABEL=cloudimg-rootfs ro console=tty1 console=ttyS0 RelatedPackageVersions: linux-restricted-modules-4.13.0-16-generic N/A linux-backports-modules-4.13.0-16-generic N/A linux-firmware N/A RfKill: Error: [Errno 2] No such file or directory: 'rfkill': 'rfkill' SourcePackage: linux UpgradeStatus: No upgrade log present (probably fresh install) dmi.bios.date: 04/01/2014 dmi.bios.vendor: SeaBIOS dmi.bios.version: 1.10.1-1ubuntu1~cloud0 dmi.chassis.type: 1 dmi.chassis.vendor: QEMU dmi.chassis.version: pc-i440fx-zesty dmi.modalias: dmi:bvnSeaBIOS:bvr1.10.1-1ubuntu1~cloud0:bd04/01/2014:svnOpenStackFoundation:pnOpenStackNova:pvr15.0.7:cvnQEMU:ct1:cvrpc-i440fx-zesty: dmi.product.family: Virtual Machine dmi.product.name: OpenStack Nova dmi.product.version: 15.0.7 dmi.sys.vendor: OpenStack Foundation To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1729145/+subscriptions -- Mailing list: https://launchpad.net/~kernel-packages Post to : kernel-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp