[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[PATCH initramfs-tools 5/5] 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
---
 scripts/local-premount/resume | 41 +++++++----------------------------------
 1 file changed, 7 insertions(+), 34 deletions(-)

diff --git a/scripts/local-premount/resume b/scripts/local-premount/resume
index 6b3c7c311402..4cafcaafb0fa 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

Attachment: signature.asc
Description: Digital signature


Reply to: