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"
--- /dev/null
+#!/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
--- /dev/null
+#!/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
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
}