X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fjob.c;h=dcfa323b0ef1cf9b4ef75326f17960e18c91b518;hb=4fe60156fc45e34c7bcba4779123e15620532dff;hp=206490ffbb30d2daee7e782126d65d9398ab1aca;hpb=81253930180bac6b6fb372a9c7bea724bd795c86;p=elogind.git diff --git a/src/job.c b/src/job.c index 206490ffb..dcfa323b0 100644 --- a/src/job.c +++ b/src/job.c @@ -313,7 +313,7 @@ bool job_is_runnable(Job *j) { * type. */ /* First check if there is an override */ - if (j->ignore_deps) + if (j->ignore_order) return true; if (j->type == JOB_START || @@ -465,6 +465,8 @@ int job_run_and_invalidate(Job *j) { if ((j = manager_get_job(m, id))) { if (r == -EALREADY) r = job_finish_and_invalidate(j, JOB_DONE); + else if (r == -ENOEXEC) + r = job_finish_and_invalidate(j, JOB_SKIPPED); else if (r == -EAGAIN) j->state = JOB_WAITING; else if (r < 0) @@ -561,8 +563,14 @@ int job_finish_and_invalidate(Job *j, JobResult result) { * the unit itself. We don't tread JOB_CANCELED as failure in * this context. And JOB_FAILURE is already handled by the * unit itself. */ - if (result == JOB_TIMEOUT || result == JOB_DEPENDENCY) + if (result == JOB_TIMEOUT || result == JOB_DEPENDENCY) { + log_notice("Job %s/%s failed with result '%s'.", + u->meta.id, + job_type_to_string(t), + job_result_to_string(result)); + unit_trigger_on_failure(u); + } /* Try to start the next jobs that can be started */ SET_FOREACH(other, u->meta.dependencies[UNIT_AFTER], i) @@ -692,7 +700,8 @@ static const char* const job_mode_table[_JOB_MODE_MAX] = { [JOB_FAIL] = "fail", [JOB_REPLACE] = "replace", [JOB_ISOLATE] = "isolate", - [JOB_IGNORE_DEPENDENCIES] = "ignore-dependencies" + [JOB_IGNORE_DEPENDENCIES] = "ignore-dependencies", + [JOB_IGNORE_REQUIREMENTS] = "ignore-requirements" }; DEFINE_STRING_TABLE_LOOKUP(job_mode, JobMode); @@ -702,7 +711,8 @@ static const char* const job_result_table[_JOB_RESULT_MAX] = { [JOB_CANCELED] = "canceled", [JOB_TIMEOUT] = "timeout", [JOB_FAILED] = "failed", - [JOB_DEPENDENCY] = "dependency" + [JOB_DEPENDENCY] = "dependency", + [JOB_SKIPPED] = "skipped" }; DEFINE_STRING_TABLE_LOOKUP(job_result, JobResult);