From b523995f47b71476df2914c06b8500cfb9879b2dd46eebc497f5540d769b9135 Mon Sep 17 00:00:00 2001 From: Shawn Dunn Date: Wed, 25 Jun 2014 15:13:52 +0000 Subject: [PATCH 1/2] Accepting request 238369 from home:hreinecke:branches:Base:System - More empty commandline fixes * Add: 0074-More-empty-cmdline-fixes.patch - 95dasd_rules: enable parsing of rd.dasd= commandline parameter * Add: 0075-95dasd_rules-enable-parsing-of-rd.dasd-commandline-p.patch - Correctly set cio_ignore for dynamic s390 rules * Add: 0076-Correctly-set-cio_ignore-for-dynamic-s390-rules.patch - 90multipath: add missing 11-dm-mpath.rules file (bnc#883149) * Add: 0077-90multipath-add-missing-11-dm-mpath.rules-file.patch - Restore original IFS value (bnc#883770) * Add: 0078-Restore-original-IFS-value.patch - Fix non-export of journal dev boot options * Add: 0071-Fix-non-export-of-journal-dev-boot-options.patch - Also export root= boot param for hostonly-cmdline * Add: 0072-Also-export-root-boot-param-for-hostonly-cmdline-cas.patch - Don't create lots of empty cmdline files * Add: 0073-Don-t-create-lots-of-empty-cmdline-files-for-hostonl.patch OBS-URL: https://build.opensuse.org/request/show/238369 OBS-URL: https://build.opensuse.org/package/show/Base:System/dracut?expand=0&rev=164 --- ...n-export-of-journal-dev-boot-options.patch | 32 +++ ...-boot-param-for-hostonly-cmdline-cas.patch | 50 ++++ ...s-of-empty-cmdline-files-for-hostonl.patch | 96 ++++++++ 0074-More-empty-cmdline-fixes.patch | 80 ++++++ ...ble-parsing-of-rd.dasd-commandline-p.patch | 61 +++++ ...et-cio_ignore-for-dynamic-s390-rules.patch | 46 ++++ ...h-add-missing-11-dm-mpath.rules-file.patch | 31 +++ 0078-Restore-original-IFS-value.patch | 227 ++++++++++++++++++ dracut.changes | 24 ++ dracut.spec | 16 ++ 10 files changed, 663 insertions(+) create mode 100644 0071-Fix-non-export-of-journal-dev-boot-options.patch create mode 100644 0072-Also-export-root-boot-param-for-hostonly-cmdline-cas.patch create mode 100644 0073-Don-t-create-lots-of-empty-cmdline-files-for-hostonl.patch create mode 100644 0074-More-empty-cmdline-fixes.patch create mode 100644 0075-95dasd_rules-enable-parsing-of-rd.dasd-commandline-p.patch create mode 100644 0076-Correctly-set-cio_ignore-for-dynamic-s390-rules.patch create mode 100644 0077-90multipath-add-missing-11-dm-mpath.rules-file.patch create mode 100644 0078-Restore-original-IFS-value.patch diff --git a/0071-Fix-non-export-of-journal-dev-boot-options.patch b/0071-Fix-non-export-of-journal-dev-boot-options.patch new file mode 100644 index 0000000..ad0bf4a --- /dev/null +++ b/0071-Fix-non-export-of-journal-dev-boot-options.patch @@ -0,0 +1,32 @@ +From f483c78483992a7778751f9a01bbf09feb2b5bbe Mon Sep 17 00:00:00 2001 +From: Thorsten Behrens +Date: Wed, 18 Jun 2014 01:57:29 +0200 +Subject: Fix non-export of journal dev boot options. + +cmdline_journal does not contain linefeeds anymore, so read +silently skipped it altogether. + +Signed-off-by: Thorsten Behrens +--- + modules.d/95rootfs-block/module-setup.sh | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/modules.d/95rootfs-block/module-setup.sh b/modules.d/95rootfs-block/module-setup.sh +index b209ab6..5f1b826 100755 +--- a/modules.d/95rootfs-block/module-setup.sh ++++ b/modules.d/95rootfs-block/module-setup.sh +@@ -45,9 +45,8 @@ cmdline() { + # called by dracut + install() { + if [[ $hostonly_cmdline == "yes" ]]; then +- cmdline_journal | while read journaldev; do +- [[ $journaldev ]] && printf "%s\n" "$journaldev" >> "${initdir}/etc/cmdline.d/95root-journaldev.conf" +- done ++ local _journaldev=$(cmdline_journal) ++ [[ $_journaldev ]] && printf "%s\n" "$_journaldev" >> "${initdir}/etc/cmdline.d/95root-journaldev.conf" + fi + + inst_multiple umount +-- +1.8.4.5 + diff --git a/0072-Also-export-root-boot-param-for-hostonly-cmdline-cas.patch b/0072-Also-export-root-boot-param-for-hostonly-cmdline-cas.patch new file mode 100644 index 0000000..f0927bb --- /dev/null +++ b/0072-Also-export-root-boot-param-for-hostonly-cmdline-cas.patch @@ -0,0 +1,50 @@ +From df582ab4c05fc417ce9b6b8a8bed4e259041013b Mon Sep 17 00:00:00 2001 +From: Thorsten Behrens +Date: Wed, 18 Jun 2014 02:00:28 +0200 +Subject: Also export root= boot param for hostonly-cmdline case. + +If there's a root fallback, at least attempt to have it falling +back to the last root filesystem this system ran off of. + +Signed-off-by: Thorsten Behrens +--- + modules.d/95rootfs-block/module-setup.sh | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/modules.d/95rootfs-block/module-setup.sh b/modules.d/95rootfs-block/module-setup.sh +index 5f1b826..b868d0b 100755 +--- a/modules.d/95rootfs-block/module-setup.sh ++++ b/modules.d/95rootfs-block/module-setup.sh +@@ -31,14 +31,18 @@ cmdline_journal() { + return 0 + } + +-# called by dracut +-cmdline() { ++cmdline_rootfs() { + local dev=/dev/block/$(find_root_block_device) + if [ -e $dev ]; then + printf " root=%s" "$(shorten_persistent_dev "$(get_persistent_dev "$dev")")" + printf " rootflags=%s" "$(find_mp_fsopts /)" + printf " rootfstype=%s" "$(find_mp_fstype /)" + fi ++} ++ ++# called by dracut ++cmdline() { ++ cmdline_rootfs + cmdline_journal + } + +@@ -47,6 +51,8 @@ install() { + if [[ $hostonly_cmdline == "yes" ]]; then + local _journaldev=$(cmdline_journal) + [[ $_journaldev ]] && printf "%s\n" "$_journaldev" >> "${initdir}/etc/cmdline.d/95root-journaldev.conf" ++ local _rootdev=$(cmdline_rootfs) ++ [[ $_rootdev ]] && printf "%s\n" "$_rootdev" >> "${initdir}/etc/cmdline.d/95root-dev.conf" + fi + + inst_multiple umount +-- +1.8.4.5 + diff --git a/0073-Don-t-create-lots-of-empty-cmdline-files-for-hostonl.patch b/0073-Don-t-create-lots-of-empty-cmdline-files-for-hostonl.patch new file mode 100644 index 0000000..6f09d07 --- /dev/null +++ b/0073-Don-t-create-lots-of-empty-cmdline-files-for-hostonl.patch @@ -0,0 +1,96 @@ +From 706f28a7bc193455fcd0656f70adaee442f12ff8 Mon Sep 17 00:00:00 2001 +From: Thorsten Behrens +Date: Wed, 18 Jun 2014 02:09:38 +0200 +Subject: Don't create lots of empty cmdline files for hostonly-cmdline case + +This aligns other places piping cmdline() output to cmdline.d files +with the earlier fix for 95rootfs-block. + +Signed-off-by: Thorsten Behrens +--- + modules.d/90crypt/module-setup.sh | 4 ++-- + modules.d/90dmraid/module-setup.sh | 4 ++-- + modules.d/90lvm/module-setup.sh | 4 ++-- + modules.d/90mdraid/module-setup.sh | 4 ++-- + modules.d/95resume/module-setup.sh | 5 ++--- + 5 files changed, 10 insertions(+), 11 deletions(-) + +diff --git a/modules.d/90crypt/module-setup.sh b/modules.d/90crypt/module-setup.sh +index 5707404..e423a95 100755 +--- a/modules.d/90crypt/module-setup.sh ++++ b/modules.d/90crypt/module-setup.sh +@@ -52,8 +52,8 @@ cmdline() { + install() { + + if [[ $hostonly_cmdline == "yes" ]]; then +- cmdline >> "${initdir}/etc/cmdline.d/90crypt.conf" +- echo >> "${initdir}/etc/cmdline.d/90crypt.conf" ++ local _cryptconf=$(cmdline) ++ [[ $_cryptconf ]] && printf "%s\n" "$_cryptconf" >> "${initdir}/etc/cmdline.d/90crypt.conf" + fi + + inst_multiple cryptsetup rmdir readlink umount +diff --git a/modules.d/90dmraid/module-setup.sh b/modules.d/90dmraid/module-setup.sh +index aebb28d..3769dd0 100755 +--- a/modules.d/90dmraid/module-setup.sh ++++ b/modules.d/90dmraid/module-setup.sh +@@ -66,8 +66,8 @@ install() { + local _i + + if [[ $hostonly_cmdline == "yes" ]]; then +- cmdline >> "${initdir}/etc/cmdline.d/90dmraid.conf" +- echo >> "${initdir}/etc/cmdline.d/90dmraid.conf" ++ local _raidconf=$(cmdline) ++ [[ $_raidconf ]] && printf "%s\n" "$_raidconf" >> "${initdir}/etc/cmdline.d/90dmraid.conf" + fi + + inst_multiple dmraid +diff --git a/modules.d/90lvm/module-setup.sh b/modules.d/90lvm/module-setup.sh +index 5b810b9..2a5b392 100755 +--- a/modules.d/90lvm/module-setup.sh ++++ b/modules.d/90lvm/module-setup.sh +@@ -51,8 +51,8 @@ install() { + inst lvm + + if [[ $hostonly_cmdline == "yes" ]]; then +- cmdline >> "${initdir}/etc/cmdline.d/90lvm.conf" +- echo >> "${initdir}/etc/cmdline.d/90lvm.conf" ++ local _lvmconf=$(cmdline) ++ [[ $_lvmconf ]] && printf "%s\n" "$_lvmconf" >> "${initdir}/etc/cmdline.d/90lvm.conf" + fi + + inst_rules "$moddir/64-lvm.rules" +diff --git a/modules.d/90mdraid/module-setup.sh b/modules.d/90mdraid/module-setup.sh +index 4963537..da464b8 100755 +--- a/modules.d/90mdraid/module-setup.sh ++++ b/modules.d/90mdraid/module-setup.sh +@@ -73,8 +73,8 @@ install() { + inst $(command -v mdadm) /sbin/mdadm + + if [[ $hostonly_cmdline == "yes" ]]; then +- cmdline >> "${initdir}/etc/cmdline.d/90mdraid.conf" +- echo >> "${initdir}/etc/cmdline.d/90mdraid.conf" ++ local _raidconf=$(cmdline) ++ [[ $_raidconf ]] && printf "%s\n" "$_raidconf" >> "${initdir}/etc/cmdline.d/90mdraid.conf" + fi + + # > "${initdir}/etc/cmdline.d/95resume.conf" +- echo >> "${initdir}/etc/cmdline.d/95resume.conf" ++ local _resumeconf=$(cmdline) ++ [[ $_resumeconf ]] && printf "%s\n" "$_resumeconf" >> "${initdir}/etc/cmdline.d/95resume.conf" + + # Optional uswsusp support + for _bin in /usr/sbin/resume /usr/lib/suspend/resume /usr/lib/uswsusp/resume +-- +1.8.4.5 + diff --git a/0074-More-empty-cmdline-fixes.patch b/0074-More-empty-cmdline-fixes.patch new file mode 100644 index 0000000..d9050c1 --- /dev/null +++ b/0074-More-empty-cmdline-fixes.patch @@ -0,0 +1,80 @@ +From c323ff844931d7b9d171d3c11f8c3152c346a62a Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Wed, 18 Jun 2014 09:59:22 +0200 +Subject: More empty cmdline fixes + +This fixes up some more modules which might print out empty +commandline files. + +Signed-off-by: Hannes Reinecke +--- + modules.d/81cio_ignore/module-setup.sh | 5 +++-- + modules.d/95fcoe/module-setup.sh | 4 ++-- + modules.d/95iscsi/module-setup.sh | 13 +++++++------ + 3 files changed, 12 insertions(+), 10 deletions(-) + +diff --git a/modules.d/81cio_ignore/module-setup.sh b/modules.d/81cio_ignore/module-setup.sh +index 42ae2f9..37b414b 100644 +--- a/modules.d/81cio_ignore/module-setup.sh ++++ b/modules.d/81cio_ignore/module-setup.sh +@@ -30,8 +30,9 @@ cmdline() { + + # called by dracut + install() { +- if [[ $hostonly_cmdline == "yes" ]];then +- cmdline >> "${initdir}/etc/cmdline.d/01cio_accept.conf" ++ if [[ $hostonly_cmdline == "yes" ]] ; then ++ local _cio_accept=$(cmdline) ++ [[ $_cio_accept ]] && printf "%s\n" "$_cio_accept" >> "${initdir}/etc/cmdline.d/01cio_accept.conf" + fi + + inst_hook cmdline 20 "$moddir/parse-cio_accept.sh" +diff --git a/modules.d/95fcoe/module-setup.sh b/modules.d/95fcoe/module-setup.sh +index 57d5c1e..9ca4c67 100755 +--- a/modules.d/95fcoe/module-setup.sh ++++ b/modules.d/95fcoe/module-setup.sh +@@ -74,8 +74,8 @@ install() { + mkdir -m 0755 -p "$initdir/var/lib/lldpad" + + if [[ $hostonly_cmdline == "yes" ]] ; then +- cmdline >> "${initdir}/etc/cmdline.d/95fcoe.conf" +- echo >> "${initdir}/etc/cmdline.d/95fcoe.conf" ++ local _fcoeconf=$(cmdline) ++ [[ $_fcoeconf ]] && printf "%s\n" "$_fcoeconf" >> "${initdir}/etc/cmdline.d/95fcoe.conf" + fi + inst "$moddir/fcoe-up.sh" "/sbin/fcoe-up" + inst "$moddir/fcoe-edd.sh" "/sbin/fcoe-edd" +diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh +index e94e913..b90e298 100755 +--- a/modules.d/95iscsi/module-setup.sh ++++ b/modules.d/95iscsi/module-setup.sh +@@ -78,12 +78,6 @@ depends() { + installkernel() { + local _arch=$(uname -m) + +- # Detect iBFT and perform mandatory steps +- if [[ $hostonly_cmdline == "yes" ]] ; then +- install_ibft > "${initdir}/etc/cmdline.d/95iscsi.conf" +- echo >> "${initdir}/etc/cmdline.d/95iscsi.conf" +- fi +- + instmods bnx2i qla4xxx cxgb3i cxgb4i be2iscsi + hostonly="" instmods iscsi_tcp iscsi_ibft crc32c iscsi_boot_sysfs + iscsi_module_filter() { +@@ -133,6 +127,13 @@ install() { + inst_multiple umount iscsistart hostname iscsi-iname + inst_multiple -o iscsiuio + inst_libdir_file 'libgcc_s.so*' ++ ++ # Detect iBFT and perform mandatory steps ++ if [[ $hostonly_cmdline == "yes" ]] ; then ++ local _ibftconf=$(install_ibft) ++ [[ $_ibftconf ]] && printf "%s\n" "$_ibftconf" >> "${initdir}/etc/cmdline.d/95iscsi.conf" ++ fi ++ + inst_hook cmdline 90 "$moddir/parse-iscsiroot.sh" + inst_hook cleanup 90 "$moddir/cleanup-iscsi.sh" + inst "$moddir/iscsiroot.sh" "/sbin/iscsiroot" +-- +1.8.4.5 + diff --git a/0075-95dasd_rules-enable-parsing-of-rd.dasd-commandline-p.patch b/0075-95dasd_rules-enable-parsing-of-rd.dasd-commandline-p.patch new file mode 100644 index 0000000..7e0bf4c --- /dev/null +++ b/0075-95dasd_rules-enable-parsing-of-rd.dasd-commandline-p.patch @@ -0,0 +1,61 @@ +From 1ab0a485f8e3a3b0ba62ea2f920fd3457039e7f1 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Wed, 18 Jun 2014 15:10:46 +0200 +Subject: 95dasd_rules: enable parsing of rd.dasd= commandline parameter + +Dracut documents the 'rd.dasd=' parameter, so we should be +enabling the usage of this parameter, too. + +Signed-off-by: Hannes Reinecke +--- + modules.d/95dasd_rules/parse-dasd.sh | 37 ++++++++++++++++++++++++++++++++++++ + 1 file changed, 37 insertions(+) + +diff --git a/modules.d/95dasd_rules/parse-dasd.sh b/modules.d/95dasd_rules/parse-dasd.sh +index 9389c44..a0ba1ff 100755 +--- a/modules.d/95dasd_rules/parse-dasd.sh ++++ b/modules.d/95dasd_rules/parse-dasd.sh +@@ -54,3 +54,40 @@ for dasd_arg in $(getargs root=) $(getargs resume=); do + fi + ) + done ++ ++for dasd_arg in $(getargs rd.dasd=); do ++ ( ++ IFS="," ++ set -- $dasd_arg ++ unset IFS ++ while (($# > 0)); do ++ case $1 in ++ autodetect|probeonly) ++ shift ++ ;; ++ *-*) ++ range=$1 ++ IFS="-" ++ set -- $range ++ start=${1#0.0.} ++ shift ++ end=${1#0.0.} ++ shift ++ unset IFS ++ for dev in $(seq $(( 10#$start )) $(( 10#$end )) ) ; do ++ create_udev_rule $(printf "0.0.%04d" "$dev") ++ done ++ ;; ++ *) ++ dev=${1%(ro)} ++ if [ "$dev" != "$1" ] ; then ++ ro=1 ++ fi ++ dev=${dev#0.0.} ++ create_udev_rule $(printf "0.0.%04d" $(( 10#$dev )) ) ++ shift ++ ;; ++ esac ++ done ++ ) ++done +-- +1.8.4.5 + diff --git a/0076-Correctly-set-cio_ignore-for-dynamic-s390-rules.patch b/0076-Correctly-set-cio_ignore-for-dynamic-s390-rules.patch new file mode 100644 index 0000000..5b8beda --- /dev/null +++ b/0076-Correctly-set-cio_ignore-for-dynamic-s390-rules.patch @@ -0,0 +1,46 @@ +From 7a725ea4a1cb606edd3f060f46818250f2a82a1a Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Wed, 18 Jun 2014 15:17:21 +0200 +Subject: Correctly set cio_ignore for dynamic s390 rules + +When converting 'rd.zfcp' and 'rd.dasd' into udev rules we +need to make sure the enable those device ids via cio_ignore, +otherwise the rules might never be called. + +Signed-off-by: Hannes Reinecke +--- + modules.d/95dasd_rules/parse-dasd.sh | 3 +++ + modules.d/95zfcp_rules/parse-zfcp.sh | 3 +++ + 2 files changed, 6 insertions(+) + +diff --git a/modules.d/95dasd_rules/parse-dasd.sh b/modules.d/95dasd_rules/parse-dasd.sh +index a0ba1ff..94a4b30 100755 +--- a/modules.d/95dasd_rules/parse-dasd.sh ++++ b/modules.d/95dasd_rules/parse-dasd.sh +@@ -38,6 +38,9 @@ ACTION=="add", SUBSYSTEM=="ccw", KERNEL=="$ccw", IMPORT{program}="collect $ccw % + ACTION=="add", SUBSYSTEM=="drivers", KERNEL=="$_drv", IMPORT{program}="collect $ccw %k ${ccw} $_drv" + ACTION=="add", ENV{COLLECT_$ccw}=="0", ATTR{[ccw/$ccw]online}="1" + EOF ++ if [ -x /sbin/cio_ignore ] && ! cio_ignore -i $ccw > /dev/null ; then ++ cio_ignore -r $ccw ++ fi + } + + for dasd_arg in $(getargs root=) $(getargs resume=); do +diff --git a/modules.d/95zfcp_rules/parse-zfcp.sh b/modules.d/95zfcp_rules/parse-zfcp.sh +index 24dbdd3..8538ae3 100755 +--- a/modules.d/95zfcp_rules/parse-zfcp.sh ++++ b/modules.d/95zfcp_rules/parse-zfcp.sh +@@ -37,6 +37,9 @@ EOF + ACTION=="add", KERNEL=="rport-*", ATTR{port_name}=="$wwpn", SUBSYSTEMS=="ccw", KERNELS=="$ccw", ATTR{[ccw/$ccw]$wwpn/unit_add}="$lun" + EOF + fi ++ if [ -x /sbin/cio_ignore ] && ! cio_ignore -i $ccw > /dev/null ; then ++ cio_ignore -r $ccw ++ fi + } + + for zfcp_arg in $(getargs rd.zfcp); do +-- +1.8.4.5 + diff --git a/0077-90multipath-add-missing-11-dm-mpath.rules-file.patch b/0077-90multipath-add-missing-11-dm-mpath.rules-file.patch new file mode 100644 index 0000000..11711bf --- /dev/null +++ b/0077-90multipath-add-missing-11-dm-mpath.rules-file.patch @@ -0,0 +1,31 @@ +From 3d4030e354b12686cb91d41a1ec8bc00df37ea5f Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Wed, 18 Jun 2014 17:48:16 +0200 +Subject: 90multipath: add missing 11-dm-mpath.rules file + +The 11-dm-mpath.rules file had been missing, causing +blacklisting to not work properly. + +References: bnc#883149 + +Signed-off-by: Hannes Reinecke +--- + modules.d/90multipath/module-setup.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh +index 7b20709..22ff580 100755 +--- a/modules.d/90multipath/module-setup.sh ++++ b/modules.d/90multipath/module-setup.sh +@@ -102,7 +102,7 @@ install() { + + inst_hook cleanup 80 "$moddir/multipathd-needshutdown.sh" + +- inst_rules 56-multipath.rules \ ++ inst_rules 11-dm-mpath.rules 56-multipath.rules \ + 66-kpartx.rules 67-kpartx-compat.rules + } + +-- +1.8.4.5 + diff --git a/0078-Restore-original-IFS-value.patch b/0078-Restore-original-IFS-value.patch new file mode 100644 index 0000000..747a073 --- /dev/null +++ b/0078-Restore-original-IFS-value.patch @@ -0,0 +1,227 @@ +From 3ad963984b30a990c1ac94c81deb410322daafb6 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Mon, 23 Jun 2014 14:06:47 +0200 +Subject: Restore original IFS value + +Whenever the IFS setting is modified it needs to be restored to +its original value. Otherwise it'll lead to unexpected results. + +References: bnc#883770 + +Signed-off-by: Hannes Reinecke +--- + modules.d/81cio_ignore/parse-cio_accept.sh | 3 ++- + modules.d/90kernel-modules/insmodpost.sh | 2 +- + modules.d/90kernel-modules/parse-kernel.sh | 4 ++++ + modules.d/95dasd/parse-dasd.sh | 2 +- + modules.d/95dasd_rules/parse-dasd.sh | 8 +++++--- + modules.d/95iscsi/module-setup.sh | 6 ++++-- + modules.d/95zfcp/parse-zfcp.sh | 2 +- + modules.d/95zfcp_rules/parse-zfcp.sh | 4 +++- + modules.d/98systemd/dracut-pre-udev.sh | 4 ++-- + 9 files changed, 23 insertions(+), 12 deletions(-) + +diff --git a/modules.d/81cio_ignore/parse-cio_accept.sh b/modules.d/81cio_ignore/parse-cio_accept.sh +index fec8a92..4f899d2 100644 +--- a/modules.d/81cio_ignore/parse-cio_accept.sh ++++ b/modules.d/81cio_ignore/parse-cio_accept.sh +@@ -10,6 +10,7 @@ if [ -z $CIO_IGNORE ] ; then + return + fi + if [ -n "$CIO_ACCEPT" ] ; then ++ OLDIFS="$IFS" + IFS=, + set -- $CIO_ACCEPT + while (($# > 0)) ; do +@@ -17,5 +18,5 @@ if [ -n "$CIO_ACCEPT" ] ; then + cio_ignore --remove $1 + shift + done +- unset IFS ++ IFS="$OLDIFS" + fi +diff --git a/modules.d/90kernel-modules/insmodpost.sh b/modules.d/90kernel-modules/insmodpost.sh +index d2b8723..141f091 100755 +--- a/modules.d/90kernel-modules/insmodpost.sh ++++ b/modules.d/90kernel-modules/insmodpost.sh +@@ -6,7 +6,7 @@ + + for modlist in $(getargs rd.driver.post -d rdinsmodpost=); do + ( +- IFS=, ++ local IFS=, + for m in $modlist; do + modprobe $m + done +diff --git a/modules.d/90kernel-modules/parse-kernel.sh b/modules.d/90kernel-modules/parse-kernel.sh +index fa891bf..e012e52 100755 +--- a/modules.d/90kernel-modules/parse-kernel.sh ++++ b/modules.d/90kernel-modules/parse-kernel.sh +@@ -13,10 +13,12 @@ fi + + for i in $(getargs rd.driver.pre -d rdloaddriver=); do + ( ++ OLDIFS="$IFS" + IFS=, + for p in $i; do + modprobe $p 2>&1 | vinfo + done ++ IFS="$OLDIFS" + ) + done + +@@ -25,10 +27,12 @@ done + + for i in $(getargs rd.driver.blacklist -d rdblacklist=); do + ( ++ OLDIFS="$IFS" + IFS=, + for p in $i; do + echo "blacklist $p" >> $_modprobe_d/initramfsblacklist.conf + done ++ IFS="$OLDIFS" + ) + done + +diff --git a/modules.d/95dasd/parse-dasd.sh b/modules.d/95dasd/parse-dasd.sh +index 1aa1455..aba720b 100755 +--- a/modules.d/95dasd/parse-dasd.sh ++++ b/modules.d/95dasd/parse-dasd.sh +@@ -3,7 +3,7 @@ + # ex: ts=8 sw=4 sts=4 et filetype=sh + for dasd_arg in $(getargs rd.dasd= -d rd_DASD= DASD=); do + ( +- IFS="," ++ local IFS="," + set -- $dasd_arg + echo "$@" | normalize_dasd_arg >> /etc/dasd.conf + ) +diff --git a/modules.d/95dasd_rules/parse-dasd.sh b/modules.d/95dasd_rules/parse-dasd.sh +index 94a4b30..02b4aea 100755 +--- a/modules.d/95dasd_rules/parse-dasd.sh ++++ b/modules.d/95dasd_rules/parse-dasd.sh +@@ -51,8 +51,10 @@ for dasd_arg in $(getargs root=) $(getargs resume=); do + break; + esac + if [ -n "$ccw_arg" ] ; then ++ OLDIFS="$IFS" + IFS="-" + set -- $ccw_arg ++ IFS="$OLDIFS" + create_udev_rule $2 + fi + ) +@@ -60,9 +62,8 @@ done + + for dasd_arg in $(getargs rd.dasd=); do + ( +- IFS="," ++ local IFS="," + set -- $dasd_arg +- unset IFS + while (($# > 0)); do + case $1 in + autodetect|probeonly) +@@ -70,13 +71,14 @@ for dasd_arg in $(getargs rd.dasd=); do + ;; + *-*) + range=$1 ++ OLDIFS="$IFS" + IFS="-" + set -- $range + start=${1#0.0.} + shift + end=${1#0.0.} + shift +- unset IFS ++ IFS="$OLDIFS" + for dev in $(seq $(( 10#$start )) $(( 10#$end )) ) ; do + create_udev_rule $(printf "0.0.%04d" "$dev") + done +diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh +index b90e298..cfa6f39 100755 +--- a/modules.d/95iscsi/module-setup.sh ++++ b/modules.d/95iscsi/module-setup.sh +@@ -3,16 +3,18 @@ + # ex: ts=8 sw=4 sts=4 et filetype=sh + + get_ibft_mod() { +- local ibft_mac=$1 ++ local ibft_mac=$1 IFS + # Return the iSCSI offload module for a given MAC address + iscsiadm -m iface | while read iface_name iface_desc ; do ++ OLDIFS="$IFS" + IFS=$',' + set -- $iface_desc ++ IFS="$OLDIFS" + if [ "$ibft_mac" = "$2" ] ; then + echo $1 + return 0 + fi +- unset IFS ++ + done + } + +diff --git a/modules.d/95zfcp/parse-zfcp.sh b/modules.d/95zfcp/parse-zfcp.sh +index 9b22d93..1d21472 100755 +--- a/modules.d/95zfcp/parse-zfcp.sh ++++ b/modules.d/95zfcp/parse-zfcp.sh +@@ -6,7 +6,7 @@ getargbool 1 rd.zfcp.conf -d -n rd_NO_ZFCPCONF || rm /etc/zfcp.conf + + for zfcp_arg in $(getargs rd.zfcp -d 'rd_ZFCP='); do + ( +- IFS="," ++ local IFS="," + set $zfcp_arg + echo "$@" >> /etc/zfcp.conf + ) +diff --git a/modules.d/95zfcp_rules/parse-zfcp.sh b/modules.d/95zfcp_rules/parse-zfcp.sh +index 8538ae3..56152da 100755 +--- a/modules.d/95zfcp_rules/parse-zfcp.sh ++++ b/modules.d/95zfcp_rules/parse-zfcp.sh +@@ -44,7 +44,7 @@ EOF + + for zfcp_arg in $(getargs rd.zfcp); do + ( +- IFS="," ++ local IFS="," + set $zfcp_arg + create_udev_rule $1 $2 $3 + ) +@@ -58,8 +58,10 @@ for zfcp_arg in $(getargs root=) $(getargs resume=); do + break; + esac + if [ -n "$ccw_arg" ] ; then ++ OLDIFS="$IFS" + IFS="-" + set -- $ccw_arg ++ IFS="$OLDIFS" + wwpn=${4%:*} + lun=${4#*:} + create_udev_rule $2 $wwpn $lun +diff --git a/modules.d/98systemd/dracut-pre-udev.sh b/modules.d/98systemd/dracut-pre-udev.sh +index 638da40..77977d2 100755 +--- a/modules.d/98systemd/dracut-pre-udev.sh ++++ b/modules.d/98systemd/dracut-pre-udev.sh +@@ -26,7 +26,7 @@ fi + + for i in $(getargs rd.driver.pre -d rdloaddriver=); do + ( +- IFS=, ++ local IFS=, + for p in $i; do + modprobe $p 2>&1 | vinfo + done +@@ -38,7 +38,7 @@ done + + for i in $(getargs rd.driver.blacklist -d rdblacklist=); do + ( +- IFS=, ++ local IFS=, + for p in $i; do + echo "blacklist $p" >> $_modprobe_d/initramfsblacklist.conf + done +-- +1.8.4.5 + diff --git a/dracut.changes b/dracut.changes index 6d60573..0c0ebb0 100644 --- a/dracut.changes +++ b/dracut.changes @@ -1,3 +1,27 @@ +------------------------------------------------------------------- +Mon Jun 23 14:13:53 CEST 2014 - hare@suse.de + +- More empty commandline fixes + * Add: 0074-More-empty-cmdline-fixes.patch +- 95dasd_rules: enable parsing of rd.dasd= commandline parameter + * Add: 0075-95dasd_rules-enable-parsing-of-rd.dasd-commandline-p.patch +- Correctly set cio_ignore for dynamic s390 rules + * Add: 0076-Correctly-set-cio_ignore-for-dynamic-s390-rules.patch +- 90multipath: add missing 11-dm-mpath.rules file (bnc#883149) + * Add: 0077-90multipath-add-missing-11-dm-mpath.rules-file.patch +- Restore original IFS value (bnc#883770) + * Add: 0078-Restore-original-IFS-value.patch + +------------------------------------------------------------------- +Wed Jun 18 02:00:28 CEST 2014 - tbehrens@suse.com + +- Fix non-export of journal dev boot options + * Add: 0071-Fix-non-export-of-journal-dev-boot-options.patch +- Also export root= boot param for hostonly-cmdline + * Add: 0072-Also-export-root-boot-param-for-hostonly-cmdline-cas.patch +- Don't create lots of empty cmdline files + * Add: 0073-Don-t-create-lots-of-empty-cmdline-files-for-hostonl.patch + ------------------------------------------------------------------- Tue Jun 17 16:58:03 CEST 2014 - hare@suse.de diff --git a/dracut.spec b/dracut.spec index b019357..90b63ba 100644 --- a/dracut.spec +++ b/dracut.spec @@ -91,6 +91,14 @@ Patch67: 0067-95fcoe-check-always-returns-255.patch Patch68: 0068-95fcoe-uefi-Test-for-EFI-firmware.patch Patch69: 0069-81cio_ignore-skip-module-if-cio_ignore-is-not-active.patch Patch70: 0070-81cio_ignore-rewrite-module.patch +Patch71: 0071-Fix-non-export-of-journal-dev-boot-options.patch +Patch72: 0072-Also-export-root-boot-param-for-hostonly-cmdline-cas.patch +Patch73: 0073-Don-t-create-lots-of-empty-cmdline-files-for-hostonl.patch +Patch74: 0074-More-empty-cmdline-fixes.patch +Patch75: 0075-95dasd_rules-enable-parsing-of-rd.dasd-commandline-p.patch +Patch76: 0076-Correctly-set-cio_ignore-for-dynamic-s390-rules.patch +Patch77: 0077-90multipath-add-missing-11-dm-mpath.rules-file.patch +Patch78: 0078-Restore-original-IFS-value.patch BuildRequires: asciidoc BuildRequires: bash @@ -202,6 +210,14 @@ and its cryptography during startup. %patch68 -p1 %patch69 -p1 %patch70 -p1 +%patch71 -p1 +%patch72 -p1 +%patch73 -p1 +%patch74 -p1 +%patch75 -p1 +%patch76 -p1 +%patch77 -p1 +%patch78 -p1 %build %configure\ From 5f3aadd9ae372aaaffb2fd1545f82641bd93c3ad8dec60482c65e3a3a5080ab7 Mon Sep 17 00:00:00 2001 From: Robert Milasan Date: Fri, 27 Jun 2014 07:31:06 +0000 Subject: [PATCH 2/2] Accepting request 238799 from home:hreinecke:branches:Base:System - 95dasd_rules: Fixup rd.dasd parsing * Add: 0079-95dasd_rules-fixup-rd.dasd-parsing.patch - 95dasd_rules: Print out rd.dasd command-line * Add: 0080-95dasd_rules-print-out-rd.dasd-commandline.patch - 95dasd_mod: do not set module parameter * Add: 0081-95dasd_mod-do-not-set-module-parameters-if-dasd_cio_.patch - 00warpclock: Check for /sbin/hwclock (bnc#884513) * Add: 0082-00warpclock-check-for-sbin-hwclock.patch - 95zfcp_rules: Fixup rd.zfcp parsing * Add: 0083-95zfcp_rules-Fixup-rd.zfcp-parsing.patch - 95rootfs_block: terminate commandline parameter * Add: 0084-95rootfs-block-Correctly-terminate-commandline-param.patch - 95zfcp_rules: Print out rd.zfcp command-line * Add: 0085-95zfcp_rules-print-out-rd.zfcp-commandline-parameter.patch - 95zfcp_rules: Auto-generate ipl device rule * Add: 0086-95zfcp_rules-Auto-generate-udev-rule-for-ipl-device.patch - 95dasd_rules: Auto-generate ipl device rule * Add: 0087-95dasd_rules-Auto-generate-udev-rule-for-ipl-device.patch OBS-URL: https://build.opensuse.org/request/show/238799 OBS-URL: https://build.opensuse.org/package/show/Base:System/dracut?expand=0&rev=165 --- 0079-95dasd_rules-fixup-rd.dasd-parsing.patch | 71 +++++++++++++++++ ..._rules-print-out-rd.dasd-commandline.patch | 74 ++++++++++++++++++ ...t-set-module-parameters-if-dasd_cio_.patch | 30 ++++++++ 0082-00warpclock-check-for-sbin-hwclock.patch | 32 ++++++++ 0083-95zfcp_rules-Fixup-rd.zfcp-parsing.patch | 60 +++++++++++++++ ...orrectly-terminate-commandline-param.patch | 61 +++++++++++++++ ...nt-out-rd.zfcp-commandline-parameter.patch | 76 +++++++++++++++++++ ...to-generate-udev-rule-for-ipl-device.patch | 59 ++++++++++++++ ...to-generate-udev-rule-for-ipl-device.patch | 36 +++++++++ dracut.changes | 22 ++++++ dracut.spec | 18 +++++ 11 files changed, 539 insertions(+) create mode 100644 0079-95dasd_rules-fixup-rd.dasd-parsing.patch create mode 100644 0080-95dasd_rules-print-out-rd.dasd-commandline.patch create mode 100644 0081-95dasd_mod-do-not-set-module-parameters-if-dasd_cio_.patch create mode 100644 0082-00warpclock-check-for-sbin-hwclock.patch create mode 100644 0083-95zfcp_rules-Fixup-rd.zfcp-parsing.patch create mode 100644 0084-95rootfs-block-Correctly-terminate-commandline-param.patch create mode 100644 0085-95zfcp_rules-print-out-rd.zfcp-commandline-parameter.patch create mode 100644 0086-95zfcp_rules-Auto-generate-udev-rule-for-ipl-device.patch create mode 100644 0087-95dasd_rules-Auto-generate-udev-rule-for-ipl-device.patch diff --git a/0079-95dasd_rules-fixup-rd.dasd-parsing.patch b/0079-95dasd_rules-fixup-rd.dasd-parsing.patch new file mode 100644 index 0000000..55f696d --- /dev/null +++ b/0079-95dasd_rules-fixup-rd.dasd-parsing.patch @@ -0,0 +1,71 @@ +From b302dd2a53864bdd4ff271275fa244f654cb92ca Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 26 Jun 2014 10:49:03 +0200 +Subject: 95dasd_rules: fixup rd.dasd parsing + +There were some errors when rd.dasd parsing, resulting in the +device never to be activated. And we should check for +cio_ignore even if a udev rules has been found. + +Signed-off-by: Hannes Reinecke +--- + modules.d/95dasd_rules/parse-dasd.sh | 15 ++++++++------- + 1 file changed, 8 insertions(+), 7 deletions(-) + +diff --git a/modules.d/95dasd_rules/parse-dasd.sh b/modules.d/95dasd_rules/parse-dasd.sh +index 02b4aea..43ca87a 100755 +--- a/modules.d/95dasd_rules/parse-dasd.sh ++++ b/modules.d/95dasd_rules/parse-dasd.sh +@@ -31,6 +31,10 @@ create_udev_rule() { + esac + [ -z "${_drv}" ] && return 0 + ++ if [ -x /sbin/cio_ignore ] && cio_ignore -i $ccw > /dev/null ; then ++ cio_ignore -r $ccw ++ fi ++ + [ -e ${_rule} ] && return 0 + + cat > $_rule < /dev/null ; then +- cio_ignore -r $ccw +- fi + } + + for dasd_arg in $(getargs root=) $(getargs resume=); do +@@ -48,7 +49,7 @@ for dasd_arg in $(getargs root=) $(getargs resume=); do + case $dasd_arg in + /dev/disk/by-path/ccw-*) + ccw_arg=${dasd_arg##*/} +- break; ++ ;; + esac + if [ -n "$ccw_arg" ] ; then + OLDIFS="$IFS" +@@ -79,8 +80,8 @@ for dasd_arg in $(getargs rd.dasd=); do + end=${1#0.0.} + shift + IFS="$OLDIFS" +- for dev in $(seq $(( 10#$start )) $(( 10#$end )) ) ; do +- create_udev_rule $(printf "0.0.%04d" "$dev") ++ for dev in $(seq $(( 16#$start )) $(( 16#$end )) ) ; do ++ create_udev_rule $(printf "0.0.%04x" "$dev") + done + ;; + *) +@@ -89,7 +90,7 @@ for dasd_arg in $(getargs rd.dasd=); do + ro=1 + fi + dev=${dev#0.0.} +- create_udev_rule $(printf "0.0.%04d" $(( 10#$dev )) ) ++ create_udev_rule $(printf "0.0.%04x" $(( 16#$dev )) ) + shift + ;; + esac +-- +1.8.4.5 + diff --git a/0080-95dasd_rules-print-out-rd.dasd-commandline.patch b/0080-95dasd_rules-print-out-rd.dasd-commandline.patch new file mode 100644 index 0000000..9bd67f6 --- /dev/null +++ b/0080-95dasd_rules-print-out-rd.dasd-commandline.patch @@ -0,0 +1,74 @@ +From 3e2e526a74cdad48d40a1ec58dac9f709d8fef0e Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +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 +--- + modules.d/95dasd_rules/module-setup.sh | 33 +++++++++++++++++++++++++++++++++ + 1 file changed, 33 insertions(+) + +diff --git a/modules.d/95dasd_rules/module-setup.sh b/modules.d/95dasd_rules/module-setup.sh +index 451fc25..e4736a2 100755 +--- a/modules.d/95dasd_rules/module-setup.sh ++++ b/modules.d/95dasd_rules/module-setup.sh +@@ -3,10 +3,39 @@ + # ex: ts=8 sw=4 sts=4 et filetype=sh + + # 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 + } + +@@ -19,6 +48,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 +-- +1.8.4.5 + diff --git a/0081-95dasd_mod-do-not-set-module-parameters-if-dasd_cio_.patch b/0081-95dasd_mod-do-not-set-module-parameters-if-dasd_cio_.patch new file mode 100644 index 0000000..888bc5c --- /dev/null +++ b/0081-95dasd_mod-do-not-set-module-parameters-if-dasd_cio_.patch @@ -0,0 +1,30 @@ +From 95dc2742b9304029068a2b320e011bdfcc4087ea Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 26 Jun 2014 10:53:01 +0200 +Subject: 95dasd_mod: do not set module parameters if dasd_cio_free is not + present + +We're now parsing the 'rd.dasd' parameter from 95dasd_rules, so +setting the 'dasd_mod' module parameter should be dropped here. + +Signed-off-by: Hannes Reinecke +--- + modules.d/95dasd_mod/parse-dasd-mod.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules.d/95dasd_mod/parse-dasd-mod.sh b/modules.d/95dasd_mod/parse-dasd-mod.sh +index 0236d12..0b8adef 100755 +--- a/modules.d/95dasd_mod/parse-dasd-mod.sh ++++ b/modules.d/95dasd_mod/parse-dasd-mod.sh +@@ -9,7 +9,7 @@ done + + mod_args="${mod_args#*,}" + +-if [ -n "$mod_args" ]; then ++if [ -x /sbin/dasd_cio_free -a -n "$mod_args" ]; then + [ -d /etc/modprobe.d ] || mkdir -m 0755 -p /etc/modprobe.d + echo "options dasd_mod dasd=$mod_args" >> /etc/modprobe.d/dasd_mod.conf + fi +-- +1.8.4.5 + diff --git a/0082-00warpclock-check-for-sbin-hwclock.patch b/0082-00warpclock-check-for-sbin-hwclock.patch new file mode 100644 index 0000000..cdc2a4e --- /dev/null +++ b/0082-00warpclock-check-for-sbin-hwclock.patch @@ -0,0 +1,32 @@ +From 354e32e863a19d3539c3bf1b6affc98630b0003d Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 26 Jun 2014 10:44:42 +0200 +Subject: 00warpclock: check for /sbin/hwclock + +We need to check if /sbin/hwclock exists to avoid error messages +when running dracut. + +References: bnc#884513 + +Signed-off-by: Hannes Reinecke +--- + modules.d/00warpclock/module-setup.sh | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/modules.d/00warpclock/module-setup.sh b/modules.d/00warpclock/module-setup.sh +index 4d18795..5aec4eb 100755 +--- a/modules.d/00warpclock/module-setup.sh ++++ b/modules.d/00warpclock/module-setup.sh +@@ -4,7 +4,8 @@ + + # called by dracut + check() { +- [ -e /etc/localtime -a -e /etc/adjtime ] ++ [ -e /etc/localtime -a -e /etc/adjtime ] || return 1 ++ require_binaries /sbin/hwclock || return 1 + } + + # called by dracut +-- +1.8.4.5 + diff --git a/0083-95zfcp_rules-Fixup-rd.zfcp-parsing.patch b/0083-95zfcp_rules-Fixup-rd.zfcp-parsing.patch new file mode 100644 index 0000000..6548896 --- /dev/null +++ b/0083-95zfcp_rules-Fixup-rd.zfcp-parsing.patch @@ -0,0 +1,60 @@ +From 90b21dafd469ce4a8ac56944ce825f90c0782b16 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 26 Jun 2014 11:52:29 +0200 +Subject: 95zfcp_rules: Fixup rd.zfcp parsing + +There were some errors when parsing rd.zfcp, causing the device +never to be activated. + +Signed-off-by: Hannes Reinecke +--- + modules.d/95zfcp_rules/parse-zfcp.sh | 11 +++++------ + 1 file changed, 5 insertions(+), 6 deletions(-) + +diff --git a/modules.d/95zfcp_rules/parse-zfcp.sh b/modules.d/95zfcp_rules/parse-zfcp.sh +index 56152da..bb5cd3a 100755 +--- a/modules.d/95zfcp_rules/parse-zfcp.sh ++++ b/modules.d/95zfcp_rules/parse-zfcp.sh +@@ -7,9 +7,7 @@ create_udev_rule() { + local wwpn=$2 + local lun=$3 + local _rule=/etc/udev/rules.d/51-zfcp-${ccw}.rules +- + local _cu_type _dev_type +- local _rule=/etc/udev/rules.d/51-zfcp-${ccw}.rules + + if [ -e /sys/bus/ccw/devices/${ccw} ] ; then + read _cu_type < /sys/bus/ccw/devices/${ccw}/cutype +@@ -22,6 +20,10 @@ create_udev_rule() { + return 0; + fi + ++ if [ -x /sbin/cio_ignore ] && cio_ignore -i $ccw > /dev/null ; then ++ cio_ignore -r $ccw ++ fi ++ + [ -e ${_rule} ] && return 0 + + if [ ! -f "$_rule" ] ; then +@@ -37,9 +39,6 @@ EOF + ACTION=="add", KERNEL=="rport-*", ATTR{port_name}=="$wwpn", SUBSYSTEMS=="ccw", KERNELS=="$ccw", ATTR{[ccw/$ccw]$wwpn/unit_add}="$lun" + EOF + fi +- if [ -x /sbin/cio_ignore ] && ! cio_ignore -i $ccw > /dev/null ; then +- cio_ignore -r $ccw +- fi + } + + for zfcp_arg in $(getargs rd.zfcp); do +@@ -55,7 +54,7 @@ for zfcp_arg in $(getargs root=) $(getargs resume=); do + case $zfcp_arg in + /dev/disk/by-path/ccw-*) + ccw_arg=${zfcp_arg##*/} +- break; ++ ;; + esac + if [ -n "$ccw_arg" ] ; then + OLDIFS="$IFS" +-- +1.8.4.5 + diff --git a/0084-95rootfs-block-Correctly-terminate-commandline-param.patch b/0084-95rootfs-block-Correctly-terminate-commandline-param.patch new file mode 100644 index 0000000..434a9c1 --- /dev/null +++ b/0084-95rootfs-block-Correctly-terminate-commandline-param.patch @@ -0,0 +1,61 @@ +From 21e4cbee5d852108880cedc9edc619cdd9b296a5 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 26 Jun 2014 13:41:56 +0200 +Subject: 95rootfs-block: Correctly terminate commandline parameter + +95rootfs-block would not terminate the commandline parameter with +a space or newline, instead it'll rely on the main routine from +dracut.sh to do this. +Which will cause unexpected problems for any modules called +after this. + +So terminate the commandline parameters correctly here and remove +the newline from dracut.sh. + +Signed-off-by: Hannes Reinecke +--- + dracut.sh | 1 - + modules.d/95rootfs-block/module-setup.sh | 8 ++++---- + 2 files changed, 4 insertions(+), 5 deletions(-) + +diff --git a/dracut.sh b/dracut.sh +index a58e134..40006e7 100755 +--- a/dracut.sh ++++ b/dracut.sh +@@ -1166,7 +1166,6 @@ if [[ $print_cmdline ]]; then + module_cmdline "$_d_mod" + done + unset moddir +- printf "\n" + exit 0 + fi + +diff --git a/modules.d/95rootfs-block/module-setup.sh b/modules.d/95rootfs-block/module-setup.sh +index b868d0b..a620786 100755 +--- a/modules.d/95rootfs-block/module-setup.sh ++++ b/modules.d/95rootfs-block/module-setup.sh +@@ -24,7 +24,7 @@ cmdline_journal() { + fi + + if [ -n "$journaldev" ]; then +- printf " root.journaldev=%s" "$journaldev" ++ echo "root.journaldev=${journaldev}" + fi + done + fi +@@ -34,9 +34,9 @@ cmdline_journal() { + cmdline_rootfs() { + local dev=/dev/block/$(find_root_block_device) + if [ -e $dev ]; then +- printf " root=%s" "$(shorten_persistent_dev "$(get_persistent_dev "$dev")")" +- printf " rootflags=%s" "$(find_mp_fsopts /)" +- printf " rootfstype=%s" "$(find_mp_fstype /)" ++ printf "root=%s" "$(shorten_persistent_dev "$(get_persistent_dev "$dev")")" ++ printf "rootflags=%s" "$(find_mp_fsopts /)" ++ printf "rootfstype=%s\n" "$(find_mp_fstype /)" + fi + } + +-- +1.8.4.5 + diff --git a/0085-95zfcp_rules-print-out-rd.zfcp-commandline-parameter.patch b/0085-95zfcp_rules-print-out-rd.zfcp-commandline-parameter.patch new file mode 100644 index 0000000..d8be8f2 --- /dev/null +++ b/0085-95zfcp_rules-print-out-rd.zfcp-commandline-parameter.patch @@ -0,0 +1,76 @@ +From 3d918eb5be673f243dc75b358a35e1ed307f0ea5 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 26 Jun 2014 13:44:05 +0200 +Subject: 95zfcp_rules: print out rd.zfcp commandline parameter + +When called with '--hostonly-cmdline' the module should print +out the configuration. + +Signed-off-by: Hannes Reinecke +--- + modules.d/95zfcp_rules/module-setup.sh | 39 +++++++++++++++++++++++++++++++++- + 1 file changed, 38 insertions(+), 1 deletion(-) + +diff --git a/modules.d/95zfcp_rules/module-setup.sh b/modules.d/95zfcp_rules/module-setup.sh +index 849645c..3f80754 100755 +--- a/modules.d/95zfcp_rules/module-setup.sh ++++ b/modules.d/95zfcp_rules/module-setup.sh +@@ -3,10 +3,40 @@ + # ex: ts=8 sw=4 sts=4 et filetype=sh + + # called by dracut ++cmdline() { ++ is_zfcp() { ++ local _dev=$1 ++ local _devpath=$(cd -P /sys/dev/block/$_dev ; echo $PWD) ++ local _sdev _lun _wwpn _ccw ++ ++ [ "${_devpath#*/sd}" == "$_devpath" ] && return 1 ++ _sdev="${_devpath%%/block/*}" ++ [ -e ${_sdev}/fcp_lun ] || return 1 ++ _lun=$(cat ${_sdev}/fcp_lun) ++ _wwpn=$(cat ${_sdev}/wwpn) ++ _ccw=$(cat ${_sdev}/hba_id) ++ echo "rd.zfcp=${_ccw},${_wwpn},${_lun}" ++ return 1 ++ } ++ [[ $hostonly ]] || [[ $mount_needs ]] && { ++ for_each_host_dev_and_slaves is_zfcp ++ } ++} ++ ++# called by dracut + check() { + local _arch=$(uname -m) ++ local _ccw + [ "$_arch" = "s390" -o "$_arch" = "s390x" ] || return 1 +- require_binaries zfcp_disk_configure /usr/lib/udev/collect || return 1 ++ require_binaries /usr/lib/udev/collect || return 1 ++ ++ [[ $hostonly ]] || [[ $mount_needs ]] && { ++ for _ccw in /sys/bus/ccw/devices/*/host* ; do ++ [ -d "$_ccw" ] || continue ++ found=$(($found+1)); ++ done ++ [ $found -eq 0 ] && return 255 ++ } + return 0 + } + +@@ -19,6 +49,13 @@ depends() { + install() { + inst_multiple /usr/lib/udev/collect + inst_hook cmdline 30 "$moddir/parse-zfcp.sh" ++ if [[ $hostonly_cmdline == "yes" ]] ; then ++ local _zfcp ++ ++ for _zfcp in $(cmdline) ; do ++ printf "%s\n" "$zfcp" >> "${initdir}/etc/cmdline.d/94zfcp.conf" ++ done ++ fi + if [[ $hostonly ]] ; then + inst_rules_wildcard 51-zfcp-*.rules + inst_rules_wildcard 41-s390x-zfcp-*.rules +-- +1.8.4.5 + diff --git a/0086-95zfcp_rules-Auto-generate-udev-rule-for-ipl-device.patch b/0086-95zfcp_rules-Auto-generate-udev-rule-for-ipl-device.patch new file mode 100644 index 0000000..f8a04f8 --- /dev/null +++ b/0086-95zfcp_rules-Auto-generate-udev-rule-for-ipl-device.patch @@ -0,0 +1,59 @@ +From 754bda4bcf9698837802b31bd74061702edf6c8c Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 26 Jun 2014 14:01:33 +0200 +Subject: 95zfcp_rules: Auto-generate udev rule for ipl device + +We should auto-generate an udev rule for the ipl device; it'll be +enabled anyway. + +Signed-off-by: Hannes Reinecke +--- + modules.d/95zfcp_rules/parse-zfcp.sh | 18 ++++++++++++++++-- + 1 file changed, 16 insertions(+), 2 deletions(-) + +diff --git a/modules.d/95zfcp_rules/parse-zfcp.sh b/modules.d/95zfcp_rules/parse-zfcp.sh +index bb5cd3a..05c1ed0 100755 +--- a/modules.d/95zfcp_rules/parse-zfcp.sh ++++ b/modules.d/95zfcp_rules/parse-zfcp.sh +@@ -41,6 +41,17 @@ EOF + fi + } + ++if [[ -f /sys/firmware/ipl/ipl_type && ++ $( +Date: Thu, 26 Jun 2014 14:04:19 +0200 +Subject: 95dasd_rules: Auto-generate udev rule for ipl device + +We should be generating a udev rule for the ipl device; it'll +be enabled anyway. + +Signed-off-by: Hannes Reinecke +--- + modules.d/95dasd_rules/parse-dasd.sh | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/modules.d/95dasd_rules/parse-dasd.sh b/modules.d/95dasd_rules/parse-dasd.sh +index 43ca87a..7b6a3d2 100755 +--- a/modules.d/95dasd_rules/parse-dasd.sh ++++ b/modules.d/95dasd_rules/parse-dasd.sh +@@ -44,6 +44,15 @@ ACTION=="add", ENV{COLLECT_$ccw}=="0", ATTR{[ccw/$ccw]online}="1" + EOF + } + ++if [[ -f /sys/firmware/ipl/ipl_type && ++ $(