bcache-tools: don't use probe-bcache and bcache-register

This allows us not to include any additional binaries for bcache
support in initrd; just an udev rule.
This commit is contained in:
Nikolay Amiantov 2014-11-02 18:57:19 +03:00
parent c9de1ea49e
commit 92f94e901a
2 changed files with 54 additions and 2 deletions

View File

@ -0,0 +1,52 @@
This patch does two things:
1) Drops probe-bcache, so now new util-linux detecting functionality is used.
2) Drops bcache-register, using kmod (built in udev) and moving registering device
into rule using 'sh'.
This reduces things that need to be present in initrd, replacing them with already
existing functionality and reducing overall initrd size.
diff --git a/69-bcache.rules b/69-bcache.rules
index 5d28e70..6a52893 100644
--- a/69-bcache.rules
+++ b/69-bcache.rules
@@ -10,15 +10,11 @@ KERNEL=="fd*|sr*", GOTO="bcache_end"
# It recognised bcache (util-linux 2.24+)
ENV{ID_FS_TYPE}=="bcache", GOTO="bcache_backing_found"
# It recognised something else; bail
-ENV{ID_FS_TYPE}=="?*", GOTO="bcache_backing_end"
-
-# Backing devices: scan, symlink, register
-IMPORT{program}="probe-bcache -o udev $tempnode"
-ENV{ID_FS_TYPE}!="bcache", GOTO="bcache_backing_end"
-ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}"
+GOTO="bcache_backing_end"
LABEL="bcache_backing_found"
-RUN+="bcache-register $tempnode"
+RUN{builtin}+="kmod load bcache"
+RUN+="/bin/sh -c 'echo $tempnode > /sys/fs/bcache/register_quiet'"
LABEL="bcache_backing_end"
# Cached devices: symlink
diff --git a/Makefile b/Makefile
index 3f8d87b..15638a7 100644
--- a/Makefile
+++ b/Makefile
@@ -9,7 +9,7 @@ all: make-bcache probe-bcache bcache-super-show
install: make-bcache probe-bcache bcache-super-show
$(INSTALL) -m0755 make-bcache bcache-super-show $(DESTDIR)${PREFIX}/sbin/
- $(INSTALL) -m0755 probe-bcache bcache-register $(DESTDIR)$(UDEVLIBDIR)/
+# $(INSTALL) -m0755 probe-bcache bcache-register $(DESTDIR)$(UDEVLIBDIR)/
$(INSTALL) -m0644 69-bcache.rules $(DESTDIR)$(UDEVLIBDIR)/rules.d/
$(INSTALL) -m0644 -- *.8 $(DESTDIR)${PREFIX}/share/man/man8/
$(INSTALL) -D -m0755 initramfs/hook $(DESTDIR)/usr/share/initramfs-tools/hooks/bcache
diff --git a/bcache-register b/bcache-register
index 9b592bc..75b4faf 100755
--- a/bcache-register
+++ b/bcache-register
@@ -1,4 +1,3 @@
#!/bin/sh
-/sbin/modprobe -qba bcache
test -f /sys/fs/bcache/register_quiet && echo "$1" > /sys/fs/bcache/register_quiet

View File

@ -19,10 +19,10 @@ stdenv.mkDerivation rec {
-e "/INSTALL.*initcpio\/install/d" \
-e "/INSTALL.*dracut\/module-setup.sh/d" \
-i Makefile
sed -e "s|/sbin/modprobe|${kmod}/sbin/modprobe|" -i bcache-register
'';
patches = [ ./bcache-udev-modern.patch ];
preBuild = ''
export makeFlags="$makeFlags PREFIX=\"$out\" UDEVLIBDIR=\"$out/lib/udev/\"";
'';