Merge pull request #18009 from poettering/time-set-sync-target

tweaks for time-sync.target and time-set.target
This commit is contained in:
Yu Watanabe 2020-12-18 16:02:56 +09:00 committed by GitHub
commit ee672fd30b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 19 additions and 9 deletions

View File

@ -81,10 +81,12 @@
units involved with early boot or late system shutdown should disable the
<varname>DefaultDependencies=</varname> option.</para></listitem>
<listitem><para>Timer units
with at least one <varname>OnCalendar=</varname> directive will have an additional <varname>After=</varname>
dependency on <filename>time-sync.target</filename> to avoid being started before the system clock has been
correctly set.</para></listitem>
<listitem><para>Timer units with at least one <varname>OnCalendar=</varname> directive acquire a pair
of additional <varname>After=</varname> dependencies on <filename>time-set.target</filename> and
<filename>time-sync.target</filename>, in order to avoid being started before the system clock has
been correctly set. See
<citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>
for details on these two targets.</para></listitem>
</itemizedlist>
</refsect2>
</refsect1>

View File

@ -42,6 +42,7 @@
#define SPECIAL_SWAP_TARGET "swap.target"
#define SPECIAL_NETWORK_ONLINE_TARGET "network-online.target"
#define SPECIAL_TIME_SYNC_TARGET "time-sync.target" /* LSB's $time */
#define SPECIAL_TIME_SET_TARGET "time-set.target"
#define SPECIAL_BASIC_TARGET "basic.target"
/* LSB compatibility */

View File

@ -99,13 +99,20 @@ static int timer_add_default_dependencies(Timer *t) {
if (r < 0)
return r;
LIST_FOREACH(value, v, t->values)
if (v->base == TIMER_CALENDAR) {
r = unit_add_dependency_by_name(UNIT(t), UNIT_AFTER, SPECIAL_TIME_SYNC_TARGET, true, UNIT_DEPENDENCY_DEFAULT);
LIST_FOREACH(value, v, t->values) {
const char *target;
if (v->base != TIMER_CALENDAR)
continue;
FOREACH_STRING(target, SPECIAL_TIME_SYNC_TARGET, SPECIAL_TIME_SET_TARGET) {
r = unit_add_dependency_by_name(UNIT(t), UNIT_AFTER, target, true, UNIT_DEPENDENCY_DEFAULT);
if (r < 0)
return r;
break;
}
break;
}
}
return unit_add_two_dependencies_by_name(UNIT(t), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_SHUTDOWN_TARGET, true, UNIT_DEPENDENCY_DEFAULT);

View File

@ -16,7 +16,7 @@ DefaultDependencies=no
After=systemd-sysusers.service
Before=time-set.target sysinit.target shutdown.target
Conflicts=shutdown.target
Wants=time-set.target time-sync.target
Wants=time-set.target
[Service]
AmbientCapabilities=CAP_SYS_TIME