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.
This commit is contained in:
Lennart Poettering 2018-06-20 12:46:18 +02:00 committed by Zbigniew Jędrzejewski-Szmek
parent 6dd9477dde
commit c7668c1ce0
4 changed files with 16 additions and 9 deletions

6
NEWS
View File

@ -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

View File

@ -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>

View File

@ -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

View File

@ -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