diff --git a/61-bcache.rules b/61-bcache.rules index acedefe0..7857914a 100644 --- a/61-bcache.rules +++ b/61-bcache.rules @@ -1,3 +1,8 @@ -KERNEL=="sd*", ENV{DEVTYPE}=="disk", IMPORT{program}="/sbin/probe-bcache -o udev $tempnode" +# register bcache devices as they come up +# man 7 udev for syntax +SUBSYSTEM=="block", IMPORT{program}="/sbin/probe-bcache -o udev $tempnode" ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}" +SUBSYSTEM=="block", ACTION=="add|change", ENV{ID_FS_TYPE}=="bcache", \ + RUN+="bcache-register $tempnode" + diff --git a/Makefile b/Makefile index ce8c0c46..10ec79c6 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,7 @@ install: make-bcache probe-bcache bcache-super-show install -m0755 make-bcache bcache-super-show $(DESTDIR)${PREFIX}/sbin/ install -m0755 probe-bcache $(DESTDIR)/sbin/ install -m0644 61-bcache.rules $(DESTDIR)/lib/udev/rules.d/ - -install -m0755 initramfs/script $(DESTDIR)/etc/initramfs-tools/scripts/init-premount/bcache + install -m0755 bcache-register $(DESTDIR)/lib/udev/ -install -m0755 initramfs/hook $(DESTDIR)/etc/initramfs-tools/hooks/bcache install -m0644 -- *.8 $(DESTDIR)${PREFIX}/share/man/man8 # install -m0755 bcache-test $(DESTDIR)${PREFIX}/sbin/ diff --git a/bcache-register b/bcache-register new file mode 100755 index 00000000..bf93c7f9 --- /dev/null +++ b/bcache-register @@ -0,0 +1,4 @@ +#!/bin/sh +modprobe -qba bcache +test -f /sys/fs/bcache/register && echo "$1" > /sys/fs/bcache/register + diff --git a/initramfs/hook b/initramfs/hook index 3c429d0d..ce328f3a 100755 --- a/initramfs/hook +++ b/initramfs/hook @@ -16,5 +16,7 @@ esac . /usr/share/initramfs-tools/hook-functions -copy_exec /bin/mknod +cp -pt "${DESTDIR}/lib/udev/rules.d" /lib/udev/rules.d/61-bcache.rules +copy_exec /lib/udev/bcache-register +copy_exec /sbin/probe-bcache manual_add_modules bcache diff --git a/initramfs/script b/initramfs/script deleted file mode 100755 index 926d5d3e..00000000 --- a/initramfs/script +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/sh - -mountroot_fail() -{ - for i in `ls /dev/sd*`; do - echo $i > /sys/fs/bcache/register_quiet - done - -# for i in `ls /sys/dev/block/`; do -# DEV=/bcache_dev -# -# mknod $DEV b `echo $i|sed -e 's/:/ /'` -# echo $DEV > /sys/fs/bcache/register_quiet -# rm $DEV -# done -} - -case $1 in -prereqs) - exit 0 - ;; -mountfail) - mountroot_fail - exit 0 - ;; -esac - -. /scripts/functions - -add_mountroot_fail_hook "30-bcache" - -exit 0