From 75f1fcbab34532e516bc36a2c365c87d9ae76887 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) --- modules.d/74resume/module-setup.sh | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/modules.d/74resume/module-setup.sh b/modules.d/74resume/module-setup.sh index b0bbc871..990d871d 100755 --- a/modules.d/74resume/module-setup.sh +++ b/modules.d/74resume/module-setup.sh @@ -46,26 +46,43 @@ depends() { } # 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/20-resume.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 \