-#!/bin/sh
+#!/bin/bash
# We depend on network modules being loaded
[ "$1" = "-d" ] && echo network
+# If our prerequisites are not met, fail anyways.
+which iscsistart hostname iscsi-iname >/dev/null 2>&1 || exit 1
+
# 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.
-which iscsistart hostname iscsi-iname >/dev/null 2>&1 || exit 1
+. $dracutfunctions
+
+[[ $debug ]] && set -x
+
+is_iscsi() (
+ [[ -L /sys/dev/block/$1 ]] || return
+ cd "$(readlink -f /sys/dev/block/$1)"
+ until [[ -d sys || -d iscsi_session ]]; do
+ cd ..
+ done
+ [[ -d iscsi_session ]]
+)
+
+case $1 in
+ -h) rootdev=$(find_root_block_device)
+ if [[ $rootdev ]]; then
+ # root lives on a block device, so we can be more precise about
+ # hostonly checking
+ check_block_and_slaves is_iscsi "$rootdev" || exit 1
+ else
+ exit 1
+ fi ;;
+esac
+
exit 0