From 1a4c4015bc85feeb9fbf95a9d1e9adfb2de8e897 Mon Sep 17 00:00:00 2001 From: Victor Lowther Date: Sun, 16 Aug 2009 18:22:21 -0500 Subject: [PATCH] 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. --- modules.d/95nbd/check | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/modules.d/95nbd/check b/modules.d/95nbd/check index f94d63b1..1443129f 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