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 <hare@suse.de>
master
Hannes Reinecke 2014-06-26 10:50:43 +02:00 committed by Daniel Molkentin
parent e5d21b80c0
commit 1362641310
1 changed files with 33 additions and 0 deletions

View File

@ -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