X Tutup
Skip to content

Commit 629b2a6

Browse files
committed
core: add a reverse dep for OnFailure=
Let's add an implicit reverse dep OnFailureOf=. This is exposed via the bus to make things more debuggable: you can now ask systemd for which units a specific unit is the failure handler. OnFailure= was the only dependency type that had no inverse, this fixes that. Now that deps are a bit cheaper, it should be OK to add deps that only serve debug purposes.
1 parent 39628fe commit 629b2a6

File tree

6 files changed

+12
-1
lines changed

6 files changed

+12
-1
lines changed

man/org.freedesktop.systemd1.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1630,6 +1630,8 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2eservice {
16301630
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
16311631
readonly as OnFailure = ['...', ...];
16321632
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
1633+
readonly as OnFailureOf = ['...', ...];
1634+
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
16331635
readonly as Triggers = ['...', ...];
16341636
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
16351637
readonly as TriggeredBy = ['...', ...];
@@ -1773,6 +1775,8 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2eservice {
17731775

17741776
<!--property ConsistsOf is not documented!-->
17751777

1778+
<!--property OnFailureOf is not documented!-->
1779+
17761780
<!--property ReloadPropagatedFrom is not documented!-->
17771781

17781782
<!--property JoinsNamespaceOf is not documented!-->
@@ -1905,6 +1909,8 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2eservice {
19051909

19061910
<variablelist class="dbus-property" generated="True" extra-ref="OnFailure"/>
19071911

1912+
<variablelist class="dbus-property" generated="True" extra-ref="OnFailureOf"/>
1913+
19081914
<variablelist class="dbus-property" generated="True" extra-ref="Triggers"/>
19091915

19101916
<variablelist class="dbus-property" generated="True" extra-ref="TriggeredBy"/>

src/basic/unit-def.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,7 @@ static const char* const unit_dependency_table[_UNIT_DEPENDENCY_MAX] = {
275275
[UNIT_BEFORE] = "Before",
276276
[UNIT_AFTER] = "After",
277277
[UNIT_ON_FAILURE] = "OnFailure",
278+
[UNIT_ON_FAILURE_OF] = "OnFailureOf",
278279
[UNIT_TRIGGERS] = "Triggers",
279280
[UNIT_TRIGGERED_BY] = "TriggeredBy",
280281
[UNIT_PROPAGATES_RELOAD_TO] = "PropagatesReloadTo",

src/basic/unit-def.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,7 @@ typedef enum UnitDependency {
229229

230230
/* On Failure */
231231
UNIT_ON_FAILURE,
232+
UNIT_ON_FAILURE_OF,
232233

233234
/* Triggers (i.e. a socket triggers a service) */
234235
UNIT_TRIGGERS,

src/core/dbus-unit.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -865,6 +865,7 @@ const sd_bus_vtable bus_unit_vtable[] = {
865865
SD_BUS_PROPERTY("Before", "as", property_get_dependencies, 0, SD_BUS_VTABLE_PROPERTY_CONST),
866866
SD_BUS_PROPERTY("After", "as", property_get_dependencies, 0, SD_BUS_VTABLE_PROPERTY_CONST),
867867
SD_BUS_PROPERTY("OnFailure", "as", property_get_dependencies, 0, SD_BUS_VTABLE_PROPERTY_CONST),
868+
SD_BUS_PROPERTY("OnFailureOf", "as", property_get_dependencies, 0, SD_BUS_VTABLE_PROPERTY_CONST),
868869
SD_BUS_PROPERTY("Triggers", "as", property_get_dependencies, 0, SD_BUS_VTABLE_PROPERTY_CONST),
869870
SD_BUS_PROPERTY("TriggeredBy", "as", property_get_dependencies, 0, SD_BUS_VTABLE_PROPERTY_CONST),
870871
SD_BUS_PROPERTY("PropagatesReloadTo", "as", property_get_dependencies, 0, SD_BUS_VTABLE_PROPERTY_CONST),

src/core/unit-dependency-atom.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ static const UnitDependencyAtom atom_map[_UNIT_DEPENDENCY_MAX] = {
8585
* things discoverable/debuggable as they are the inverse dependencies to some of the above. As they
8686
* have no effect of their own, they all map to no atoms at all, i.e. the value 0. */
8787
[UNIT_RELOAD_PROPAGATED_FROM] = 0,
88+
[UNIT_ON_FAILURE_OF] = 0,
8889
};
8990

9091
UnitDependencyAtom unit_dependency_to_atom(UnitDependency d) {

src/core/unit.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2871,7 +2871,8 @@ int unit_add_dependency(
28712871
[UNIT_CONFLICTED_BY] = UNIT_CONFLICTS,
28722872
[UNIT_BEFORE] = UNIT_AFTER,
28732873
[UNIT_AFTER] = UNIT_BEFORE,
2874-
[UNIT_ON_FAILURE] = _UNIT_DEPENDENCY_INVALID,
2874+
[UNIT_ON_FAILURE] = UNIT_ON_FAILURE_OF,
2875+
[UNIT_ON_FAILURE_OF] = UNIT_ON_FAILURE,
28752876
[UNIT_REFERENCES] = UNIT_REFERENCED_BY,
28762877
[UNIT_REFERENCED_BY] = UNIT_REFERENCES,
28772878
[UNIT_TRIGGERS] = UNIT_TRIGGERED_BY,

0 commit comments

Comments
 (0)
X Tutup