From: Harald Hoyer Date: Wed, 22 Feb 2012 18:07:39 +0000 (+0100) Subject: host-only checks corrected and kernel_only mode X-Git-Tag: 017~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=004fd0557d24444d363620ed718027a0dc9a1ba2;p=thirdparty%2Fdracut.git host-only checks corrected and kernel_only mode In kernel_only mode, we don't want to write /etc/cmdline.d Correctly return the check functions, so we have a valid return of for_each_host_dev_fs(). mdraid and dmraid functions had wrong checkings for the filesystem type. --- diff --git a/modules.d/90crypt/module-setup.sh b/modules.d/90crypt/module-setup.sh index 5db25f85b..8fdf32b8f 100755 --- a/modules.d/90crypt/module-setup.sh +++ b/modules.d/90crypt/module-setup.sh @@ -11,7 +11,7 @@ check() { check_crypt() { local dev=$1 fs=$2 - [[ $fs = "crypto_LUKS" ]] || continue + [[ $fs = "crypto_LUKS" ]] || return 1 ID_FS_UUID=$(udevadm info --query=property --name=$dev \ | while read line; do [[ ${line#ID_FS_UUID} = $line ]] && continue @@ -19,13 +19,15 @@ check() { echo $ID_FS_UUID break done) - [[ ${ID_FS_UUID} ]] || continue - echo " rd.luks.uuid=luks-${ID_FS_UUID} " >> "${initdir}/etc/cmdline.d/90crypt.conf" + [[ ${ID_FS_UUID} ]] || return 1 + if ! [[ $kernel_only ]]; then + echo " rd.luks.uuid=luks-${ID_FS_UUID} " >> "${initdir}/etc/cmdline.d/90crypt.conf" + fi + return 0 } [[ $hostonly ]] || [[ $mount_needs ]] && { - for_each_host_dev_fs check_crypt - [ -f "${initdir}/etc/cmdline.d/90crypt.conf" ] || return 1 + for_each_host_dev_fs check_crypt || return 1 } return 0 diff --git a/modules.d/90dmraid/module-setup.sh b/modules.d/90dmraid/module-setup.sh index d7834d1e8..786cf252a 100755 --- a/modules.d/90dmraid/module-setup.sh +++ b/modules.d/90dmraid/module-setup.sh @@ -13,8 +13,7 @@ check() { check_dmraid() { local dev=$1 fs=$2 holder DEVPATH DM_NAME - [[ "$fs" = "linux_raid_member" ]] && continue - [[ "$fs" = "${fs%%_raid_member}" ]] && continue + [[ "$fs" = "${fs%%_raid_member}" ]] && return 1 DEVPATH=$(udevadm info --query=property --name=$dev \ | while read line; do @@ -34,13 +33,15 @@ check() { done) done - [[ ${DM_NAME} ]] || continue - echo " rd.dm.uuid=${DM_NAME} " >> "${initdir}/etc/cmdline.d/90dmraid.conf" + [[ ${DM_NAME} ]] || return 1 + if ! [[ $kernel_only ]]; then + echo " rd.dm.uuid=${DM_NAME} " >> "${initdir}/etc/cmdline.d/90dmraid.conf" + fi + return 0 } [[ $hostonly ]] || [[ $mount_needs ]] && { - for_each_host_dev_fs check_dmraid - [ -f "${initdir}/etc/cmdline.d/90dmraid.conf" ] || return 1 + for_each_host_dev_fs check_dmraid || return 1 } return 0 diff --git a/modules.d/90lvm/module-setup.sh b/modules.d/90lvm/module-setup.sh index fd488350c..c40dd2937 100755 --- a/modules.d/90lvm/module-setup.sh +++ b/modules.d/90lvm/module-setup.sh @@ -14,16 +14,18 @@ check() { unset DM_VG_NAME unset DM_LV_NAME eval $(udevadm info --query=property --name=$1|egrep '(DM_VG_NAME|DM_LV_NAME)=') - [[ ${DM_VG_NAME} ]] && [[ ${DM_LV_NAME} ]] || return + [[ ${DM_VG_NAME} ]] && [[ ${DM_LV_NAME} ]] || return 1 if ! strstr " ${_activated[*]} " " ${DM_VG_NAME}/${DM_LV_NAME} "; then - echo " rd.lvm.lv=${DM_VG_NAME}/${DM_LV_NAME} " >> "${initdir}/etc/cmdline.d/90lvm.conf" + if ! [[ $kernel_only ]]; then + echo " rd.lvm.lv=${DM_VG_NAME}/${DM_LV_NAME} " >> "${initdir}/etc/cmdline.d/90lvm.conf" + fi push _activated "${DM_VG_NAME}/${DM_LV_NAME}" fi + return 0 } [[ $hostonly ]] || [[ $mount_needs ]] && { - for_each_host_dev_fs check_lvm - [ -f "${initdir}/etc/cmdline.d/90lvm.conf" ] || return 1 + for_each_host_dev_fs check_lvm || return 1 } return 0 diff --git a/modules.d/90mdraid/module-setup.sh b/modules.d/90mdraid/module-setup.sh index f8a481134..90092a7ee 100755 --- a/modules.d/90mdraid/module-setup.sh +++ b/modules.d/90mdraid/module-setup.sh @@ -12,35 +12,25 @@ check() { check_mdraid() { local dev=$1 fs=$2 holder DEVPATH MD_UUID - [[ "$fs" = "linux_raid_member" ]] && continue - [[ "$fs" = "${fs%%_raid_member}" ]] && continue + [[ "$fs" = "${fs%%_raid_member}" ]] && return 1 - DEVPATH=$(udevadm info --query=property --name=$dev \ + MD_UUID=$(/sbin/mdadm --examine --export $dev \ | while read line; do - [[ ${line#DEVPATH} = $line ]] && continue + [[ ${line#MD_UUID} = $line ]] && continue eval "$line" - echo $DEVPATH + echo $MD_UUID break done) - for holder in /sys/$DEVPATH/holders/*; do - [[ -e $holder ]] || continue - MD_UUID=$(udevadm info --query=property --path=$holder \ - | while read line; do - [[ ${line#MD_UUID} = $line ]] && continue - eval "$line" - echo $MD_UUID - break - done) - done - - [[ ${MD_UUID} ]] || continue - echo " rd.md.uuid=${MD_UUID} " >> "${initdir}/etc/cmdline.d/90mdraid.conf" + [[ ${MD_UUID} ]] || return 1 + if ! [[ $kernel_only ]]; then + echo " rd.md.uuid=${MD_UUID} " >> "${initdir}/etc/cmdline.d/90mdraid.conf" + fi + return 0 } [[ $hostonly ]] || [[ $mount_needs ]] && { - for_each_host_dev_fs check_mdraid - [[ -f "${initdir}/etc/cmdline.d/90mdraid.conf" ]] || return 1 + for_each_host_dev_fs check_mdraid || return 1 } return 0