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
parent
e5d21b80c0
commit
1362641310
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue