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 Desktop
Packages, which is subscribed to pm-utils in Ubuntu.
https://bugs.launchpad.net/bugs/1172692

Title:
  Please implement in-kernel suspend to both

Status in OEM Priority Project:
  Fix Released
Status in OEM Priority Project precise series:
  Fix Released
Status in pm-utils:
  Confirmed
Status in pm-utils package in Ubuntu:
  Fix Released
Status in pm-utils source package in Precise:
  Fix Released
Status in pm-utils source package in Quantal:
  Fix Released
Status in pm-utils source package in Trusty:
  Fix Released
Status in pm-utils package in CentOS:
  Unknown

Bug description:
  From kernel-3.6 there is in-kernel support for suspend to both (AKA
  hybrid suspend). Working patches can be found at
  https://bugs.freedesktop.org/show_bug.cgi?id=52572 (or links).

  
  [Impact] 

   * Ubuntu 12.04 implements hybrid suspend differently. It suspends first and 
wakes up
     the computer for hibernation 15 minutes later. This is risky since the 
computer may be
     carried when the wakeup happens. The hard disk may experience physical 
shocks and get
     damaged.

   * Thus, it is desirable to have a real hybrid suspend implementation. 
In-kernel hybrid
     suspend has been supported since kernel 3.6+. pm-utils only needs a small 
patch to
     enable this feature. 

  
  [Test Case]

   * Ensure all Ubuntu 12.04 packages are up-to-date in the test environment.
     Install pm-utils 1.4.1-9ubuntu1
     Install linux-image-lts-raring

   * Reboot the computer with lts-raring kernel. Run the command: 
'pm-suspend-hybrid' from a 
     terminal. After the computer suspends, press the power button. It should 
be able to
     resume from suspension correctly. 

   * Run the command above again. After it suspends, remove and reconnect its 
power supply 
     (or its battery). Press the power button. It should be able to resume from 
hibernation
     correctly.

   * Reboot with the default 3.2 kernel, Run the command above. 
     The computer should be able to suspend and then wake up for hibernation 15 
minutes
     later.

  
  [Regression Potential] 

   * This patch won't affect users who still use 3.2 kernel. It only enables 
in-kernel
     hybrid suspend if the option 'suspend' is available from /sys/power/disk.

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

-- 
Mailing list: https://launchpad.net/~desktop-packages
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~desktop-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to