aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGabriel <g2p.code@gmail.com>2013-04-11 16:44:03 +0200
committerKent Overstreet <koverstreet@google.com>2013-04-11 17:08:23 -0700
commit944cb4ce32b7c8a090d6ecd36eef1946d85a8048 (patch)
tree6a446827c1aebe9c354717436b737d811f825274
parent3088f201edfe5cb0ad6117d84146c0b2b84205e8 (diff)
downloadbcache-tools-944cb4ce32b7c8a090d6ecd36eef1946d85a8048.tar.gz
Register devices with just udev.
This means bcache devices will be registered earlier and in all cases, not just when the rootfs fails to mount. The initramfs hook is still there to ensure the bcache module and udev rules are shipped if an initramfs is used.
-rw-r--r--61-bcache.rules7
-rw-r--r--Makefile2
-rwxr-xr-xbcache-register4
-rwxr-xr-xinitramfs/hook4
-rwxr-xr-xinitramfs/script32
5 files changed, 14 insertions, 35 deletions
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