From f64e4f1d9d8c715c45db1374f2786d6c384e94c7 Mon Sep 17 00:00:00 2001 From: Pavel Valena Date: Tue, 10 Feb 2026 03:35:26 +0100 Subject: [PATCH] feat(resume): add device used for resume regardless of whether it's mounted. (cherry picked from commit 9d63c6ad9180fde668cb7d259e8f445d1f5677ea) Resolves: RHEL-119785 --- modules.d/95resume/module-setup.sh | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/modules.d/95resume/module-setup.sh b/modules.d/95resume/module-setup.sh index 4b8d8422..66383b39 100755 --- a/modules.d/95resume/module-setup.sh +++ b/modules.d/95resume/module-setup.sh @@ -19,26 +19,43 @@ check() { } # called by dracut -cmdline() { +_get_resume_dev() { local _resume for dev in "${!host_fs_types[@]}"; do [[ ${host_fs_types[$dev]} =~ ^(swap|swsuspend|swsupend)$ ]] || continue _resume=$(shorten_persistent_dev "$(get_persistent_dev "$dev")") - [[ -n ${_resume} ]] && printf " resume=%s" "${_resume}" + [[ -n ${_resume} ]] && echo "${_resume}" done } +# called by dracut +cmdline() { + local _resume + _resume=$(_get_resume_dev) + [[ -n ${_resume} ]] && printf " resume=%s" "${_resume}" +} + # called by dracut install() { local _bin local _resumeconf + local _dev if [[ $hostonly_cmdline == "yes" ]]; then _resumeconf=$(cmdline) [[ $_resumeconf ]] && printf "%s\n" "$_resumeconf" >> "${initdir}/etc/cmdline.d/95resume.conf" fi + # If we have a resume device on cmdline, we its drivers in initrd regardless whether it's currently mounted + # check current cmdline as well as fstab one + _dev=$(_get_resume_dev) + [[ $_dev ]] && push_user_devs "$_dev" + + _dev=$(grep -oP "resume=\K([^ ]*)" /proc/cmdline) + _dev=$(shorten_persistent_dev "$(get_persistent_dev "$_dev")") + [[ $_dev ]] && push_user_devs "$_dev" + # if systemd is included and has the hibernate-resume tool, use it and nothing else if dracut_module_included "systemd" && [[ -x $dracutsysrootdir$systemdutildir/systemd-hibernate-resume ]]; then inst_multiple -o \