chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
readahead: disable collector automatically on read-only media
[elogind.git]
/
src
/
unit.c
diff --git
a/src/unit.c
b/src/unit.c
index 1ca8e82af736b558f8bc753a6699b4f79a09d280..359cb2d08478b928fb0410b4a98ebdeb80a0f38a 100644
(file)
--- a/
src/unit.c
+++ b/
src/unit.c
@@
-736,7
+736,7
@@
int unit_add_default_target_dependency(Unit *u, Unit *target) {
if (target->meta.type != UNIT_TARGET)
return 0;
if (target->meta.type != UNIT_TARGET)
return 0;
- /* Only add the dependency if both
s
units are loaded, so that
+ /* Only add the dependency if both units are loaded, so that
* that loop check below is reliable */
if (u->meta.load_state != UNIT_LOADED ||
target->meta.load_state != UNIT_LOADED)
* that loop check below is reliable */
if (u->meta.load_state != UNIT_LOADED ||
target->meta.load_state != UNIT_LOADED)
@@
-1071,6
+1071,16
@@
static void retroactively_stop_dependencies(Unit *u) {
unit_check_unneeded(other);
}
unit_check_unneeded(other);
}
+void unit_trigger_on_failure(Unit *u) {
+ Unit *other;
+ Iterator i;
+
+ assert(u);
+
+ SET_FOREACH(other, u->meta.dependencies[UNIT_ON_FAILURE], i)
+ manager_add_job(u->meta.manager, JOB_START, other, JOB_REPLACE, true, NULL, NULL);
+}
+
void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_success) {
dual_timestamp ts;
bool unexpected;
void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_success) {
dual_timestamp ts;
bool unexpected;
@@
-1114,7
+1124,7
@@
void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su
job_add_to_run_queue(u->meta.job);
/* Let's check whether this state change constitutes a
job_add_to_run_queue(u->meta.job);
/* Let's check whether this state change constitutes a
- * finished job, or maybe cotradicts a running job and
+ * finished job, or maybe co
n
tradicts a running job and
* hence needs to invalidate jobs. */
switch (u->meta.job->type) {
* hence needs to invalidate jobs. */
switch (u->meta.job->type) {
@@
-1183,13
+1193,8
@@
void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su
}
if (ns != os && ns == UNIT_FAILED) {
}
if (ns != os && ns == UNIT_FAILED) {
- Iterator i;
- Unit *other;
-
- SET_FOREACH(other, u->meta.dependencies[UNIT_ON_FAILURE], i)
- manager_add_job(u->meta.manager, JOB_START, other, JOB_REPLACE, true, NULL, NULL);
-
log_notice("Unit %s entered failed state.", u->meta.id);
log_notice("Unit %s entered failed state.", u->meta.id);
+ unit_trigger_on_failure(u);
}
/* Some names are special */
}
/* Some names are special */