Dec 01 05:07:25.679368 ubuntu systemd-udevd[474]: LINK
'disk/by-uuid/0a270acb-56b8-4498-8bad-b3bb149fe869'
/lib/udev/rules.d/60-persistent-storage.rules:79
Dec 01 05:07:25.683008 ubuntu systemd-udevd[474]: WARK:
dev_old_name=/dev/bcache/by-uuid/92d882d8-38cd-4537-847b-6f9c40ba67b4
dev_old_path=/devices/virtual/block/bcache0
Dec 01 05:07:25.683042 ubuntu systemd-udevd[474]: WARK:
dev_name=/dev/disk/by-uuid/0a270acb-56b8-4498-8bad-b3bb149fe869
dev_path=/devices/virtual/block/bcache0
Dec 01 05:07:25.683066 ubuntu systemd-udevd[474]: WARK:
streq(name=/dev/bcache/by-uuid/92d882d8-38cd-4537-847b-6f9c40ba67b4,
name_current=/dev/disk/by-uuid/0a270acb-56b8-4498-8bad-b3bb149fe869)
Dec 01 05:07:25.683076 ubuntu systemd-udevd[474]: update old name,
'/dev/bcache/by-uuid/92d882d8-38cd-4537-847b-6f9c40ba67b4' no longer
belonging to '/devices/virtual/block/bcache0'
Dec 01 05:07:25.683085 ubuntu systemd-udevd[474]: WARK:
link_update(name=/dev/bcache/by-uuid/92d882d8-38cd-4537-847b-6f9c40ba67b4,
false
Dec 01 05:07:25.683094 ubuntu systemd-udevd[474]: no reference left, remove
'/dev/bcache/by-uuid/92d882d8-38cd-4537-847b-6f9c40ba67b4'
Dec 01 05:07:25.683104 ubuntu systemd-udevd[474]: WARK:
dev_old_name=/dev/disk/by-uuid/0a270acb-56b8-4498-8bad-b3bb149fe869
dev_old_path=/devices/virtual/block/bcache0
Dec 01 05:07:25.683113 ubuntu systemd-udevd[474]: WARK:
dev_name=/dev/disk/by-uuid/0a270acb-56b8-4498-8bad-b3bb149fe869
dev_path=/devices/virtual/block/bcache0
Dec 01 05:07:25.683122 ubuntu systemd-udevd[474]: WARK:
streq(name=/dev/disk/by-uuid/0a270acb-56b8-4498-8bad-b3bb149fe869,
name_current=/dev/disk/by-uuid/0a270acb-56b8-4498-8bad-b3bb149fe869)
Dec 01 05:07:25.683131 ubuntu systemd-udevd[474]: WARK: found match!
continue
Dec 01 05:07:25.683146 ubuntu systemd-udevd[474]: handling device node
'/dev/bcache0', devnum=b250:0, mode=0660, uid=0, gid=6
Dec 01 05:07:25.683155 ubuntu systemd-udevd[474]: set permissions
/dev/bcache0, 060660, uid=0, gid=6
Dec 01 05:07:25.683165 ubuntu systemd-udevd[474]: preserve already existing
symlink '/dev/block/250:0' to '../bcache0'
Dec 01 05:07:25.683174 ubuntu systemd-udevd[474]: found 'b250:0' claiming
'/run/udev/links/\x2fdisk\x2fby-uuid\x2f0a270acb-56b8-4498-8bad-b3bb149fe869'
Dec 01 05:07:25.683183 ubuntu systemd-udevd[474]: creating link
'/dev/disk/by-uuid/0a270acb-56b8-4498-8bad-b3bb149fe869' to '/dev/bcache0'
Dec 01 05:07:25.683193 ubuntu systemd-udevd[474]: preserve already existing
symlink '/dev/disk/by-uuid/0a270acb-56b8-4498-8bad-b3bb149fe869' to
'../../bcache0'
Dec 01 05:07:25.683201 ubuntu systemd-udevd[474]: created db file
'/run/udev/data/b250:0' for '/devices/virtual/block/bcache0'
Dec 01 05:07:25.683211 ubuntu systemd[1]:
dev-disk-by\x2duuid-0a270acb\x2d56b8\x2d4498\x2d8bad\x2db3bb149fe869.device:
Changed dead -> plugged
Dec 01 05:07:25.683226 ubuntu systemd[1]: dev-bcache0.device: Changed dead
-> plugged
Dec 01 05:07:25.683234 ubuntu systemd[1]:
sys-devices-virtual-block-bcache0.device: Changed dead -> plugged


The new dev (from /deb/bcache0) only has a by-uuid devlink as the UEVENT
that generates the CACHED_UUID devlink is not recorded/discovered
after the original binding of the cache device and backing store.  This
forces udev to remove the link.

I hacked in a change which allows the old link to stay if the old_name, or
old_path match; this
keeps the symlinks around.

This is required (or the kernel fix to emit the CACHED_UUID on cold plug);
but not sufficient.
What else is needed is a change to the bcache rules file such that when a
bcacheN device is
replugged, it will query the backing device's superblock to find out the
dev.uuid, and import that
value as CACHED_UUID so that the dname rule can match the path
/dev/bcache/by-uuid/<CACHED_UUID> and dname
will point to that, which abstracts away whether it points to bcache0, 1 ,
or N.

/dev/disk/by-dname/foo -> ../../../bcache/by-uuid/<dev.uuid>  ->
../../bcacheN



On Thu, Nov 30, 2017 at 7:16 PM, Ryan Harper <ryan.har...@canonical.com>
wrote:

> 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-addbd9
>> c80e06
>>
>> --
>> 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 Ubuntu
Touch seeded packages, which is subscribed to systemd 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/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to