summary refs log tree commit diff
path: root/pkgs/tools/filesystems/bcache-tools
diff options
context:
space:
mode:
authorNikolay Amiantov <ab@fmap.me>2014-11-02 18:57:19 +0300
committerNikolay Amiantov <ab@fmap.me>2014-11-02 19:03:41 +0300
commit92f94e901a4c750678c27cb5d0bdfd25706d483e (patch)
treef50149b0b2b1f404d74f795ddbaf36bb8203246b /pkgs/tools/filesystems/bcache-tools
parentc9de1ea49e8c188e524951a4256247e801bb25e2 (diff)
downloadnixpkgs-92f94e901a4c750678c27cb5d0bdfd25706d483e.tar
nixpkgs-92f94e901a4c750678c27cb5d0bdfd25706d483e.tar.gz
nixpkgs-92f94e901a4c750678c27cb5d0bdfd25706d483e.tar.bz2
nixpkgs-92f94e901a4c750678c27cb5d0bdfd25706d483e.tar.lz
nixpkgs-92f94e901a4c750678c27cb5d0bdfd25706d483e.tar.xz
nixpkgs-92f94e901a4c750678c27cb5d0bdfd25706d483e.tar.zst
nixpkgs-92f94e901a4c750678c27cb5d0bdfd25706d483e.zip
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.
Diffstat (limited to 'pkgs/tools/filesystems/bcache-tools')
-rw-r--r--pkgs/tools/filesystems/bcache-tools/bcache-udev-modern.patch52
-rw-r--r--pkgs/tools/filesystems/bcache-tools/default.nix4
2 files changed, 54 insertions, 2 deletions
diff --git a/pkgs/tools/filesystems/bcache-tools/bcache-udev-modern.patch b/pkgs/tools/filesystems/bcache-tools/bcache-udev-modern.patch
new file mode 100644
index 00000000000..c6cf79785b7
--- /dev/null
+++ b/pkgs/tools/filesystems/bcache-tools/bcache-udev-modern.patch
@@ -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
+ 
diff --git a/pkgs/tools/filesystems/bcache-tools/default.nix b/pkgs/tools/filesystems/bcache-tools/default.nix
index 161383cb9de..a4b1363d841 100644
--- a/pkgs/tools/filesystems/bcache-tools/default.nix
+++ b/pkgs/tools/filesystems/bcache-tools/default.nix
@@ -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/\"";
   '';