[systemd-devel] systemd waiting for already existing devices

Alexander Koch lynix47 at gmail.com
Mon Jun 17 11:12:13 PDT 2013


Dear list members,

I'm having some strange issues with systemd bootup being blocked by
waiting for devices that do already exist. The situation is a bit
complicated, but I'll try to be as clear as possible.

I have four encrypted partitions (dm-crypt, LUKS) on four different
disks set up by /etc/crypttab as follows:

> # crypttab: mappings for encrypted partitions
> archive1-plain  UUID=f404652c-33e4-4162-939c-92a5762ab811  /etc/archive1.key
> archive2-plain  UUID=95bdcd80-cc0e-4393-adbf-4ac05bd08b5b  /etc/archive2.key
> archive3-plain  UUID=6b6ecf90-39eb-4480-817c-bf420755d415  /etc/archive3.key
> archive4-plain  UUID=19436855-a64b-4290-a7a3-7790c4c1220b  /etc/archive4.key

(root is encrypted as well, so no comments on readable keyfiles ;) )

They all belong to a multi-volume btrfs filesystem (raid1), and
therefore all have the same primary UUID.

On bootup, they all get unlocked successfully, and the corresponding
links in /dev/mapper are created. The problem is that systemd only
notices one volume begin unlocked:

> kernel: device label archive devid 1 transid 145773 /dev/dm-7
> systemd[1]: Started Cryptography Setup for archive1-plain.
> kernel: device label archive devid 2 transid 145773 /dev/dm-8
> systemd[1]: Started Cryptography Setup for archive2-plain.
> kernel: device label archive devid 4 transid 145773 /dev/dm-9
> systemd[1]: Started Cryptography Setup for archive4-plain.
> kernel: device label archive devid 3 transid 145773 /dev/dm-10
> systemd[1]: Found device /dev/mapper/archive3-plain.
> systemd[1]: Found device /dev/disk/by-uuid/3818eedb-5379-4c40-9d3d-bd91f60d9094.
> systemd[1]: Starting File System Check on /dev/disk/by-uuid/3818eedb-5379-4c40-9d3d-bd91f60d9094...
> systemd[1]: Started Cryptography Setup for archive3-plain.
> systemd[1]: Starting Encrypted Volumes.
> systemd[1]: Reached target Encrypted Volumes.

In fact, all four volumes do have their corresponding device-mapper
symlinks, and as you can see the multi-volume btrfs filesystem is
recognized by its UUID and mounted correctly.

But for systemd, bootup never finishes:

> [root at thor ~]$ systemd-analyze
> Bootup is not yet finished. Please try again later.

> [alex at thor ~]$ systemctl list-jobs
> JOB UNIT                                TYPE  STATE  
>  41 dev-mapper-archive4\x2dplain.device start running
>  47 dev-mapper-archive2\x2dplain.device start running
>  50 dev-mapper-archive1\x2dplain.device start running

The number of the device that gets recognized changes randomly on each
bootup, so I see no dependency on a specific one.


If I were to guess, then I'd say systemd does not recognize the other
three volumes being created because they all have the same (primary)
UUID as the first one, and therefore there is no additional notification
from the kernel, blockdevice subsystem or wherever systemd gets its
notifications from.


Any comments or recommendations on this? It's no big trouble to me,
because the volume is mounted correctly, but I'm not able to use
systemd-analyze like this ;)

System details: up-to-date Arch Linux x64, systemd-204-3


Thanks in advance for any constructive feedback!


Best regards

Alex


More information about the systemd-devel mailing list