On Tue, Dec 19, 2017 at 15:47:03 -0500, Austin S. Hemmelgarn wrote: >> Sth like this? I got such problem a few months ago, my solution was >> accepted upstream: >> https://github.com/systemd/systemd/commit/0e8856d25ab71764a279c2377ae593c0f2460d8f >> >> Rationale is in referred ticket, udev would not support any more btrfs >> logic, so unless btrfs handles this itself on kernel level (daemon?), >> that is all that can be done. > Or maybe systemd can quit trying to treat BTRFS like a volume manager > (which it isn't) and just try to mount the requested filesystem with the > requested options?
Tried that before ("just mount my filesystem, stupid"), it is a no-go. The problem source is not within systemd treating BTRFS differently, but in btrfs kernel logic that it uses. Just to show it: 1. create 2-volume btrfs, e.g. /dev/sda and /dev/sdb, 2. reboot the system into clean state (init=/bin/sh), (or remove btrfs-scan tool), 3. try mount /dev/sda /test - fails mount /dev/sdb /test - works 4. reboot again and try in reversed order mount /dev/sdb /test - fails mount /dev/sda /test - works THIS readiness is exposed via udev to systemd. And it must be used for multi-layer setups to work (consider stacked LUKS, LVM, MD, iSCSI, FC etc). In short: until *something* scans all the btrfs components, so the kernel makes it ready, systemd won't even try to mount it. > Then you would just be able to specify 'degraded' in > your mount options, and you don't have to care that the kernel refuses > to mount degraded filesystems without being explicitly asked to. Exactly. But since LP refused to try mounting despite kernel "not-ready" state - it is the kernel that must emit 'ready'. So the question is: how can I make kernel to mark degraded array as "ready"? The obvious answer is: do it via kernel command line, just like mdadm does: rootflags=device=/dev/sda,device=/dev/sdb rootflags=device=/dev/sda,device=missing rootflags=device=/dev/sda,device=/dev/sdb,degraded If only btrfs.ko recognized this, kernel would be able to assemble multivolume btrfs itself. Not only this would allow automated degraded mounts, it would also allow using initrd-less kernels on such volumes. >> It doesn't have to be default, might be kernel compile-time knob, module >> parameter or anything else to make the *R*aid work. > There's a mount option for it per-filesystem. Just add that to all your > mount calls, and you get exactly the same effect. If only they were passed... -- Tomasz Pala <go...@pld-linux.org> -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html