From 78f714863f40fa371e2c4e4d0dfb7b922480e861 Mon Sep 17 00:00:00 2001 From: eabdullin Date: Tue, 11 Nov 2025 15:51:23 +0000 Subject: [PATCH] import UBI dracut-057-102.git20250818.el9 --- SOURCES/0087.patch | 241 +++++++++++++++++++++++++++++++++++++++++++++ SOURCES/0088.patch | 23 +++++ SOURCES/0089.patch | 2 +- SOURCES/0090.patch | 38 +++++++ SOURCES/0093.patch | 52 ++++++++++ SOURCES/0094.patch | 43 ++++++++ SOURCES/0095.patch | 36 +++++++ SOURCES/0096.patch | 2 +- SOURCES/0097.patch | 2 +- SOURCES/0098.patch | 37 +++++++ SOURCES/0099.patch | 45 +++++++++ SOURCES/0100.patch | 67 +++++++++++++ SOURCES/0101.patch | 38 +++++++ SOURCES/0102.patch | 54 ---------- SPECS/dracut.spec | 32 ++++-- 15 files changed, 646 insertions(+), 66 deletions(-) create mode 100644 SOURCES/0087.patch create mode 100644 SOURCES/0088.patch create mode 100644 SOURCES/0090.patch create mode 100644 SOURCES/0093.patch create mode 100644 SOURCES/0094.patch create mode 100644 SOURCES/0095.patch create mode 100644 SOURCES/0098.patch create mode 100644 SOURCES/0099.patch create mode 100644 SOURCES/0100.patch create mode 100644 SOURCES/0101.patch delete mode 100644 SOURCES/0102.patch diff --git a/SOURCES/0087.patch b/SOURCES/0087.patch new file mode 100644 index 0000000..35fe628 --- /dev/null +++ b/SOURCES/0087.patch @@ -0,0 +1,241 @@ +From 844ce987255eddd9cc36b3e2c6070e9a82403750 Mon Sep 17 00:00:00 2001 +From: Pavel Valena +Date: Mon, 9 Jun 2025 22:32:14 +0200 +Subject: [PATCH] chore: sync backport tool with rawhide + +--- + .distro/backport_fix.sh | 225 ++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 225 insertions(+) + +diff --git a/.distro/backport_fix.sh b/.distro/backport_fix.sh +new file mode 100755 +index 00000000..50e4c233 +--- /dev/null ++++ b/.distro/backport_fix.sh +@@ -0,0 +1,225 @@ ++#!/usr/bin/zsh ++# ++# .distro/backport_fix.sh [options] DISTRO_VERSION JIRA_ISSUE DRACUT_PR [COMMIT_COUNT [COMMITS_ORIGIN_REPO]] ++# ++ ++set -xe ++zsh -n "$0" ++ ++[[ -z "$EDITOR" ]] && EDITOR=nano ++ ++: "OPT: continue after solving cherry-pick conflict" ++[[ "$1" == "-c" ]] && { ++ { ++ shift ||: ++ } 2>/dev/null ++ CON=y ++ : ++} || CON= ++ ++: "OPT: delete conflicting branch" ++[[ "$1" == "-d" ]] && { ++ { ++ shift ||: ++ } 2>/dev/null ++ DEL=y ++ : ++} || DEL= ++ ++: "OPT: Fedora distro" ++[[ "$1" == "-f" ]] && { ++ { ++ shift ||: ++ } 2>/dev/null ++ FED=y ++ : ++} || FED= ++ ++: "OPT: local changes only" ++[[ "$1" == "-l" ]] && { ++ { ++ shift ||: ++ } 2>/dev/null ++ LOC=y ++ ++} || LOC= ++ ++: "OPT: expect ref (commit-ish to get commits from) instead of PR #" ++[[ "$1" == "-r" ]] && { ++ { ++ shift ||: ++ } 2>/dev/null ++ REF=y ++ ++} || REF= ++ ++: "OPT: skip already applied commits" ++[[ "$1" == "-s" ]] && { ++ SKI="$2" ++ { ++ shift 2 ||: ++ } 2>/dev/null ++ : ++} || SKI=0 ++ ++: 'No more opts (check order)' ++{ ++ [[ -n "$1" ]] && [[ "${1:0:1}" == "-" ]] && exit 4 ++ ++} 2>/dev/null ++ ++{ echo ; } 2>/dev/null ++ ++: 'DISTRO version #' ++rv="${1}" ++{ ++ [[ -n "$rv" ]] ++ shift ++} 2>/dev/null ++ ++: 'Jira issue #' ++bn="${1}" ++{ ++ [[ -n "$bn" ]] ++ shift ||: ++} 2>/dev/null ++ ++: 'Dracut pull request or REF' ++pr="${1}" ++{ ++ [[ -n "${pr}" ]] ++ shift ||: ++} 2>/dev/null ++ ++: 'Commit count' ++cc="${1:-1}" ++{ ++ [[ -n "$cc" ]] ++ shift ||: ++} 2>/dev/null ++ ++: 'Commits origin repo' ++or="${1:-upstream-ng}" ++{ ++ [[ -n "$or" ]] ++ shift ||: ++} 2>/dev/null ++ ++: 'No extra arg' ++{ ++ [[ -z "$1" ]] ++ ++} 2>/dev/null ++ ++{ echo ; } 2>/dev/null ++ ++[[ -z "$FED" ]] && dist=rhel || dist=fedora ++ ++remote="${dist}-${rv}" ++ ++[[ -z "$REF" ]] && rf="pr${pr}" || rf="${or}/${pr}" ++ ++{ echo ; } 2>/dev/null ++ ++[[ -z "$CON" ]] && { ++ : "Create ${remote}-fix-${bn}?" ++ read '?-->continue?' ++ ++ gitt ++ gitc "${remote}" ++ ++ [[ -n "$DEL" ]] && gitbd "${remote}-fix-${bn}" ||: ++ ++ gitp "${remote}" ++ ++ gitcb "${remote}-fix-${bn}" ++ ++ gitrh "${remote}/main" ++ ++ [[ -z "$REF" ]] && gitf "${or}" "refs/pull/${pr}/head:${rf}" ++} ++ ++: "List Commits" ++cis="$(gitl1 "${rf}" "-${cc}" --reverse | cut -d' ' -f1)" ++[[ -n "${cis}" ]] ++ ++com="\nCherry-picked commits:\n${cis}\n" ++ ++com="${com}\nResolves: RHEL-${bn}\n" ++ ++echo -e "${com}" ++ ++read '?-->continue?' ++ ++i=0 ++echo "${cis}" \ ++| while read ci; do ++ [[ -n "${ci}" ]] || continue ++ ++ i=$(($i+1)) ++ ++ [[ $i -le $SKI ]] && continue ++ ++ gityx "${ci}" || { ++ ++ mod="$(gits | grep '^\s*both modified: ')" ||: ++ ++ [[ -z "$mod" ]] || { ++ ++ mod="$(echo "$mod" | tr -s ' ' | cut -d' ' -f3)" ++ ++ ls -d $mod ++ ++ $EDITOR $mod ++ ++ gita $mod ++ ++ gitdh ++ ++ gits ++ ++ exit 2 ++ } ++ ++ gits | grep -q '^nothing to commit' \ ++ && { ++ gits | grep 'git cherry-pick --skip' ++ ++ gity --skip ++ : ++ } || { ++ ++ gits ++ ++ exit 3 ++ } ++ } ++ done ++ ++read '?-->continue?' ++ ++[[ -z "$CON" ]] && { ++ [[ ${cc} -gt 1 ]] && { ++ ++ gitei HEAD~${cc} ++ : ++ } || { ++ ++ gitia --amend ++ } ++ : ++} || { ++ gits | grep -q '^\s*both modified: ' \ ++ && gita `gits | grep '^\s*both modified: ' | tr -s ' ' | cut -d' ' -f3` ++ ++ gityc ||: ++} ++ ++gitl ||: ++gitlp ||: ++ ++[[ -z "$LOC" ]] || exit 0 ++ ++gituu "${remote}" ++ ++gh pr create -f -a '@me' -R "redhat-plumbers/dracut-rhel${rv}" + diff --git a/SOURCES/0088.patch b/SOURCES/0088.patch new file mode 100644 index 0000000..283ebb7 --- /dev/null +++ b/SOURCES/0088.patch @@ -0,0 +1,23 @@ +From 5dcc483cbe28534671aa12f4f651d85267911a72 Mon Sep 17 00:00:00 2001 +From: Pavel Valena +Date: Mon, 9 Jun 2025 22:52:21 +0200 +Subject: [PATCH] ci: switch differential-shellcheck to ubuntu-latest + +--- + .github/workflows/differential-shellcheck.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/.github/workflows/differential-shellcheck.yml b/.github/workflows/differential-shellcheck.yml +index 63a022bf..20e10c17 100644 +--- a/.github/workflows/differential-shellcheck.yml ++++ b/.github/workflows/differential-shellcheck.yml +@@ -5,7 +5,7 @@ on: + + jobs: + test: +- runs-on: ubuntu-20.04 ++ runs-on: ubuntu-latest + + steps: + - name: Repository checkout + diff --git a/SOURCES/0089.patch b/SOURCES/0089.patch index f121f2d..c6fe976 100644 --- a/SOURCES/0089.patch +++ b/SOURCES/0089.patch @@ -13,7 +13,7 @@ Fixes #1275 (cherry picked from commit 000cfa0c278c0858e81c8dd2ff7231f069f0afb1) -Resolves: RHEL-95895 +Resolves: RHEL-92584 --- dracut.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOURCES/0090.patch b/SOURCES/0090.patch new file mode 100644 index 0000000..7e91c80 --- /dev/null +++ b/SOURCES/0090.patch @@ -0,0 +1,38 @@ +From 31bc18ffe0bdec790e18166e44c8a545410f8198 Mon Sep 17 00:00:00 2001 +From: Antonio Alvarez Feijoo +Date: Wed, 21 Sep 2022 11:54:17 +0200 +Subject: [PATCH] fix(systemd): add missing modprobe@.service + +sys-kernel-config.mount needs modprobe@configfs.service since systemd v246.7 +(https://github.com/systemd/systemd/commit/42cc2855), so the kernel configfs +fails to mount in the initrd. + +(cherry picked from commit 928252a145ca44627ba5873e01245eabe246992f) + +Resolves: RHEL-97169 +--- + modules.d/00systemd/module-setup.sh | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/modules.d/00systemd/module-setup.sh b/modules.d/00systemd/module-setup.sh +index 38393855..2d6fc9ff 100755 +--- a/modules.d/00systemd/module-setup.sh ++++ b/modules.d/00systemd/module-setup.sh +@@ -83,6 +83,7 @@ install() { + \ + "$systemdsystemunitdir"/sys-kernel-config.mount \ + \ ++ "$systemdsystemunitdir"/modprobe@.service \ + "$systemdsystemunitdir"/kmod-static-nodes.service \ + "$systemdsystemunitdir"/systemd-tmpfiles-setup.service \ + "$systemdsystemunitdir"/systemd-tmpfiles-setup-dev.service \ +@@ -176,6 +177,8 @@ install() { + /etc/systemd/journald.conf.d/*.conf \ + /etc/systemd/system.conf \ + /etc/systemd/system.conf.d/*.conf \ ++ "$systemdsystemconfdir"/modprobe@.service \ ++ "$systemdsystemconfdir/modprobe@.service.d/*.conf" \ + /etc/hosts \ + /etc/hostname \ + /etc/nsswitch.conf \ + diff --git a/SOURCES/0093.patch b/SOURCES/0093.patch new file mode 100644 index 0000000..48cd38c --- /dev/null +++ b/SOURCES/0093.patch @@ -0,0 +1,52 @@ +From 27a740a5b37b5cc5dee808d4818a82746b98638b Mon Sep 17 00:00:00 2001 +From: Coiby Xu +Date: Mon, 26 May 2025 15:34:30 +0800 +Subject: [PATCH] fix: let check_vol_slaves_all return 1 when checks on all + slaves fail +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Currently check_vol_slaves_all return 0 even after checks on all slaves +fail. And this leads to an issue that "dracut -hostonly-mode strict" +gets stuck forever because instmods keeps waiting for user input when +it's passed empty argument in the kernel-modules module. + +Fixes: c7c8c498 ("dracut-functions.sh: catch all lvm slaves") +Reported-by: Tomáš Bžatek +Signed-off-by: Coiby Xu +(cherry picked from commit 1fcfb2bffdad22873a804043eeeb9bb65a99caa8) + +Resolves: RHEL-104222 +--- + dracut-functions.sh | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +diff --git a/dracut-functions.sh b/dracut-functions.sh +index 2e582ebc..0cf605dc 100755 +--- a/dracut-functions.sh ++++ b/dracut-functions.sh +@@ -661,7 +661,7 @@ check_vol_slaves() { + } + + check_vol_slaves_all() { +- local _vg _pv _majmin ++ local _vg _pv _majmin _ret=1 + _majmin="$2" + _dm="/sys/dev/block/$_majmin/dm" + [[ -f $_dm/uuid && $(< "$_dm"/uuid) =~ LVM-* ]] || return 1 +@@ -675,11 +675,10 @@ check_vol_slaves_all() { + fi + + for _pv in $(lvm vgs --noheadings -o pv_name "$_vg" 2> /dev/null); do +- check_block_and_slaves_all "$1" "$(get_maj_min "$_pv")" ++ check_block_and_slaves_all "$1" "$(get_maj_min "$_pv")" && _ret=0 + done +- return 0 + fi +- return 1 ++ return $_ret + } + + # fs_get_option + diff --git a/SOURCES/0094.patch b/SOURCES/0094.patch new file mode 100644 index 0000000..82eb659 --- /dev/null +++ b/SOURCES/0094.patch @@ -0,0 +1,43 @@ +From 61c98d1ce74f96e1089ada51b161632c0ca1e079 Mon Sep 17 00:00:00 2001 +From: Tomas Bzatek +Date: Tue, 3 Jun 2025 18:34:39 +0200 +Subject: [PATCH] improvement(74nvmf): lookup required NIC kernel modules for + NBFT interfaces + +When dracut is called with '--hostonly-mode strict' and perhaps even +with --hostonly-nics '' as done by kdump/mkdumprd, all the kernel +modules related to hostonly networking are stripped down. In such +a case it is viable to lookup and install the required kernel modules +ourselves, based on any currently present nbft interfaces. + +Note: the lookup depends on the current 'nbftX' network interface +naming. + +Signed-off-by: Tomas Bzatek +(cherry picked from commit e949a76aaa8f1a1e4cb01d4cacf89c69c7bbd801) + +Resolves: RHEL-104222 +--- + modules.d/95nvmf/module-setup.sh | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/modules.d/95nvmf/module-setup.sh b/modules.d/95nvmf/module-setup.sh +index 0b90d8be..bf051e41 100755 +--- a/modules.d/95nvmf/module-setup.sh ++++ b/modules.d/95nvmf/module-setup.sh +@@ -61,6 +61,14 @@ depends() { + installkernel() { + instmods nvme_fc lpfc qla2xxx + hostonly="" instmods nvme_tcp nvme_fabrics 8021q ++ # lookup NIC kernel modules for active NBFT interfaces ++ if [[ $hostonly ]]; then ++ for i in /sys/class/net/nbft*; do ++ [ -d "$i" ] || continue ++ _driver=$(basename "$(readlink -f "$i/device/driver/module")") ++ [ -z "$_driver" ] || instmods "$_driver" ++ done ++ fi + } + + # called by dracut + diff --git a/SOURCES/0095.patch b/SOURCES/0095.patch new file mode 100644 index 0000000..539b888 --- /dev/null +++ b/SOURCES/0095.patch @@ -0,0 +1,36 @@ +From 5015e56e3dc0e67b8115cfbddb1b575cf0551784 Mon Sep 17 00:00:00 2001 +From: Tomas Bzatek +Date: Tue, 24 Jun 2025 16:50:31 +0200 +Subject: [PATCH] fix(74nvmf): set root=nvmf + +In a restricted image like kdump the kernel commandline argument root= +is typically absent. However it is required by the 45net-lib/netroot.sh +module that fails with: + + [ 23.599862] dracut: FATAL: No or empty root= argument + [ 23.604956] dracut: Refusing to continue + +Inspired by the 74iscsi module, let's set it to root=nvmf if not set +before. + +Signed-off-by: Tomas Bzatek +(cherry picked from commit a6dce328ea9738a558db848fa8dbed253b15ee3d) + +Resolves: RHEL-104222 +--- + modules.d/95nvmf/parse-nvmf-boot-connections.sh | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/modules.d/95nvmf/parse-nvmf-boot-connections.sh b/modules.d/95nvmf/parse-nvmf-boot-connections.sh +index 66018371..4721efce 100755 +--- a/modules.d/95nvmf/parse-nvmf-boot-connections.sh ++++ b/modules.d/95nvmf/parse-nvmf-boot-connections.sh +@@ -324,3 +324,7 @@ fi + + /sbin/initqueue --settled --onetime --name nvmf-connect-settled /sbin/nvmf-autoconnect.sh settled + /sbin/initqueue --timeout --onetime --name nvmf-connect-timeout /sbin/nvmf-autoconnect.sh timeout ++ ++# shellcheck disable=SC2034 ++rootok=1 ++[ -z "$root" ] && root="nvmf" + diff --git a/SOURCES/0096.patch b/SOURCES/0096.patch index 5ace27f..e011b29 100644 --- a/SOURCES/0096.patch +++ b/SOURCES/0096.patch @@ -8,7 +8,7 @@ Deprecated since 778b3543609d8c9d32df7111229f4072d00d02f0 (Nov 25, 2014). (cherry picked from commit 954420374a63be32f6ece5fc1476ba18163da1f7) -Related: RHEL-109565 +Related: RHEL-96106 --- man/dracut.cmdline.7.asc | 2 -- modules.d/90multipath/multipathd.service | 1 - diff --git a/SOURCES/0097.patch b/SOURCES/0097.patch index fc534fb..b78e3df 100644 --- a/SOURCES/0097.patch +++ b/SOURCES/0097.patch @@ -8,7 +8,7 @@ Install `multipathd.service` provided by upstream, and add a dropin to support (cherry picked from commit bb343fa83de4c73890e9054329249a1491733a5c) -Resolves: RHEL-109565 +Resolves: RHEL-96106 --- modules.d/90multipath/module-setup.sh | 3 ++- modules.d/90multipath/multipathd-dracut.conf | 2 ++ diff --git a/SOURCES/0098.patch b/SOURCES/0098.patch new file mode 100644 index 0000000..82f9edf --- /dev/null +++ b/SOURCES/0098.patch @@ -0,0 +1,37 @@ +From 90d1ed6f5acf7ba916197db1c08bb2d0de4715bc Mon Sep 17 00:00:00 2001 +From: Jo Zzsi +Date: Sun, 25 May 2025 16:16:40 -0400 +Subject: [PATCH] fix(systemd): systemd.volatile needs overlayfs kernel module + +See https://www.freedesktop.org/software/systemd/man/latest/systemd-volatile-root.service.html + +> This service is only enabled if full volatile mode is selected, +> for example by specifying "systemd.volatile=yes" on the kernel command line. +> This service runs only in the initrd, before the system transitions to the host's root directory. +> Note that this service is not used if "systemd.volatile=state" is used, as in that mode the root +> directory is non-volatile. + +Support for this systemd feature has been added in systemd v242 . +https://github.com/systemd/systemd/pull/11243 + +(cherry picked from commit 33f2e49d600294fb54620f029e10fd74de54bfa8) + +Resolves: RHEL-94663 +--- + modules.d/00systemd/module-setup.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules.d/00systemd/module-setup.sh b/modules.d/00systemd/module-setup.sh +index 2d6fc9ff..658640ac 100755 +--- a/modules.d/00systemd/module-setup.sh ++++ b/modules.d/00systemd/module-setup.sh +@@ -18,7 +18,7 @@ depends() { + + installkernel() { + hostonly='' instmods autofs4 ipv6 algif_hash hmac sha256 sg +- instmods -s efivarfs ++ instmods -s efivarfs overlay + } + + # called by dracut + diff --git a/SOURCES/0099.patch b/SOURCES/0099.patch new file mode 100644 index 0000000..986d364 --- /dev/null +++ b/SOURCES/0099.patch @@ -0,0 +1,45 @@ +From ba41a1864778fb949253d4492c8c5d553ef3badc Mon Sep 17 00:00:00 2001 +From: Chris Riches +Date: Thu, 3 Jul 2025 13:42:09 +0000 +Subject: [PATCH] refactor(dracut): introduce clamp_mtimes helper function + +Avoid code duplication by introducing `clamp_mtimes`. + +(cherry picked from commit b1f5842b36182d556f76d1bf9a023c74800b0880) + +Related: RHEL-101901 +--- + dracut.sh | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +diff --git a/dracut.sh b/dracut.sh +index 43bc2ad0..d9f2ed83 100755 +--- a/dracut.sh ++++ b/dracut.sh +@@ -2452,9 +2452,13 @@ if [[ $uefi == yes ]]; then + mkdir -p "$uefi_outdir" + fi + +-if [[ $DRACUT_REPRODUCIBLE ]]; then +- find "$initdir" -newer "$dracutbasedir/dracut-functions.sh" -print0 \ ++clamp_mtimes() { ++ find "$1" -newer "$dracutbasedir/dracut-functions.sh" -print0 \ + | xargs -r -0 touch -h -m -c -r "$dracutbasedir/dracut-functions.sh" ++} ++ ++if [[ $DRACUT_REPRODUCIBLE ]]; then ++ clamp_mtimes "$initdir" + + if [[ "$(cpio --help)" == *--reproducible* ]]; then + CPIO_REPRODUCIBLE=1 +@@ -2469,8 +2473,7 @@ if [[ $create_early_cpio == yes ]]; then + echo 1 > "$early_cpio_dir/d/early_cpio" + + if [[ $DRACUT_REPRODUCIBLE ]]; then +- find "$early_cpio_dir/d" -newer "$dracutbasedir/dracut-functions.sh" -print0 \ +- | xargs -r -0 touch -h -m -c -r "$dracutbasedir/dracut-functions.sh" ++ clamp_mtimes "$early_cpio_dir/d" + fi + + # The microcode blob is _before_ the initramfs blob, not after + diff --git a/SOURCES/0100.patch b/SOURCES/0100.patch new file mode 100644 index 0000000..5a5c548 --- /dev/null +++ b/SOURCES/0100.patch @@ -0,0 +1,67 @@ +From 45c50b57bfc5b6675604f90e3f6ff65511ead59c Mon Sep 17 00:00:00 2001 +From: Chris Riches +Date: Wed, 9 Jul 2025 16:40:18 +0000 +Subject: [PATCH] fix(dracut): ensure hardlink deduplication is reproducible + +By default, hardlink will only deduplicate files with identical mtimes, +down to one-second granularity. If a dracut module rapidly generates +multiple identical files, it is completely up to chance as to whether +their mtimes cross a second boundary or not, and thus whether they get +deduplicated or not. This results in non-reproducible output. + +Re-order hardlink with respect to clamping to avoid this problem. + +Fixes: https://issues.redhat.com/browse/RHEL-101901 +(cherry picked from commit f779e439ec60eafcb400501d4741c755a95fdc86) + +Resolves: RHEL-101901 +--- + dracut.sh | 21 ++++++++++++++------- + 1 file changed, 14 insertions(+), 7 deletions(-) + +diff --git a/dracut.sh b/dracut.sh +index d9f2ed83..47adee2f 100755 +--- a/dracut.sh ++++ b/dracut.sh +@@ -2245,12 +2245,6 @@ for ((i = 0; i < ${#include_src[@]}; i++)); do + fi + done + +-if [[ $do_hardlink == yes ]] && command -v hardlink > /dev/null; then +- dinfo "*** Hardlinking files ***" +- hardlink "$initdir" 2>&1 | dinfo +- dinfo "*** Hardlinking files done ***" +-fi +- + # strip binaries + if [[ $do_strip == yes ]]; then + # Prefer strip from elfutils for package size +@@ -2453,7 +2447,7 @@ if [[ $uefi == yes ]]; then + fi + + clamp_mtimes() { +- find "$1" -newer "$dracutbasedir/dracut-functions.sh" -print0 \ ++ find "$@" -newer "$dracutbasedir/dracut-functions.sh" -print0 \ + | xargs -r -0 touch -h -m -c -r "$dracutbasedir/dracut-functions.sh" + } + +@@ -2467,6 +2461,19 @@ if [[ $DRACUT_REPRODUCIBLE ]]; then + fi + fi + ++# Hardlink is mtime-sensitive; do it after the above clamp. ++if [[ $do_hardlink == yes ]] && command -v hardlink > /dev/null; then ++ dinfo "*** Hardlinking files ***" ++ hardlink "$initdir" 2>&1 | ddebug ++ dinfo "*** Hardlinking files done ***" ++ ++ # Hardlink itself breaks mtimes on directories as we may have added/removed ++ # dir entries. Fix those up. ++ if [[ $DRACUT_REPRODUCIBLE ]]; then ++ clamp_mtimes "$initdir" -type d ++ fi ++fi ++ + [[ $EUID != 0 ]] && cpio_owner="0:0" + + if [[ $create_early_cpio == yes ]]; then diff --git a/SOURCES/0101.patch b/SOURCES/0101.patch new file mode 100644 index 0000000..2567950 --- /dev/null +++ b/SOURCES/0101.patch @@ -0,0 +1,38 @@ +From f09dbb1a57b79e0a9dd4f02134b048ec6326ff78 Mon Sep 17 00:00:00 2001 +From: Pavel Valena +Date: Sun, 17 Aug 2025 03:47:43 +0200 +Subject: [PATCH] fix(systemd): partial backport of + +Author: Jo Zzsi +Date: Wed Apr 23 19:21:59 2025 -0400 + + fix: load more kernel modules in sloppy hostonly mode + + When hostonly_mode is set to "sloppy" instmods consults the host for currently loaded kernel modules and + refuses to copy the Linux kernel module into the generated initramfs unless the kernel + module is already loaded on the host. + + Let's set hostonly explicitly to a better default before calling instmods. + + For compatibility, we should not change the default in the instmods function itself. + +(cherry picked from commit de862885ec55bb19bfa3e3f1afd27577b7c5e309) + +Resolves: RHEL-94663 +--- + modules.d/00systemd/module-setup.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules.d/00systemd/module-setup.sh b/modules.d/00systemd/module-setup.sh +index 658640ac..6f07f329 100755 +--- a/modules.d/00systemd/module-setup.sh ++++ b/modules.d/00systemd/module-setup.sh +@@ -18,7 +18,7 @@ depends() { + + installkernel() { + hostonly='' instmods autofs4 ipv6 algif_hash hmac sha256 sg +- instmods -s efivarfs overlay ++ hostonly=$(optional_hostonly) instmods -s efivarfs overlay + } + + # called by dracut diff --git a/SOURCES/0102.patch b/SOURCES/0102.patch deleted file mode 100644 index 9dc537a..0000000 --- a/SOURCES/0102.patch +++ /dev/null @@ -1,54 +0,0 @@ -From ae61b2c93a032c3e74950d6730d32363fed9621f Mon Sep 17 00:00:00 2001 -From: Benjamin Marzinski -Date: Thu, 24 Apr 2025 17:51:01 -0400 -Subject: [PATCH] fix(multipath): disable user_friendly_names with mpathconf - -If dracut is creating /etc/multipath.conf by calling mpathconf in either -multipathd-configure.service or multipathd.sh, there is a chance that -the multipath config in the real root differs. Specifically, it might -have chosen different user_friendly_names for the devices. When the -systems switches to the real root, multipath may not be able to switch -the devices to their configured names because those might already be -in use. To avoid this, call mpathconf with "--user_friendly_names n" -to create a multipath.conf with user_friendly_names disabled. If all -devices use WWID names, it is always possible for multipath to rename -them later. - -Fixes b8a92b715 ("multipath: add automatic configuration for multipath") - -(cherry picked from commit f36f2869859eb5f9613a94a28dfaf31505e645cc) - -Resolves: RHEL-96101 ---- - modules.d/90multipath/multipathd-configure.service | 2 +- - modules.d/90multipath/multipathd.sh | 3 ++- - 2 files changed, 3 insertions(+), 2 deletions(-) - -diff --git a/modules.d/90multipath/multipathd-configure.service b/modules.d/90multipath/multipathd-configure.service -index de690615..6dedd9b9 100644 ---- a/modules.d/90multipath/multipathd-configure.service -+++ b/modules.d/90multipath/multipathd-configure.service -@@ -13,7 +13,7 @@ ConditionPathExists=!/etc/multipath.conf - [Service] - Type=oneshot - ExecStartPre=-/usr/bin/mkdir -p /etc/multipath/multipath.conf.d --ExecStart=/usr/sbin/mpathconf --enable -+ExecStart=/usr/sbin/mpathconf --enable --user_friendly_names n - - [Install] - WantedBy=sysinit.target -diff --git a/modules.d/90multipath/multipathd.sh b/modules.d/90multipath/multipathd.sh -index 62649003..6b6b2666 100755 ---- a/modules.d/90multipath/multipathd.sh -+++ b/modules.d/90multipath/multipathd.sh -@@ -2,7 +2,8 @@ - - if [ "$(getarg rd.multipath)" = "default" ] && [ ! -e /etc/multipath.conf ]; then - mkdir -p /etc/multipath/multipath.conf.d -- mpathconf --enable -+ mpathconf --enable --user_friendly_names n -+ - fi - - if getargbool 1 rd.multipath && [ -e /etc/multipath.conf ]; then - diff --git a/SPECS/dracut.spec b/SPECS/dracut.spec index 8e7da73..1865b4e 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 89.git20250311 +%define dist_free_release 102.git20250818 Name: dracut Version: 057 @@ -115,12 +115,19 @@ Patch83: 0083.patch Patch84: 0084.patch Patch85: 0085.patch Patch86: 0086.patch +Patch87: 0087.patch +Patch88: 0088.patch Patch89: 0089.patch - +Patch90: 0090.patch +Patch93: 0093.patch +Patch94: 0094.patch +Patch95: 0095.patch Patch96: 0096.patch Patch97: 0097.patch - -Patch102: 0102.patch +Patch98: 0098.patch +Patch99: 0099.patch +Patch100: 0100.patch +Patch101: 0101.patch Source1: https://www.gnu.org/licenses/lgpl-2.1.txt @@ -577,14 +584,21 @@ echo 'dracut_rescue_image="yes"' > $RPM_BUILD_ROOT%{dracutlibdir}/dracut.conf.d/ %{_prefix}/lib/kernel/install.d/51-dracut-rescue.install %changelog -* Fri Sep 19 2025 Pavel Valena - 057-89.git20250311 +* Mon Aug 18 2025 Pavel Valena - 057-102.git20250818 +- fix(systemd): partial backport of + +* Fri Aug 08 2025 Pavel Valena - 057-101.git20250808 +- fix(systemd): add missing modprobe@.service +- fix: let check_vol_slaves_all return 1 when checks on all +- improvement(74nvmf): lookup required NIC kernel modules for +- fix(74nvmf): set root=nvmf - chore(multipath): remove `rd_NO_MULTIPATH` kernel command - refactor(multipath): remove custom multipathd.service -- fix(multipath): disable user_friendly_names with mpathconf - Resolves: RHEL-109565 - Resolves: RHEL-96101 +- fix(systemd): systemd.volatile needs overlayfs kernel module +- refactor(dracut): introduce clamp_mtimes helper function +- fix(dracut): ensure hardlink deduplication is reproducible -* Mon Jun 09 2025 Pavel Valena - 057-88.git20250311 +* Mon Jun 09 2025 Pavel Valena - 057-90.git20250609 - fix(dracut.sh): don't pass empty string as dir * Tue Mar 11 2025 Pavel Valena - 057-87.git20250311