[Bug 1172692]

Dirk F 1172692 at bugs.launchpad.net
Tue Feb 23 16:41:31 UTC 2016


Comment on attachment 68712
Improved patch to save previous hibernation method

Review of attachment 68712:
-----------------------------------------------------------------

In do_hibernate() the attempt to save and restore the active mode in
/sys/power/disk fails, causing "sh: I/O error" message in pm log
(attempting to write something that isn't one of the modes in
/sys/power/disk, namely an empty string). Instrumenting the function I
found that HIBERNATE_MODE_SAVE was never set.

The characters [] are special in a shell pattern (which is what follows
the ## and %% shell variable expansion modifiers) and have to be
escaped: \[ \].

The following works as you intended:

do_hibernate()
	{
		[ -n "${HIBERNATE_MODE}" ] && \
		grep -qw "${HIBERNATE_MODE}" /sys/power/disk && \
		#df 2016-02-07 Shell patterns have to be escaped \[ \]! Fixes sh: I/O error when -z $HIBERNATE_MODE_SAVE 
		HIBERNATE_MODE_SAVE=$(cat /sys/power/disk) && \
		HIBERNATE_MODE_SAVE="${HIBERNATE_MODE_SAVE##*\[}" && \
		HIBERNATE_MODE_SAVE="${HIBERNATE_MODE_SAVE%%\]*}" && \
		echo -n "${HIBERNATE_MODE}" > /sys/power/disk
		echo -n "disk" > /sys/power/state
		RET=$?
		echo -n "$HIBERNATE_MODE_SAVE" > /sys/power/disk
		return "$RET"
	}

Although you could make the penultimate line as follows I don't
recommend it because it would hide any problems like the escaping issue
that could cause HIBERNATE_MODE_SAVE to be invalid:

                [ -n "$HIBERNATE_MODE_SAVE" ] && echo -n
"$HIBERNATE_MODE_SAVE" > /sys/power/disk

-- 
You received this bug notification because you are a member of Ubuntu
Server Team, which is subscribed to pm-utils in Ubuntu.
https://bugs.launchpad.net/bugs/1172692

Title:
  Please implement in-kernel suspend to both

To manage notifications about this bug go to:
https://bugs.launchpad.net/oem-priority/+bug/1172692/+subscriptions



More information about the Ubuntu-server-bugs mailing list