On 21.03.2015, Chris Murphy wrote:
I don't think systemd has any concept of filesystems (volume formats). It gets all of this from libblkid, udev, and the kernel. So I'd say one of those three things is confused, and then confuses everything else.
Didn't have much time today to further debug this thing, but I can confirm that "something" is getting confused when rebooting for the first time with the new partition.
Precisely: when I reformat /home with nilfs2 and check the assigned UUID afterward, all is good. No /dev/sda with an erroneous UUID. Then I reboot, and systemd claims it can't mount /home because "/dev/sda is busy". After dropping into runlevel 1, lsblk shows why: now /dev/sda has the same UUID as /home, and of course can't /dev/sda not be mounted.
So whatever it is in the system that can't handle a nilfs2 mount wrecks it here. Will dig further into it, but it seems like it's systemd itself. I took a look into the systemd source, and it uses common /bin/mount to mount the filesystems. Manually mounting /home and going to runlevel 5 works flawlessly. Something in the boot process is wrong.
The fact you get a difference in output between lsblk and blkid is itself a bug.
I'm afraid it isn't, because blkid doesn't show the toplevel physical device, while lsblk -f does. Anyway, that's obviously not the problem here. Something claims /dev/sda has the same UUID as /home, and then systemd looks up the UUID, grabs the first assigned device and tries to mount it. And I don't get why the f*ck /dev/sda should have a UUID or what wrecks it..