dracut/0008-feat-zfcp_rules-remove-zfcp-handling-consolidated-in.patch
Pavel Valena e4f609fba2 Update to dracut 101
From-source-git-commit: a24e1272faba2875f9b78fcf42109028af0869bc

 * switch to dracut-ng upstream fork

The original dracut repository is no longer maintained, new initiative was started:
https://github.com/dracut-ng/dracut-ng/

 * applied additional fixes

9df3cb58a19f38157a615c311356cfd6ae55d2d7 fix(rngd): install system service file
0b65ac224d831cc96da940cce510523c7276a5ec feat(hwdb): add hwdb module to install hwdb.bin on demand
10b86edba3ffe0ce13c5f43ff0193cdf04661358 fix(nvmf): move /etc/nvme/host{nqn,id} requirement to hostonly
bad2bc80cdcfac8915374497cc47ce9d5670d015 fix(systemd): explicitly install some libs that will not be statically included
55a56c546bde71fb42c99aadd96e98fca2199823 fix(dracut): move hooks directory from /usr/lib to /var/lib
110fec3e41faf47277447f1c56635c5a876c1f96 feat(ifcfg): minimize s390-specific network configuration aspects
b6913f66b6c9e9ea81fd0832405c170876bc993a refactor(ifcfg): delete code duplication using iface_get_subchannels()
cbc5eece88b8f6d0e69fdfbb8f34eabb45425c86 fix(znet): append to udev rules so each rd.znet_ifname is effective
7ad6fef8fe110093939c422b5c3b381ebe47e4e9 feat(qeth_rules): remove qeth handling consolidated in 95znet
addb383b375fd0db07eacf8a9f5d9b4e23343855 docs(dracut.cmdline): generalize description of rd.znet
86b6e2979999cf5ecce8c76c6230d1f085b3a333 feat(znet): use zdev for consolidated device configuration
1ff6be8aef787513b8143df444a1dd2d696b0944 feat(dasd): minimize dasd handling consolidated in s390-tools
a82045ef34bc8c913502eba37b6b9c60709d6997 feat(dasd_mod): minimize dasd handling consolidated in s390-tools
7294e45b5204e47bb8ee2108e2c38c5843e64fac feat(dasd_rules): remove dasd handling consolidated in s390-tools
8d6098969aa9dc34edfd1bc96e6aa0384ae2fb99 feat(zfcp): minimize zfcp handling consolidated in s390-tools
71876ea8c73090741bdf26abb89c28fb260ed575 feat(zfcp_rules): remove zfcp handling consolidated in s390-tools
a2c1fc530d8bcbdeaf1806f4a22019052715fc98 refactor(cms): remove now unnecessary inclusion of full s390utils-base
cc14fe218861f2855ca88ad03220ecb78d4aa31a refactor(cms): use consolidated network config with zdev from s390-tools
74edb9758da26ef063e4686a595f1d34f07f86f7 refactor(cms): use consolidated dasd config with zdev from s390-tools
3a9b9a5cf507a868f8b3ec33cf686b3a552286c2 refactor(cms): use consolidated zfcp config with zdev from s390-tools
38412977daad049b12273966300d07211674834e refactor(cms): use zdev to simplify handling CMSDASD=... boot option

(Possibly also resolves other open issues.)

Resolves: RHEL-26887 RHEL-34954 RHEL-35521
2024-05-16 19:11:40 +02:00

223 lines
7.2 KiB
Diff

From 71876ea8c73090741bdf26abb89c28fb260ed575 Mon Sep 17 00:00:00 2001
From: Steffen Maier <maier@linux.ibm.com>
Date: Fri, 20 Jan 2023 18:22:19 +0100
Subject: [PATCH 08/23] feat(zfcp_rules): remove zfcp handling consolidated in
s390-tools
These are handled by s390-tools zdev dracut module 95zdev as of
https://github.com/ibm-s390-linux/s390-tools/commit/06a30ae529a5d6ad2369ed81da056bf3a6147bb6
("zdev/dracut: add rd.zfcp cmdline option handling").
Even though this removes one implementation of parsing rd.zfcp in dracut,
above s390-tools change introduces another implementation of parsing the
exact same rd.zfcp syntax. Therefore, it would be good to keep the
documentation in man/dracut.cmdline.7 of dracut as one central place
describing all s390 device types that dracut handles.
This also fixes problems such as RHBZ 1552619/1745470. It was due to a
duplicate configuration because the SUSE-specific module 95zfcp_rules does
not have any distro-specific dependency and thus also ran in Red Hat
distros.
That also caused a kind of competition with 95zfcp regarding the same hook
registration:
inst_hook cmdline 30 "$moddir/parse-zfcp.sh"
"luckily" 95zfcp wins since it runs lexicographically first
and the first one registering the hook via inst_simple wins.
Because commit c8aa1d949aec ("95zfcp_rules: simplified rd.zfcp commandline
for NPIV") extended the emitted rd.zfcp syntax for hostonly-cmdline in
95zfcp_rules, kdump initrds built with hostonly-cmdline parsed such rd.zfcp
with 95zfcp, which did not understand the extended syntax yet and aborted
early boot with a syntax error.
It also seems that parse-zfcp.sh on its own is without effect because
create_udev_rule() [similar to what zfcp_disk_configure had generated] does
not handle the pre-requisite of setting an FCP device (vHBA) online first.
So the rport match does not trigger unless something else happens to set an
FCP device online [such as rules generated by zfcp_host_configure]. Related
to commit d40c49a8dfe2 ("fix(zfcp_rules): remove collect based udev rule
creators").
module-setup.sh having copied all udev rules from the root-fs into the
initrd conflicted with s390-tools dracut module zdev-kdump, which
intentionally only activates the dependencies of the kdump target.
Signed-off-by: Steffen Maier <maier@linux.ibm.com>
---
modules.d/95zfcp_rules/module-setup.sh | 80 --------------------------
modules.d/95zfcp_rules/parse-zfcp.sh | 74 ------------------------
2 files changed, 154 deletions(-)
delete mode 100755 modules.d/95zfcp_rules/module-setup.sh
delete mode 100755 modules.d/95zfcp_rules/parse-zfcp.sh
diff --git a/modules.d/95zfcp_rules/module-setup.sh b/modules.d/95zfcp_rules/module-setup.sh
deleted file mode 100755
index dfa79514..00000000
--- a/modules.d/95zfcp_rules/module-setup.sh
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/bin/bash
-
-# called by dracut
-cmdline() {
- is_zfcp() {
- local _dev=$1
- local _devpath
- _devpath=$(
- cd -P /sys/dev/block/"$_dev" || exit
- echo "$PWD"
- )
- local _sdev _scsiid _hostno _lun _wwpn _ccw _port_type
- local _allow_lun_scan _is_npiv
-
- read -r _allow_lun_scan < /sys/module/zfcp/parameters/allow_lun_scan
- [ "${_devpath#*/sd}" == "$_devpath" ] && return 1
- _sdev="${_devpath%%/block/*}"
- [ -e "${_sdev}"/fcp_lun ] || return 1
- _scsiid="${_sdev##*/}"
- _hostno="${_scsiid%%:*}"
- [ -d /sys/class/fc_host/host"${_hostno}" ] || return 1
- read -r _port_type < /sys/class/fc_host/host"${_hostno}"/port_type
- case "$_port_type" in
- NPIV*)
- _is_npiv=1
- ;;
- esac
- read -r _ccw < "${_sdev}"/hba_id
- if [ "$_is_npiv" ] && [ "$_allow_lun_scan" = "Y" ]; then
- echo "rd.zfcp=${_ccw}"
- else
- read -r _lun < "${_sdev}"/fcp_lun
- read -r _wwpn < "${_sdev}"/wwpn
- echo "rd.zfcp=${_ccw},${_wwpn},${_lun}"
- fi
- return 0
- }
- [[ $hostonly ]] || [[ $mount_needs ]] && {
- for_each_host_dev_and_slaves_all is_zfcp
- } | sort | uniq
-}
-
-# called by dracut
-check() {
- local _arch=${DRACUT_ARCH:-$(uname -m)}
- local _ccw
- [ "$_arch" = "s390" -o "$_arch" = "s390x" ] || return 1
-
- [[ $hostonly ]] || [[ $mount_needs ]] && {
- found=0
- for _ccw in /sys/bus/ccw/devices/*/host*; do
- [ -d "$_ccw" ] || continue
- found=$((found + 1))
- done
- [ $found -eq 0 ] && return 255
- }
- return 0
-}
-
-# called by dracut
-depends() {
- echo bash
- return 0
-}
-
-# called by dracut
-install() {
- 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-zfcp-*.rules"
- fi
-}
diff --git a/modules.d/95zfcp_rules/parse-zfcp.sh b/modules.d/95zfcp_rules/parse-zfcp.sh
deleted file mode 100755
index a474b81b..00000000
--- a/modules.d/95zfcp_rules/parse-zfcp.sh
+++ /dev/null
@@ -1,74 +0,0 @@
-#!/bin/bash
-
-create_udev_rule() {
- local ccw=$1
- local wwpn=$2
- local lun=$3
- local _rule=/etc/udev/rules.d/51-zfcp-${ccw}.rules
- local _cu_type _dev_type
-
- if [ -x /sbin/cio_ignore ] && cio_ignore -i "$ccw" > /dev/null; then
- cio_ignore -r "$ccw"
- fi
-
- if [ -e /sys/bus/ccw/devices/"${ccw}" ]; then
- read -r _cu_type < /sys/bus/ccw/devices/"${ccw}"/cutype
- read -r _dev_type < /sys/bus/ccw/devices/"${ccw}"/devtype
- fi
- if [ "$_cu_type" != "1731/03" ]; then
- return 0
- fi
- if [ "$_dev_type" != "1732/03" ] && [ "$_dev_type" != "1732/04" ]; then
- return 0
- fi
-
- [ -z "$wwpn" ] || [ -z "$lun" ] && return
- m=$(sed -n "/.*${wwpn}.*${lun}.*/p" "$_rule")
- if [ -z "$m" ]; then
- cat >> "$_rule" << EOF
-ACTION=="add", KERNEL=="rport-*", ATTR{port_name}=="$wwpn", SUBSYSTEMS=="ccw", KERNELS=="$ccw", ATTR{[ccw/$ccw]$wwpn/unit_add}="$lun"
-EOF
- fi
-}
-
-if [[ -f /sys/firmware/ipl/ipl_type ]] \
- && [[ $(< /sys/firmware/ipl/ipl_type) == "fcp" ]]; then
- (
- read -r _wwpn < /sys/firmware/ipl/wwpn
- read -r _lun < /sys/firmware/ipl/lun
- read -r _ccw < /sys/firmware/ipl/device
-
- create_udev_rule "$_ccw" "$_wwpn" "$_lun"
- )
-fi
-
-for zfcp_arg in $(getargs rd.zfcp); do
- (
- OLDIFS="$IFS"
- IFS=","
- # shellcheck disable=SC2086
- set $zfcp_arg
- IFS="$OLDIFS"
- create_udev_rule "$1" "$2" "$3"
- )
-done
-
-for zfcp_arg in $(getargs root=) $(getargs resume=); do
- (
- case $zfcp_arg in
- /dev/disk/by-path/ccw-*)
- ccw_arg=${zfcp_arg##*/}
- ;;
- esac
- if [ -n "$ccw_arg" ]; then
- OLDIFS="$IFS"
- IFS="-"
- # shellcheck disable=SC2086
- set -- $ccw_arg
- IFS="$OLDIFS"
- _wwpn=${4%:*}
- _lun=${4#*:}
- create_udev_rule "$2" "$wwpn" "$lun"
- fi
- )
-done
--
2.42.0