dracut/0080-95dasd_rules-print-out-rd.dasd-commandline.patch
Thomas Renninger 9f28177407 Accepting request 293267 from home:trenn:branches:Base:System
- Update to dracut mainline version 041.
  Half of the patches got integrated mainline.
  Some others have been merged together when it made sense some have
  been left out, but are still in the repository as they need some special
  treating and mainline discussion whether/how they get added. These are
  also not urgently needed, but are debugging patches.
  I broke the rule here to mention every added/deleted/modified patch as
  every patch is touched and every 2nd  got removed (mainline integrated).
  I also re-ordered the patches in the PatchXY: area for easier merging them
  and get them discussed and posted mainline easier, topic by topic.

OBS-URL: https://build.opensuse.org/request/show/293267
OBS-URL: https://build.opensuse.org/package/show/Base:System/dracut?expand=0&rev=214
2015-03-31 14:12:12 +00:00

72 lines
2.3 KiB
Diff

From 3e2e526a74cdad48d40a1ec58dac9f709d8fef0e Mon Sep 17 00:00:00 2001
From: Hannes Reinecke <hare@suse.de>
Date: Thu, 26 Jun 2014 10:50:43 +0200
Subject: 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>
---
modules.d/95dasd_rules/module-setup.sh | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
Index: dracut-041/modules.d/95dasd_rules/module-setup.sh
===================================================================
--- dracut-041.orig/modules.d/95dasd_rules/module-setup.sh 2015-03-17 13:19:49.341320467 +0100
+++ dracut-041/modules.d/95dasd_rules/module-setup.sh 2015-03-17 13:19:49.873350116 +0100
@@ -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 @@
# 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