From: Hannes Reinecke Date: Thu, 26 Jun 2014 08:50:43 +0000 (+0200) Subject: 95dasd_rules: print out 'rd.dasd' commandline X-Git-Tag: 046~51^2~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=13626413107b67ab493ccfc4f6a1c6bef228a74e;p=thirdparty%2Fdracut.git 95dasd_rules: print out 'rd.dasd' commandline When a DASD is found to be required for the rootfs we should be printing out a 'rd.dasd' commandline parameter. This not only enables us to correctly enable the device with cio_ignore, we can also inspect the resulting initrd to figure out which devices are required to mount the rootfs. Signed-off-by: Hannes Reinecke --- diff --git a/modules.d/95dasd_rules/module-setup.sh b/modules.d/95dasd_rules/module-setup.sh index acdf1e726..48a69ca74 100755 --- a/modules.d/95dasd_rules/module-setup.sh +++ b/modules.d/95dasd_rules/module-setup.sh @@ -1,10 +1,39 @@ #!/bin/bash +# called by dracut +cmdline() { + is_dasd() { + local _dev=$1 + local _devpath=$(cd -P /sys/dev/block/$_dev ; echo $PWD) + + [ "${_devpath#*/dasd}" == "$_devpath" ] && return 1 + _ccw="${_devpath%%/block/*}" + echo "rd.dasd=${_ccw##*/}" + return 0 + } + [[ $hostonly ]] || [[ $mount_needs ]] && { + for_each_host_dev_and_slaves is_dasd || return 255 + } +} + # called by dracut check() { local _arch=$(uname -m) + local found=0 + local bdev [ "$_arch" = "s390" -o "$_arch" = "s390x" ] || return 1 require_binaries /usr/lib/udev/collect || return 1 + + [[ $hostonly ]] || [[ $mount_needs ]] && { + for bdev in /sys/block/* ; do + case "${bdev##*/}" in + dasd*) + found=$(($found+1)); + break; + esac + done + [ $found -eq 0 ] && return 255 + } return 0 } @@ -17,6 +46,10 @@ depends() { # called by dracut install() { inst_hook cmdline 30 "$moddir/parse-dasd.sh" + if [[ $hostonly_cmdline == "yes" ]] ; then + local _dasd=$(cmdline) + [[ $_dasd ]] && printf "%s\n" "$_dasd" >> "${initdir}/etc/cmdline.d/95dasd.conf" + fi if [[ $hostonly ]] ; then inst_rules_wildcard 51-dasd-*.rules inst_rules_wildcard 41-s390x-dasd-*.rules