From: Victor Lowther Date: Sun, 16 Aug 2009 23:22:21 +0000 (-0500) Subject: Modify nbd hostonly checking to use check_block_and_slaves. X-Git-Tag: 001~37 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1a4c4015bc85feeb9fbf95a9d1e9adfb2de8e897;p=thirdparty%2Fdracut.git Modify nbd hostonly checking to use check_block_and_slaves. This allows hostonly nbd checking to work in more exotic situations, such as mdraid/dmraid/lvm/crypt on top of nbd. --- diff --git a/modules.d/95nbd/check b/modules.d/95nbd/check index f94d63b1b..1443129fd 100755 --- a/modules.d/95nbd/check +++ b/modules.d/95nbd/check @@ -1,11 +1,20 @@ -#!/bin/sh +#!/bin/bash # We depend on network modules being loaded [ "$1" = "-d" ] && echo network -# If hostonly was requested, fail the check if we are not actually -# booting from root. -[ "$1" = "-h" ] && ! egrep -q '/ /dev/nbd[0-9]*' /proc/mounts && exit 1 - -# If our prerequisites are not met, fail anyways. +# If our prerequisites are not met, fail. which nbd-client >/dev/null 2>&1 || exit 1 + +is_nbd() { [[ -b /dev/block/$1 && $1 == 43:* ]] } + +. $dracutfunctions + +# if an nbd device is not somewhere in the chain of devices root is mounted on, +# fail the hostonly check. +[ "$1" = "-h" ] && { + rootdev=$(find_root_block_device) + [[ -b /dev/block/$rootdev ]] || exit 1 + check_block_and_slaves is_nbd "$rootdev" || exit 1 +} + exit 0