X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fjob.c;h=ec57144cb744743a2d3c8639814673cbdfca4688;hb=23e1e0c4a3bc93fb841ac9575953ed5d0ef5282d;hp=30a46bea8bfea54e112e64c7008b58ee425b475d;hpb=a45b9fd09442eb75d39e3419c1fced90c7e339e7;p=elogind.git diff --git a/src/job.c b/src/job.c index 30a46bea8..ec57144cb 100644 --- a/src/job.c +++ b/src/job.c @@ -309,8 +309,12 @@ bool job_is_runnable(Job *j) { /* Checks whether there is any job running for the units this * job needs to be running after (in the case of a 'positive' - * job type) or before (in the case of a 'negative' job type - * . */ + * job type) or before (in the case of a 'negative' job + * type. */ + + /* First check if there is an override */ + if (j->ignore_deps) + return true; if (j->type == JOB_START || j->type == JOB_VERIFY_ACTIVE || @@ -372,6 +376,7 @@ int job_run_and_invalidate(Job *j) { j->state = JOB_RUNNING; job_add_to_dbus_queue(j); + job_start_timer(j); /* While we execute this operation the job might go away (for * example: because it is replaced by a new, conflicting @@ -390,6 +395,7 @@ int job_run_and_invalidate(Job *j) { * wait */ if (r == -EBADR) r = 0; + break; case JOB_VERIFY_ACTIVE: { @@ -498,7 +504,7 @@ int job_finish_and_invalidate(Job *j, bool success) { job_free(j); if (!success && j->type == JOB_START) - unit_status_printf(u, "Starting %s " ANSI_HIGHLIGHT_ON "failed" ANSI_HIGHLIGHT_OFF ".\n", unit_description(u)); + unit_status_printf(u, "Starting %s " ANSI_HIGHLIGHT_ON "failed" ANSI_HIGHLIGHT_OFF ", see 'systemctl status %s' for details.\n", unit_description(u), u->meta.id); /* Fail depending jobs on failure */ if (!success) { @@ -667,7 +673,8 @@ DEFINE_STRING_TABLE_LOOKUP(job_type, JobType); static const char* const job_mode_table[_JOB_MODE_MAX] = { [JOB_FAIL] = "fail", [JOB_REPLACE] = "replace", - [JOB_ISOLATE] = "isolate" + [JOB_ISOLATE] = "isolate", + [JOB_IGNORE_DEPENDENCIES] = "ignore-dependencies" }; DEFINE_STRING_TABLE_LOOKUP(job_mode, JobMode);