assemble multidevice btrfs volumes without external tools (#6607)
authorg0tar <gotar@polanet.pl>
Thu, 7 Sep 2017 07:58:12 +0000 (09:58 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 7 Sep 2017 07:58:12 +0000 (09:58 +0200)
assemble multidevice btrfs volumes without external tools

This self-contained approach introduce very little overhead, unless
someone has a large number of devices composing many btrfs volumes,
in which case btrfs device scan would be faster. Still, having robust
implementation is a nice to have alternative for btrfs-progs.

rules/64-btrfs.rules.in [moved from rules/64-btrfs.rules with 71% similarity]
rules/meson.build

similarity index 71%
rename from rules/64-btrfs.rules
rename to rules/64-btrfs.rules.in
index fe01001..5b86b9b 100644 (file)
@@ -10,4 +10,7 @@ IMPORT{builtin}="btrfs ready $devnode"
 # mark the device as not ready to be used by the system
 ENV{ID_BTRFS_READY}=="0", ENV{SYSTEMD_READY}="0"
 
+# reconsider pending devices in case when multidevice volume awaits
+ENV{ID_BTRFS_READY}=="1", RUN+="@rootlibexecdir@/udevadm trigger -s block -p ID_BTRFS_READY=0"
+
 LABEL="btrfs_end"
index 7f4725a..1bb4314 100644 (file)
@@ -11,7 +11,6 @@ rules = files('''
         60-persistent-v4l.rules
         60-sensor.rules
         60-serial.rules
-        64-btrfs.rules
         70-joystick.rules
         70-mouse.rules
         70-touchpad.rules
@@ -27,6 +26,7 @@ install_data(rules,
 
 rules_in = '''
         50-udev-default.rules
+        64-btrfs.rules
         99-systemd.rules
 '''.split()