From 1a6fdf2417a9eabdc0ec450bb47dcb519a689c50 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Thu, 14 Feb 2013 12:36:09 +0100 Subject: [PATCH] btrfs: use "btrfs device ready" --- modules.d/90btrfs/btrfs_device_ready.sh | 21 +++++++++++++++++++++ modules.d/90btrfs/btrfs_finished.sh | 1 - modules.d/90btrfs/module-setup.sh | 8 +++++++- 3 files changed, 28 insertions(+), 2 deletions(-) create mode 100755 modules.d/90btrfs/btrfs_device_ready.sh diff --git a/modules.d/90btrfs/btrfs_device_ready.sh b/modules.d/90btrfs/btrfs_device_ready.sh new file mode 100755 index 00000000..a88203a7 --- /dev/null +++ b/modules.d/90btrfs/btrfs_device_ready.sh @@ -0,0 +1,21 @@ +#!/bin/sh +# -*- 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 + +btrfs_check_complete() { + local _rootinfo _dev + _dev="${1:-/dev/root}" + [ -e "$_dev" ] || return 0 + _rootinfo=$(udevadm info --query=env "--name=$_dev" 2>/dev/null) + if strstr "$_rootinfo" "ID_FS_TYPE=btrfs"; then + info "Checking, if btrfs device complete" + btrfs device ready "$_dev" >/dev/null 2>&1 + return $? + fi + return 0 +} + +btrfs_check_complete $1 +exit $? diff --git a/modules.d/90btrfs/btrfs_finished.sh b/modules.d/90btrfs/btrfs_finished.sh index 19715f6b..5e7691a3 100755 --- a/modules.d/90btrfs/btrfs_finished.sh +++ b/modules.d/90btrfs/btrfs_finished.sh @@ -11,7 +11,6 @@ btrfs_check_complete() { _rootinfo=$(udevadm info --query=env "--name=$_dev" 2>/dev/null) if strstr "$_rootinfo" "ID_FS_TYPE=btrfs"; then info "Checking, if btrfs device complete" - btrfs device ready "$_dev" >/dev/null 2>&1 && return 0 unset __btrfs_mount mount -o ro "$_dev" /tmp >/dev/null 2>&1 __btrfs_mount=$? diff --git a/modules.d/90btrfs/module-setup.sh b/modules.d/90btrfs/module-setup.sh index 526d9dd4..5decb989 100755 --- a/modules.d/90btrfs/module-setup.sh +++ b/modules.d/90btrfs/module-setup.sh @@ -31,9 +31,15 @@ installkernel() { install() { inst_rules "$moddir/80-btrfs.rules" - inst_script "$moddir/btrfs_finished.sh" /sbin/btrfs_finished inst_script "$moddir/btrfs_timeout.sh" /sbin/btrfs_timeout dracut_install btrfsck inst $(command -v btrfs) /sbin/btrfs + + case "$(btrfs --help)" in + *device\ ready*) + inst_script "$moddir/btrfs_device_ready.sh" /sbin/btrfs_finished ;; + *) + inst_script "$moddir/btrfs_finished.sh" /sbin/btrfs_finished ;; + esac }