From 944cb4ce32b7c8a090d6ecd36eef1946d85a8048 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Thu, 11 Apr 2013 16:44:03 +0200 Subject: [PATCH] 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. --- 61-bcache.rules | 7 ++++++- Makefile | 2 +- bcache-register | 4 ++++ initramfs/hook | 4 +++- initramfs/script | 32 -------------------------------- 5 files changed, 14 insertions(+), 35 deletions(-) create mode 100755 bcache-register delete mode 100755 initramfs/script 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