Revert "units: don't kill the emergency shell when sysinit.target is triggered (...
authorAlan Jenkins <alan.christopher.jenkins@gmail.com>
Tue, 26 Sep 2017 17:47:50 +0000 (18:47 +0100)
committerLennart Poettering <lennart@poettering.net>
Tue, 26 Sep 2017 17:47:50 +0000 (19:47 +0200)
This reverts commit f1e24a259ca182b6cd8a723a56da43435ce48aac.  Oops.

# systemctl emergency
Failed to start emergency.target: Transaction order is cyclic. See syste...
See system logs and 'systemctl status emergency.target' for details.
# systemctl status emergency.target
● emergency.target - Emergency Mode
   Loaded: loaded (/usr/lib/systemd/system/emergency.target; static; vendor preset: disabled)
   Active: inactive (dead) since Mon 2017-09-25 10:43:02 BST; 2h 42min ago
     Docs: man:systemd.special(7)

systemd[1]: sysinit.target: Found dependency on sysinit.target/stop
sysinit.target: Unable to break cycle starting with sysinit.target/stop
network.target: Found ordering cycle on wpa_supplicant.service/stop
network.target: Found dependency on sysinit.target/stop
network.target: Found dependency on emergency.target/start
network.target: Found dependency on emergency.service/start
network.target: Found dependency on serial-getty@ttyS0.service/stop
network.target: Found dependency on systemd-user-sessions.service/stop
network.target: Found dependency on network.target/stop
network.target: Unable to break cycle starting with network.target/stop

IMO #6509 is ugly enough that we should aim to answer it.  But it could
take some time to investigate, so let's re-open the issue as a first step.

units/container-getty@.service.m4.in
units/getty@.service.m4
units/serial-getty@.service.m4
units/sysinit.target

index 3d287b9..4b822f0 100644 (file)
@@ -19,8 +19,8 @@ ConditionPathExists=/dev/pts/%I
 
 # IgnoreOnIsolate is an issue: when someone isolates rescue.target,
 # tradition expects that we shut down all but the main console.
-Conflicts=rescue.service emergency.service
-Before=rescue.service emergency.service
+Conflicts=rescue.service
+Before=rescue.service
 
 [Service]
 # The '-o' option value tells agetty to replace 'login' arguments with an
index c2665e3..ff1b3c3 100644 (file)
@@ -23,8 +23,8 @@ IgnoreOnIsolate=yes
 # IgnoreOnIsolate causes issues with sulogin, if someone isolates
 # rescue.target or starts rescue.service from multi-user.target or
 # graphical.target.
-Conflicts=rescue.service emergency.service
-Before=rescue.service emergency.service
+Conflicts=rescue.service
+Before=rescue.service
 
 # On systems without virtual consoles, don't start any getty. Note
 # that serial gettys are covered by serial-getty@.service, not this
index d6da914..e56f476 100644 (file)
@@ -24,8 +24,8 @@ IgnoreOnIsolate=yes
 # IgnoreOnIsolate causes issues with sulogin, if someone isolates
 # rescue.target or starts rescue.service from multi-user.target or
 # graphical.target.
-Conflicts=rescue.service emergency.service
-Before=rescue.service emergency.service
+Conflicts=rescue.service
+Before=rescue.service
 
 [Service]
 # The '-o' option value tells agetty to replace 'login' arguments with an
index 8d01cbd..ec33503 100644 (file)
@@ -8,13 +8,6 @@
 [Unit]
 Description=System Initialization
 Documentation=man:systemd.special(7)
-Wants=swap.target local-fs.target
-After=swap.target local-fs.target
-
-# local-fs.target uses OnFailure="emergency.target" to start an emergency
-# shell.  In that case we also need to cancel everything that relies on
-# local-fs.target.  Flooding the screen with yellow [DEPEND] failures would
-# be unhelpful.  Therefore we break the chain here.  We use a Wants
-# dependency instead of Requires, and use a Conflict with emergency.target,
-# so that we are cancelled without actually failing any more units.
-Conflicts=emergency.target
+Conflicts=emergency.service emergency.target
+Wants=local-fs.target swap.target
+After=local-fs.target swap.target emergency.service emergency.target