From cbd9e20e571ff20016049b9eae729b8cb706b138 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Tue, 8 Nov 2022 01:56:37 -0500 Subject: [PATCH] import dracut-049-209.git20220815.el8 --- SOURCES/0202.patch | 34 +++++++++++ SOURCES/0203.patch | 26 +++++++++ SOURCES/0204.patch | 55 ++++++++++++++++++ SOURCES/0205.patch | 29 ++++++++++ SOURCES/0206.patch | 140 +++++++++++++++++++++++++++++++++++++++++++++ SOURCES/0207.patch | 90 +++++++++++++++++++++++++++++ SOURCES/0208.patch | 54 +++++++++++++++++ SPECS/dracut.spec | 17 +++++- 8 files changed, 444 insertions(+), 1 deletion(-) create mode 100644 SOURCES/0202.patch create mode 100644 SOURCES/0203.patch create mode 100644 SOURCES/0204.patch create mode 100644 SOURCES/0205.patch create mode 100644 SOURCES/0206.patch create mode 100644 SOURCES/0207.patch create mode 100644 SOURCES/0208.patch diff --git a/SOURCES/0202.patch b/SOURCES/0202.patch new file mode 100644 index 0000000..ba50de6 --- /dev/null +++ b/SOURCES/0202.patch @@ -0,0 +1,34 @@ +From 4b9978afff2a8b084858c630032a3452bdca05c3 Mon Sep 17 00:00:00 2001 +From: Jan Macku +Date: Tue, 15 Feb 2022 16:09:38 +0100 +Subject: [PATCH] ci: Add Differential ShellCheck action + +Related: #2054725 +--- + .github/workflows/differential-shellcheck.yml | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +diff --git a/.github/workflows/differential-shellcheck.yml b/.github/workflows/differential-shellcheck.yml +new file mode 100644 +index 00000000..b8b10eaa +--- /dev/null ++++ b/.github/workflows/differential-shellcheck.yml +@@ -0,0 +1,17 @@ ++name: Differential ShellCheck ++on: ++ pull_request: ++ branches: [main] ++ ++jobs: ++ test: ++ runs-on: ubuntu-20.04 ++ ++ steps: ++ - name: Repository checkout ++ uses: actions/checkout@v3 ++ with: ++ fetch-depth: 0 ++ ++ - name: Differential ShellCheck ++ uses: redhat-plumbers-in-action/differential-shellcheck@v1 + diff --git a/SOURCES/0203.patch b/SOURCES/0203.patch new file mode 100644 index 0000000..716aa8d --- /dev/null +++ b/SOURCES/0203.patch @@ -0,0 +1,26 @@ +From f7663f39ea7858e08597694da329c1c94e778060 Mon Sep 17 00:00:00 2001 +From: Jan Macku +Date: Thu, 23 Jun 2022 13:25:09 +0200 +Subject: [PATCH] (#2054725) ci: Use Differential ShellCheck action `v2` + +differential-shellcheck@v2 uses SARIF format that drastically +improves user experience. + +Related: #2054725 +--- + .github/workflows/differential-shellcheck.yml | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/.github/workflows/differential-shellcheck.yml b/.github/workflows/differential-shellcheck.yml +index b8b10eaa..55273b3d 100644 +--- a/.github/workflows/differential-shellcheck.yml ++++ b/.github/workflows/differential-shellcheck.yml +@@ -14,4 +14,6 @@ jobs: + fetch-depth: 0 + + - name: Differential ShellCheck +- uses: redhat-plumbers-in-action/differential-shellcheck@v1 ++ uses: redhat-plumbers-in-action/differential-shellcheck@v2 ++ with: ++ token: ${{ secrets.GITHUB_TOKEN }} + diff --git a/SOURCES/0204.patch b/SOURCES/0204.patch new file mode 100644 index 0000000..6d59607 --- /dev/null +++ b/SOURCES/0204.patch @@ -0,0 +1,55 @@ +From 93b0bbd54736259792ca77746ac8a6440c3ccd39 Mon Sep 17 00:00:00 2001 +From: The Plumber <50238977+systemd-rhel-bot@users.noreply.github.com> +Date: Thu, 11 Aug 2022 09:49:54 +0200 +Subject: [PATCH] (#1933679) 95iscsi: Fix network setup + +* 95iscsi: Fix network setup code for iscsi + +- The network script and config could be in + "/etc/sysconfig/network-scripts", so try look for network config in + all possible path. + +- The regex used for sed is not working, so fix it too. + +- Make bootproto a local variable + +* Update modules.d/95iscsi/module-setup.sh + +Signed-off-by: Kairui Song +(cherry picked from commit 7b76fa924dfd20d3fd4433baa8292f0112282aac) + +Resolves: #1933679 +--- + modules.d/95iscsi/module-setup.sh | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh +index 618d1dc2..5bb97df6 100755 +--- a/modules.d/95iscsi/module-setup.sh ++++ b/modules.d/95iscsi/module-setup.sh +@@ -72,6 +72,7 @@ install_iscsiroot() { + local devpath=$1 + local scsi_path iscsi_lun session c d conn host flash + local iscsi_session iscsi_address iscsi_port iscsi_targetname iscsi_tpgt ++ local bootproto + + scsi_path=${devpath%%/block*} + [ "$scsi_path" = "$devpath" ] && return 1 +@@ -120,8 +121,14 @@ install_iscsiroot() { + local_address=$(ip -o route get to $iscsi_address | sed -n 's/.*src \([0-9a-f.:]*\).*/\1/p') + ifname=$(ip -o route get to $iscsi_address | sed -n 's/.*dev \([^ ]*\).*/\1/p') + +- #follow ifcfg settings for boot protocol +- bootproto=$(sed -n "/BOOTPROTO/s/BOOTPROTO='\([[:alpha:]]*6\?\)4\?'/\1/p" /etc/sysconfig/network/ifcfg-$ifname) ++ # follow ifcfg settings for boot protocol ++ for _path in \ ++ "/etc/sysconfig/network-scripts/ifcfg-$ifname" \ ++ "/etc/sysconfig/network/ifcfg-$ifname" \ ++ ; do ++ [ -r "$_path" ] && bootproto=$(sed -n "s/BOOTPROTO='\?\([[:alpha:]]*6\?\)4\?/\1/p" "$_path") ++ done ++ + if [ $bootproto ]; then + printf 'ip=%s:%s ' ${ifname} ${bootproto} + else + diff --git a/SOURCES/0205.patch b/SOURCES/0205.patch new file mode 100644 index 0000000..d569b84 --- /dev/null +++ b/SOURCES/0205.patch @@ -0,0 +1,29 @@ +From 4db9f93bde030993f2777a4dacfcb72cab387b43 Mon Sep 17 00:00:00 2001 +From: David Tardon +Date: Mon, 14 Mar 2022 10:48:44 +0100 +Subject: [PATCH] fix(dracut-systemd): correct service dependencies + +dracut-systemd.service is not an early boot service, therefore it should +not use DefaultDependencies=no. This also fixes the service's ordering +dependencies, as in its current state it is missing +Before=shutdown.target umount.target + +Resolves: #1924587, #1717323 +--- + modules.d/98dracut-systemd/dracut-shutdown.service | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/modules.d/98dracut-systemd/dracut-shutdown.service b/modules.d/98dracut-systemd/dracut-shutdown.service +index 81043b2d..b7324586 100644 +--- a/modules.d/98dracut-systemd/dracut-shutdown.service ++++ b/modules.d/98dracut-systemd/dracut-shutdown.service +@@ -7,8 +7,6 @@ Description=Restore /run/initramfs on shutdown + Documentation=man:dracut-shutdown.service(8) + After=local-fs.target boot.mount boot.automount + Wants=local-fs.target +-Conflicts=shutdown.target umount.target +-DefaultDependencies=no + ConditionPathExists=!/run/initramfs/bin/sh + + [Service] + diff --git a/SOURCES/0206.patch b/SOURCES/0206.patch new file mode 100644 index 0000000..8340c91 --- /dev/null +++ b/SOURCES/0206.patch @@ -0,0 +1,140 @@ +From d5027d43ea3969426ba64423b3c0bb38491cc880 Mon Sep 17 00:00:00 2001 +From: Tao Liu +Date: Fri, 10 Jun 2022 16:39:31 +0800 +Subject: [PATCH] feat(lvm): add new module lvmthinpool-monitor + +Previously dracut didn't support the feature of lvm thinpool autoextend. + +The feature is useful to cases such as kdump, when vmcore to be saved to a +lvm thin volume. The thinpool should be able to autoextend, otherwise an +IO error will be caused and leaves an incomplete vmcore. + +There is lvm2-monitor.service and dmeventd avaliable, however +considering [1], it is not suitable for kdump and memory limited cases. + +This patch achieves the same by parallel looping a shell function in the +background, which calls lvextend periodically. If thredshold reaches, +autoextend it, if not then nothing happens. + +[1]: https://lists.fedoraproject.org/archives/list/kexec@lists.fedoraproject.org/message/YF254ZO3PJ3U56P4OKHV3JNYP2PJUMYX/ + +Signed-off-by: Tao Liu + +Resolves: #2098502 +--- + dracut.spec | 1 + + modules.d/80lvmthinpool-monitor/module-setup.sh | 24 +++++++++++++ + .../start-thinpool-monitor.service | 14 ++++++++ + .../start-thinpool-monitor.sh | 41 ++++++++++++++++++++++ + 4 files changed, 80 insertions(+) + +diff --git a/dracut.spec b/dracut.spec +index c8783699..e1c22256 100644 +--- a/dracut.spec ++++ b/dracut.spec +@@ -350,6 +350,7 @@ echo 'dracut_rescue_image="yes"' > $RPM_BUILD_ROOT%{dracutlibdir}/dracut.conf.d/ + %{dracutlibdir}/modules.d/50drm + %{dracutlibdir}/modules.d/50plymouth + %{dracutlibdir}/modules.d/80lvmmerge ++%{dracutlibdir}/modules.d/80lvmthinpool-monitor + %{dracutlibdir}/modules.d/90btrfs + %{dracutlibdir}/modules.d/90crypt + %{dracutlibdir}/modules.d/90dm +diff --git a/modules.d/80lvmthinpool-monitor/module-setup.sh b/modules.d/80lvmthinpool-monitor/module-setup.sh +new file mode 100755 +index 00000000..ca015bdc +--- /dev/null ++++ b/modules.d/80lvmthinpool-monitor/module-setup.sh +@@ -0,0 +1,24 @@ ++#!/bin/bash ++ ++# called by dracut ++check() { ++ # No point trying to support lvm if the binaries are missing ++ require_binaries lvm sort tr awk || return 1 ++ ++ return 255 ++} ++ ++# called by dracut ++depends() { ++ echo lvm ++ return 0 ++} ++ ++# called by dracut ++install() { ++ inst_multiple sort tr awk ++ inst_script "$moddir/start-thinpool-monitor.sh" "/bin/start-thinpool-monitor" ++ ++ inst "$moddir/start-thinpool-monitor.service" "$systemdsystemunitdir/start-thinpool-monitor.service" ++ $SYSTEMCTL -q --root "$initdir" add-wants initrd.target start-thinpool-monitor.service ++} +diff --git a/modules.d/80lvmthinpool-monitor/start-thinpool-monitor.service b/modules.d/80lvmthinpool-monitor/start-thinpool-monitor.service +new file mode 100644 +index 00000000..97f5f1f4 +--- /dev/null ++++ b/modules.d/80lvmthinpool-monitor/start-thinpool-monitor.service +@@ -0,0 +1,14 @@ ++[Unit] ++Description=Lvm thinpool monitor service ++Before=initrd.target ++After=initrd-fs.target ++Conflicts=shutdown.target emergency.target ++ ++[Service] ++Type=forking ++ExecStart=/bin/start-thinpool-monitor ++PIDFile=/run/thinpool-moni.pid ++StandardInput=null ++StandardOutput=journal+console ++StandardError=journal+console ++KillSignal=SIGHUP +diff --git a/modules.d/80lvmthinpool-monitor/start-thinpool-monitor.sh b/modules.d/80lvmthinpool-monitor/start-thinpool-monitor.sh +new file mode 100755 +index 00000000..75d8eada +--- /dev/null ++++ b/modules.d/80lvmthinpool-monitor/start-thinpool-monitor.sh +@@ -0,0 +1,41 @@ ++#!/bin/sh ++ ++type getarg > /dev/null 2>&1 || . /lib/dracut-lib.sh ++ ++LVS=$(getargs rd.lvm.lv -d rd_LVM_LV=) ++ ++is_lvm2_thinp_device() { ++ _device_path=$1 ++ _lvm2_thin_device=$(lvm lvs -S 'lv_layout=sparse && lv_layout=thin' \ ++ --nosuffix --noheadings -o vg_name,lv_name "$_device_path" 2> /dev/null) ++ ++ [ -n "$_lvm2_thin_device" ] && return $? ++} ++ ++for LV in $LVS; do ++ if is_lvm2_thinp_device "/dev/$LV"; then ++ THIN_POOLS="$(lvm lvs -S 'lv_layout=sparse && lv_layout=thin' \ ++ --nosuffix --noheadings -o vg_name,pool_lv "$LV" \ ++ | awk '{printf("%s/%s",$1,$2);}') $THIN_POOLS" ++ fi ++done ++ ++THIN_POOLS=$(echo "$THIN_POOLS" | tr ' ' '\n' | sort -u | tr '\n' ' ') ++ ++if [ -n "$THIN_POOLS" ]; then ++ if [ -e "/etc/lvm/lvm.conf" ]; then ++ # Use 'monitoring=0' to override the value in lvm.conf, in case ++ # dmeventd monitoring been started after the calling. ++ CONFIG="activation {monitoring=0}" ++ else ++ CONFIG="activation {monitoring=0 thin_pool_autoextend_threshold=70 thin_pool_autoextend_percent=20}" ++ fi ++ ++ while true; do ++ for THIN_POOL in $THIN_POOLS; do ++ lvm lvextend --use-policies --config "$CONFIG" "$THIN_POOL" ++ done ++ sleep 5 ++ done & ++ echo $! > /run/thinpool-moni.pid ++fi + diff --git a/SOURCES/0207.patch b/SOURCES/0207.patch new file mode 100644 index 0000000..1ad6684 --- /dev/null +++ b/SOURCES/0207.patch @@ -0,0 +1,90 @@ +From ec2e4e70a1037b2df535e48ef7389b7b76b5a29a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Renaud=20M=C3=A9trich?= +Date: Thu, 13 Jan 2022 17:35:59 +0100 +Subject: [PATCH] fix(dracut-shutdown): add cleanup handler on failure + +It may happen that dracut-shutdown.service fails, for example on timeout +due to very low bandwidth. +In such case, for hardening purposes, a new dracut-shutdown-onfailure.service +unit doing dracut-shutdown.service cleanup needs to execute to make sure +switching root to an incomplete initramfs won't occur later. + +Resolves: #1924587 +--- + Makefile | 1 + + dracut.spec | 1 + + .../98dracut-systemd/dracut-shutdown-onfailure.service | 13 +++++++++++++ + modules.d/98dracut-systemd/dracut-shutdown.service | 1 + + modules.d/98dracut-systemd/dracut-shutdown.service.8.asc | 3 +++ + 5 files changed, 19 insertions(+) + +diff --git a/Makefile b/Makefile +index 503d069f..1c0f48ad 100644 +--- a/Makefile ++++ b/Makefile +@@ -142,6 +142,7 @@ ifneq ($(enable_documentation),no) + endif + if [ -n "$(systemdsystemunitdir)" ]; then \ + mkdir -p $(DESTDIR)$(systemdsystemunitdir); \ ++ ln -srf $(DESTDIR)$(pkglibdir)/modules.d/98dracut-systemd/dracut-shutdown-onfailure.service $(DESTDIR)$(systemdsystemunitdir)/dracut-shutdown-onfailure.service; \ + ln -srf $(DESTDIR)$(pkglibdir)/modules.d/98dracut-systemd/dracut-shutdown.service $(DESTDIR)$(systemdsystemunitdir)/dracut-shutdown.service; \ + mkdir -p $(DESTDIR)$(systemdsystemunitdir)/sysinit.target.wants; \ + ln -s ../dracut-shutdown.service \ +diff --git a/dracut.spec b/dracut.spec +index e1c22256..90fa903a 100644 +--- a/dracut.spec ++++ b/dracut.spec +@@ -404,6 +404,7 @@ echo 'dracut_rescue_image="yes"' > $RPM_BUILD_ROOT%{dracutlibdir}/dracut.conf.d/ + %dir %{_sharedstatedir}/initramfs + %if %{defined _unitdir} + %{_unitdir}/dracut-shutdown.service ++%{_unitdir}/dracut-shutdown-onfailure.service + %{_unitdir}/sysinit.target.wants/dracut-shutdown.service + %{_unitdir}/dracut-cmdline.service + %{_unitdir}/dracut-initqueue.service +diff --git a/modules.d/98dracut-systemd/dracut-shutdown-onfailure.service b/modules.d/98dracut-systemd/dracut-shutdown-onfailure.service +new file mode 100644 +index 00000000..96de58c5 +--- /dev/null ++++ b/modules.d/98dracut-systemd/dracut-shutdown-onfailure.service +@@ -0,0 +1,13 @@ ++# This file is part of dracut. ++# ++# See dracut.bootup(7) for details ++ ++[Unit] ++Description=Service executing upon dracut-shutdown failure to perform cleanup ++Documentation=man:dracut-shutdown.service(8) ++DefaultDependencies=no ++ ++[Service] ++Type=oneshot ++ExecStart=-/bin/rm /run/initramfs/shutdown ++StandardError=null +diff --git a/modules.d/98dracut-systemd/dracut-shutdown.service b/modules.d/98dracut-systemd/dracut-shutdown.service +index b7324586..dd4cf81e 100644 +--- a/modules.d/98dracut-systemd/dracut-shutdown.service ++++ b/modules.d/98dracut-systemd/dracut-shutdown.service +@@ -8,6 +8,7 @@ Documentation=man:dracut-shutdown.service(8) + After=local-fs.target boot.mount boot.automount + Wants=local-fs.target + ConditionPathExists=!/run/initramfs/bin/sh ++OnFailure=dracut-shutdown-onfailure.service + + [Service] + RemainAfterExit=yes +diff --git a/modules.d/98dracut-systemd/dracut-shutdown.service.8.asc b/modules.d/98dracut-systemd/dracut-shutdown.service.8.asc +index ba80b187..21ec88ca 100644 +--- a/modules.d/98dracut-systemd/dracut-shutdown.service.8.asc ++++ b/modules.d/98dracut-systemd/dracut-shutdown.service.8.asc +@@ -40,6 +40,9 @@ by injecting "rd.break=pre-shutdown rd.shell" or "rd.break=shutdown rd.shell". + # touch /run/initramfs/.need_shutdown + ---- + ++In case the unpack of the initramfs fails, dracut-shutdown-onfailure.service ++executes to make sure switch root doesn't happen, since it would result in ++switching to an incomplete initramfs. + + AUTHORS + ------- + diff --git a/SOURCES/0208.patch b/SOURCES/0208.patch new file mode 100644 index 0000000..6003e09 --- /dev/null +++ b/SOURCES/0208.patch @@ -0,0 +1,54 @@ +From 9914a76e5748beae9662a0e44b1674249b778424 Mon Sep 17 00:00:00 2001 +From: Pavel Valena +Date: Mon, 15 Aug 2022 10:44:35 +0200 +Subject: [PATCH] ci: check out .shellcheckrc from upstream + +To avoid ShellCheck false positives. + +https://github.com/redhat-plumbers/dracut-rhel8/pull/18 + +rhel-only +--- + .shellcheckrc | 34 ++++++++++++++++++++++++++++++++++ + 1 file changed, 34 insertions(+) + +diff --git a/.shellcheckrc b/.shellcheckrc +new file mode 100644 +index 00000000..ce5c883b +--- /dev/null ++++ b/.shellcheckrc +@@ -0,0 +1,34 @@ ++# SC2039: In POSIX sh, 'local' is undefined. ++# https://github.com/koalaman/shellcheck/wiki/SC2039 ++disable=SC2039 ++ ++# SC2166: Prefer [ p ] || [ q ] as [ p -o q ] is not well defined. ++# https://github.com/koalaman/shellcheck/wiki/SC2166 ++disable=SC2166 ++ ++# SC2154: Variable is referenced but not assigned ++# https://github.com/koalaman/shellcheck/wiki/SC2154 ++disable=SC2154 ++ ++# SC1091: Not following ++# https://github.com/koalaman/shellcheck/wiki/SC1091 ++disable=SC1091 ++ ++# SC2174: When used with -p, -m only applies to the deepest directory. ++# https://github.com/koalaman/shellcheck/wiki/SC2174 ++disable=SC2174 ++ ++# SC3043: In POSIX sh, 'local' is undefined. ++# https://github.com/koalaman/shellcheck/wiki/SC3043 ++# ... but dash supports it ++disable=SC3043 ++ ++# SC3013: In POSIX sh, -ef is undefined. ++# https://github.com/koalaman/shellcheck/wiki/SC3013 ++# ... but dash supports it ++disable=SC3013 ++ ++# SC3045: In POSIX sh, read -p is undefined. ++# https://github.com/koalaman/shellcheck/wiki/SC3045 ++# ... but dash supports it ++disable=SC3045 diff --git a/SPECS/dracut.spec b/SPECS/dracut.spec index e6b91d6..54b94f4 100644 --- a/SPECS/dracut.spec +++ b/SPECS/dracut.spec @@ -5,7 +5,7 @@ # strip the automatically generated dep here and instead co-own the # directory. %global __requires_exclude pkg-config -%define dist_free_release 202.git20220511 +%define dist_free_release 209.git20220815 Name: dracut Version: 049 @@ -229,6 +229,13 @@ Patch198: 0198.patch Patch199: 0199.patch Patch200: 0200.patch Patch201: 0201.patch +Patch202: 0202.patch +Patch203: 0203.patch +Patch204: 0204.patch +Patch205: 0205.patch +Patch206: 0206.patch +Patch207: 0207.patch +Patch208: 0208.patch Source1: https://www.gnu.org/licenses/lgpl-2.1.txt @@ -552,6 +559,7 @@ echo 'dracut_rescue_image="yes"' > $RPM_BUILD_ROOT%{dracutlibdir}/dracut.conf.d/ %{dracutlibdir}/modules.d/50drm %{dracutlibdir}/modules.d/50plymouth %{dracutlibdir}/modules.d/80lvmmerge +%{dracutlibdir}/modules.d/80lvmthinpool-monitor %{dracutlibdir}/modules.d/90btrfs %{dracutlibdir}/modules.d/90crypt %{dracutlibdir}/modules.d/90dm @@ -605,6 +613,7 @@ echo 'dracut_rescue_image="yes"' > $RPM_BUILD_ROOT%{dracutlibdir}/dracut.conf.d/ %dir %{_sharedstatedir}/initramfs %if %{defined _unitdir} %{_unitdir}/dracut-shutdown.service +%{_unitdir}/dracut-shutdown-onfailure.service %{_unitdir}/sysinit.target.wants/dracut-shutdown.service %{_unitdir}/dracut-cmdline.service %{_unitdir}/dracut-initqueue.service @@ -681,6 +690,12 @@ echo '# Since rhel-8.3 dracut moved to use NetworkManager add_dracutmodules+=" network-legacy "' > /etc/dracut.conf.d/50-network-legacy.conf %changelog +* Mon Aug 15 2022 Pavel Valena - 049-209.git20220815 +- fix(95iscsi): Fix network setup +- fix(dracut-systemd): correct service dependencies +- feat(lvm): add new module lvmthinpool-monitor +- fix(dracut-shutdown): add cleanup handler on failure + * Wed May 11 2022 Pavel Valena - 049-202.git20220511 - fix(fips): start iterating from 0 over BOOT_IMAGE entries