From d128791b84a6e30cdd0cff7ff977006f644fdbd7 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Thu, 11 Aug 2011 16:56:52 +0200 Subject: [PATCH] 90btrfs: add btrfs device with multiple components --- modules.d/90btrfs/80-btrfs.rules | 7 +++++-- modules.d/90btrfs/btrfs_finished.sh | 18 ++++++++++++++++++ modules.d/90btrfs/btrfs_timeout.sh | 9 +++++++++ modules.d/90btrfs/module-setup.sh | 4 +++- 4 files changed, 35 insertions(+), 3 deletions(-) create mode 100755 modules.d/90btrfs/btrfs_finished.sh create mode 100755 modules.d/90btrfs/btrfs_timeout.sh diff --git a/modules.d/90btrfs/80-btrfs.rules b/modules.d/90btrfs/80-btrfs.rules index 7c98d986..e74f9a6a 100644 --- a/modules.d/90btrfs/80-btrfs.rules +++ b/modules.d/90btrfs/80-btrfs.rules @@ -1,8 +1,11 @@ SUBSYSTEM!="block", GOTO="btrfs_end" ACTION!="add|change", GOTO="btrfs_end" +ENV{ID_FS_TYPE}!="btrfs", GOTO="btrfs_end" +RUN+="/sbin/modprobe btrfs" +RUN+="/sbin/btrfs device scan $env{DEVNAME}" -ENV{ID_FS_TYPE}=="btrfs", RUN+="/sbin/modprobe btrfs" -ENV{ID_FS_TYPE}=="btrfs", RUN+="/sbin/btrfs device scan $env{DEVNAME}" +RUN+="/sbin/initqueue --finished --unique --name btrfs_finished /sbin/btrfs_finished" +RUN+="/sbin/initqueue --timeout --onetime --unique --name btrfs_timeout /sbin/btrfs_timeout" LABEL="btrfs_end" diff --git a/modules.d/90btrfs/btrfs_finished.sh b/modules.d/90btrfs/btrfs_finished.sh new file mode 100755 index 00000000..3601279d --- /dev/null +++ b/modules.d/90btrfs/btrfs_finished.sh @@ -0,0 +1,18 @@ +#!/bin/bash +# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- +# ex: ts=8 sw=4 sts=4 et filetype=sh + +type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh + +if [ -e /dev/root ]; then + if strstr "$(udevadm info --query=env --name=/dev/root)" "ID_FS_TYPE=btrfs"; then + info "Checking, if btrfs device complete" + unset __btrfs_mount + mount -o ro /dev/root /tmp >/dev/null 2>&1 + __btrfs_mount=$? + [ $__btrfs_mount -eq 0 ] && umount /dev/root >/dev/null 2>&1 + exit $__btrfs_mount + fi +fi + +exit 0 diff --git a/modules.d/90btrfs/btrfs_timeout.sh b/modules.d/90btrfs/btrfs_timeout.sh new file mode 100755 index 00000000..84f7997b --- /dev/null +++ b/modules.d/90btrfs/btrfs_timeout.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- +# ex: ts=8 sw=4 sts=4 et filetype=sh + +type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh + +info "Scanning for all btrfs devices" +/sbin/btrfs device scan 2>&1 | vinfo +exit 0 diff --git a/modules.d/90btrfs/module-setup.sh b/modules.d/90btrfs/module-setup.sh index c5ea6bf0..7b0b4247 100755 --- a/modules.d/90btrfs/module-setup.sh +++ b/modules.d/90btrfs/module-setup.sh @@ -34,6 +34,8 @@ installkernel() { install() { inst_rules "$moddir/80-btrfs.rules" - dracut_install btrfs + inst "$moddir/btrfs_finished.sh" /sbin/btrfs_finished + inst "$moddir/btrfs_timeout.sh" /sbin/btrfs_timeout + dracut_install btrfs btrfsck }