[systemd-commits] src/unit.c
Lennart Poettering
lennart at kemper.freedesktop.org
Fri Jun 4 11:14:19 PDT 2010
src/unit.c | 62 +++++++++++++++++++++++++++++--------------------------------
1 file changed, 30 insertions(+), 32 deletions(-)
New commits:
commit b410e6b951695847619d18952bb9e2622c8b2bbf
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri Jun 4 20:13:05 2010 +0200
unit: if a unit external changes state, consider that good enough for a job to succeed, don't enforce waiting for the dependencies
diff --git a/src/unit.c b/src/unit.c
index bb2b8c2..c080919 100644
--- a/src/unit.c
+++ b/src/unit.c
@@ -969,56 +969,54 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns) {
* failed previously due to EAGAIN. */
job_add_to_run_queue(u->meta.job);
- else {
- assert(u->meta.job->state == JOB_RUNNING);
- /* Let's check whether this state change
- * constitutes a finished job, or maybe
- * cotradicts a running job and hence needs to
- * invalidate jobs. */
+ /* Let's check whether this state change constitutes a
+ * finished job, or maybe cotradicts a running job and
+ * hence needs to invalidate jobs. */
- switch (u->meta.job->type) {
+ switch (u->meta.job->type) {
- case JOB_START:
- case JOB_VERIFY_ACTIVE:
+ case JOB_START:
+ case JOB_VERIFY_ACTIVE:
- if (UNIT_IS_ACTIVE_OR_RELOADING(ns))
- job_finish_and_invalidate(u->meta.job, true);
- else if (ns != UNIT_ACTIVATING) {
- unexpected = true;
- job_finish_and_invalidate(u->meta.job, false);
- }
+ if (UNIT_IS_ACTIVE_OR_RELOADING(ns))
+ job_finish_and_invalidate(u->meta.job, true);
+ else if (u->meta.job->state == JOB_RUNNING && ns != UNIT_ACTIVATING) {
+ unexpected = true;
+ job_finish_and_invalidate(u->meta.job, false);
+ }
- break;
+ break;
- case JOB_RELOAD:
- case JOB_RELOAD_OR_START:
+ case JOB_RELOAD:
+ case JOB_RELOAD_OR_START:
+ if (u->meta.job->state == JOB_RUNNING) {
if (ns == UNIT_ACTIVE)
job_finish_and_invalidate(u->meta.job, true);
else if (ns != UNIT_ACTIVATING && ns != UNIT_ACTIVE_RELOADING) {
unexpected = true;
job_finish_and_invalidate(u->meta.job, false);
}
+ }
- break;
+ break;
- case JOB_STOP:
- case JOB_RESTART:
- case JOB_TRY_RESTART:
+ case JOB_STOP:
+ case JOB_RESTART:
+ case JOB_TRY_RESTART:
- if (ns == UNIT_INACTIVE)
- job_finish_and_invalidate(u->meta.job, true);
- else if (ns != UNIT_DEACTIVATING) {
- unexpected = true;
- job_finish_and_invalidate(u->meta.job, false);
- }
+ if (ns == UNIT_INACTIVE)
+ job_finish_and_invalidate(u->meta.job, true);
+ else if (u->meta.job->state == JOB_RUNNING && ns != UNIT_DEACTIVATING) {
+ unexpected = true;
+ job_finish_and_invalidate(u->meta.job, false);
+ }
- break;
+ break;
- default:
- assert_not_reached("Job type unknown");
- }
+ default:
+ assert_not_reached("Job type unknown");
}
}
More information about the systemd-commits
mailing list