From: Alan Jenkins Date: Wed, 30 Aug 2017 16:20:23 +0000 (+0100) Subject: units: starting suspend.target should not fail when suspend is successful (#6678) X-Git-Tag: v235~202 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=64a36ae4b1dd23474dd7ea261381ac437b24fac2;p=thirdparty%2Fsystemd.git units: starting suspend.target should not fail when suspend is successful (#6678) and the same for hibernate.target and hybrid-sleep.target. Tested with both sucessful and unsuccessful suspends. The result of the start job was correct in both cases. Closes #6419 (a regression in v233 and v234). > suspend is unsual for a target, because it has to stop itself once it's > started. Otherwise you couldn't start it again, so you could only suspend > once! Currently that's implemented using BindsTo=systemd-sleep.service. > Meaning it pulls in systemd-sleep.service to do the actual suspend, and > then de-activates afterwards. But the behaviour of BindsTo was changed > recently (not without some issues during development) - maybe this bug > is caused by poettering/systemd@631b676 which I think was added in > release v233. > > sleep.target (see man systemd.special) has the same need, but it > implements it differently. It simply has StopWhenUnneeded=yes. This commit switches suspend.target etc. to the approach used by sleep.target. --- diff --git a/units/hibernate.target b/units/hibernate.target index 143eb59230c..0e1bc032583 100644 --- a/units/hibernate.target +++ b/units/hibernate.target @@ -9,5 +9,6 @@ Description=Hibernate Documentation=man:systemd.special(7) DefaultDependencies=no -BindsTo=systemd-hibernate.service +Requires=systemd-hibernate.service After=systemd-hibernate.service +StopWhenUnneeded=yes diff --git a/units/hybrid-sleep.target b/units/hybrid-sleep.target index d2d34092250..410e131b6ea 100644 --- a/units/hybrid-sleep.target +++ b/units/hybrid-sleep.target @@ -9,5 +9,6 @@ Description=Hybrid Suspend+Hibernate Documentation=man:systemd.special(7) DefaultDependencies=no -BindsTo=systemd-hybrid-sleep.service +Requires=systemd-hybrid-sleep.service After=systemd-hybrid-sleep.service +StopWhenUnneeded=yes diff --git a/units/suspend.target b/units/suspend.target index f50cb2264f5..80d652755c7 100644 --- a/units/suspend.target +++ b/units/suspend.target @@ -9,5 +9,6 @@ Description=Suspend Documentation=man:systemd.special(7) DefaultDependencies=no -BindsTo=systemd-suspend.service +Requires=systemd-suspend.service After=systemd-suspend.service +StopWhenUnneeded=yes