diff options
author | Ben Hutchings <ben@decadent.org.uk> | 2017-02-18 23:48:57 +0000 |
---|---|---|
committer | Ben Hutchings <ben@decadent.org.uk> | 2017-04-08 20:44:18 +0100 |
commit | 25837a143420c217416e662771993ca7405cd109 (patch) | |
tree | 515a560252d4ef6fb48841d682bd30d1924a246e | |
parent | 2be97ee71ccf676c0f8f4dc38589aeac768b09a0 (diff) |
scripts/local-premount/resume: Use local_device_setup for resume device
Currently we don't wait for the resume device to appear, and will boot
without resuming if it is too slow to appear (e.g. USB storage or, in
the reported case, an NVMe device!).
Use local_device_setup to wait for the device, the same as we do for
the root and /usr devices. This also takes care of resolving UUID=
and LABEL= syntax, and adds support for PARTUUID= and PARTLABEL=.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Closes: #854791
-rwxr-xr-x | scripts/local-premount/resume | 41 |
1 files changed, 7 insertions, 34 deletions
diff --git a/scripts/local-premount/resume b/scripts/local-premount/resume index 6b3c7c3..4cafcaa 100755 --- a/scripts/local-premount/resume +++ b/scripts/local-premount/resume @@ -19,43 +19,16 @@ if [ -z "${resume}" ] || [ ! -e /sys/power/resume ]; then exit 0 fi -case $resume in -LABEL=*) - resume="${resume#LABEL=}" +. /scripts/functions +. /scripts/local - # support any / in LABEL= path (escape to \x2f) - case "${resume}" in - */*) - if command -v sed >/dev/null 2>&1; then - resume="$(echo ${resume} | sed 's,/,\\x2f,g')" - else - if [ "${resume}" != "${resume#/}" ]; then - resume="\x2f${resume#/}" - fi - if [ "${resume}" != "${resume%/}" ]; then - resume="${resume%/}\x2f" - fi - IFS='/' - newresume= - for s in $resume; do - newresume="${newresume:+${newresume}\\x2f}${s}" - done - unset IFS - resume="${newresume}" - fi - esac - resume="/dev/disk/by-label/${resume}" - ;; -UUID=*) - resume="/dev/disk/by-uuid/${resume#UUID=}" - ;; -esac - -[ ! -e "${resume}" ] && exit 0 +if ! local_device_setup ${resume} "suspend/resume device" false; then + exit 0 +fi # hardcode path, uswsusp ships an resume binary too if [ -n "${resume_offset}" ]; then - /bin/resume ${resume} ${resume_offset} + /bin/resume ${DEV} ${resume_offset} else - /bin/resume ${resume} + /bin/resume ${DEV} fi |