summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2018-06-20 12:46:18 +0200
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2018-06-20 12:46:18 +0200
commitc7668c1ce04fa85370432d197d2ccd9411e85649 (patch)
tree73f468ee727a2bcaf0783b24f3ffe08a77f7b84e
parentMerge pull request #9348 from keszybz/copyright-removal (diff)
downloadsystemd-c7668c1ce04fa85370432d197d2ccd9411e85649.tar.xz
systemd-c7668c1ce04fa85370432d197d2ccd9411e85649.zip
units: make system-update-pre.target a passive unit (#9349)
This is an additional synchronization point normally not needed. Hence, let's make it passive, i.e. pull it in from the unit which wants to be ordered before the update service rather than by the update service itself.
-rw-r--r--NEWS6
-rw-r--r--man/systemd.special.xml15
-rw-r--r--units/system-update-pre.target1
-rw-r--r--units/system-update.target3
4 files changed, 16 insertions, 9 deletions
diff --git a/NEWS b/NEWS
index da2d9defca2..643ae5df0e2 100644
--- a/NEWS
+++ b/NEWS
@@ -326,6 +326,12 @@ CHANGES WITH 239 in spe:
system namespacing options. One such service is systemd-udevd.service
wher this is now used by default.
+ * A new unit "system-update-pre.target" is added, which defines an
+ optional synchronization point for offline system updates, as
+ implemented by the pre-existing "system-update.target" unit. It
+ allows ordering services before the service that executes the actual
+ update process in a generic way.
+
Contributions from: Adam Duskett, Alan Jenkins, Alessandro Casale,
Alexander Kurtz, Alex Gartrell, Anssi Hannula, Arnaud Rebillout, Brian
J. Murrell, Bruno Vernay, Chris Lesiak, Christian Brauner, Christian
diff --git a/man/systemd.special.xml b/man/systemd.special.xml
index 2776276a1d7..fb12805fff1 100644
--- a/man/systemd.special.xml
+++ b/man/systemd.special.xml
@@ -78,6 +78,7 @@
<filename>swap.target</filename>,
<filename>sysinit.target</filename>,
<filename>system-update.target</filename>,
+ <filename>system-update-pre.target</filename>,
<filename>time-sync.target</filename>,
<filename>timers.target</filename>,
<filename>umount.target</filename>,
@@ -658,6 +659,7 @@
</varlistentry>
<varlistentry>
<term><filename>system-update.target</filename></term>
+ <term><filename>system-update-pre.target</filename></term>
<term><filename>system-update-cleanup.service</filename></term>
<listitem>
<para>A special target unit that is used for offline system updates.
@@ -667,12 +669,13 @@
<citerefentry><refentrytitle>systemd.offline-updates</refentrytitle><manvolnum>7</manvolnum></citerefentry>.
</para>
- <para>Updates should happen before the <filename>system-update.target</filename> is
- reached, and the services which implement them should cause the machine to reboot. As
- a safety measure, if this does not happen, and <filename>/system-update</filename>
- still exists after <filename>system-update.target</filename> is reached,
- <filename>system-update-cleanup.service</filename> will remove this symlink and
- reboot the machine.</para>
+ <para>Updates should happen before the <filename>system-update.target</filename> is reached, and the services
+ which implement them should cause the machine to reboot. The main units executing the update should order
+ themselves after <filename>system-update-pre.target</filename> but not pull it in. Services which want to run
+ during system updates only, but before the actual system update is executed should order themselves before
+ this unit and pull it in. As a safety measure, if this does not happen, and
+ <filename>/system-update</filename> still exists after <filename>system-update.target</filename> is reached,
+ <filename>system-update-cleanup.service</filename> will remove this symlink and reboot the machine.</para>
</listitem>
</varlistentry>
<varlistentry>
diff --git a/units/system-update-pre.target b/units/system-update-pre.target
index dbd9ad92ec5..163b75c220d 100644
--- a/units/system-update-pre.target
+++ b/units/system-update-pre.target
@@ -13,4 +13,3 @@ Documentation=man:systemd.offline-updates(7)
Documentation=man:systemd.special(7) man:systemd-system-update-generator(8)
RefuseManualStart=yes
After=sysinit.target
-Before=system-update.target
diff --git a/units/system-update.target b/units/system-update.target
index b52a494892a..be007e306d5 100644
--- a/units/system-update.target
+++ b/units/system-update.target
@@ -12,7 +12,6 @@ Description=Offline System Update
Documentation=man:systemd.offline-updates(7)
Documentation=man:systemd.special(7) man:systemd-system-update-generator(8)
Requires=sysinit.target
-After=sysinit.target
+After=sysinit.target system-update.target
AllowIsolate=yes
-Wants=system-update-pre.target
Wants=system-update-cleanup.service