X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fmanager.c;h=c1f70e815cbad67669c8956d9e0b9933d5d3aa40;hb=54165a39391980defef3bf3356041aac960f64af;hp=6e571ea8b5e61702ceee3609311682656ddc6917;hpb=a567261a29b4e19c0c195240411b7562063d99f8;p=elogind.git diff --git a/src/manager.c b/src/manager.c index 6e571ea8b..c1f70e815 100644 --- a/src/manager.c +++ b/src/manager.c @@ -182,7 +182,7 @@ static int manager_setup_signals(Manager *m) { return 0; } -int manager_new(ManagerRunningAs running_as, bool confirm_spawn, Manager **_m) { +int manager_new(ManagerRunningAs running_as, Manager **_m) { Manager *m; int r = -ENOMEM; char *p; @@ -197,7 +197,6 @@ int manager_new(ManagerRunningAs running_as, bool confirm_spawn, Manager **_m) { dual_timestamp_get(&m->startup_timestamp); m->running_as = running_as; - m->confirm_spawn = confirm_spawn; m->name_data_slot = m->subscribed_data_slot = -1; m->exit_code = _MANAGER_EXIT_CODE_INVALID; m->pin_cgroupfs_fd = -1; @@ -690,7 +689,7 @@ static int delete_one_unmergeable_job(Manager *m, Job *j) { return -ENOEXEC; /* Ok, we can drop one, so let's do so. */ - log_debug("Trying to fix job merging by deleting job %s/%s", d->unit->meta.id, job_type_to_string(d->type)); + log_notice("Trying to fix job merging by deleting job %s/%s", d->unit->meta.id, job_type_to_string(d->type)); transaction_delete_job(m, d, true); return 0; } @@ -841,17 +840,17 @@ static int transaction_verify_order_one(Manager *m, Job *j, Job *from, unsigned * job to remove. We use the marker to find our way * back, since smart how we are we stored our way back * in there. */ - log_debug("Found ordering cycle on %s/%s", j->unit->meta.id, job_type_to_string(j->type)); + log_warning("Found ordering cycle on %s/%s", j->unit->meta.id, job_type_to_string(j->type)); for (k = from; k; k = ((k->generation == generation && k->marker != k) ? k->marker : NULL)) { - log_debug("Walked on cycle path to %s/%s", k->unit->meta.id, job_type_to_string(k->type)); + log_info("Walked on cycle path to %s/%s", k->unit->meta.id, job_type_to_string(k->type)); if (!k->installed && !unit_matters_to_anchor(k->unit, k)) { /* Ok, we can drop this one, so let's * do so. */ - log_debug("Breaking order cycle by deleting job %s/%s", k->unit->meta.id, job_type_to_string(k->type)); + log_warning("Breaking order cycle by deleting job %s/%s", k->unit->meta.id, job_type_to_string(k->type)); transaction_delete_unit(m, k->unit); return -EAGAIN; } @@ -862,7 +861,7 @@ static int transaction_verify_order_one(Manager *m, Job *j, Job *from, unsigned break; } - log_debug("Unable to break cycle"); + log_error("Unable to break cycle"); return -ENOEXEC; } @@ -1005,13 +1004,13 @@ static void transaction_minimize_impact(Manager *m) { continue; if (stops_running_service) - log_debug("%s/%s would stop a running service.", j->unit->meta.id, job_type_to_string(j->type)); + log_info("%s/%s would stop a running service.", j->unit->meta.id, job_type_to_string(j->type)); if (changes_existing_job) - log_debug("%s/%s would change existing job.", j->unit->meta.id, job_type_to_string(j->type)); + log_info("%s/%s would change existing job.", j->unit->meta.id, job_type_to_string(j->type)); /* Ok, let's get rid of this */ - log_debug("Deleting %s/%s to minimize impact.", j->unit->meta.id, job_type_to_string(j->type)); + log_info("Deleting %s/%s to minimize impact.", j->unit->meta.id, job_type_to_string(j->type)); transaction_delete_job(m, j, true); again = true; @@ -1112,7 +1111,7 @@ static int transaction_activate(Manager *m, JobMode mode) { break; if (r != -EAGAIN) { - log_debug("Requested transaction contains an unfixable cyclic ordering dependency: %s", strerror(-r)); + log_warning("Requested transaction contains an unfixable cyclic ordering dependency: %s", strerror(-r)); goto rollback; } @@ -1128,7 +1127,7 @@ static int transaction_activate(Manager *m, JobMode mode) { break; if (r != -EAGAIN) { - log_debug("Requested transaction contains unmergable jobs: %s", strerror(-r)); + log_warning("Requested transaction contains unmergable jobs: %s", strerror(-r)); goto rollback; } @@ -1146,13 +1145,13 @@ static int transaction_activate(Manager *m, JobMode mode) { /* Ninth step: check whether we can actually apply this */ if (mode == JOB_FAIL) if ((r = transaction_is_destructive(m)) < 0) { - log_debug("Requested transaction contradicts existing jobs: %s", strerror(-r)); + log_notice("Requested transaction contradicts existing jobs: %s", strerror(-r)); goto rollback; } /* Tenth step: apply changes */ if ((r = transaction_apply(m)) < 0) { - log_debug("Failed to apply transaction: %s", strerror(-r)); + log_warning("Failed to apply transaction: %s", strerror(-r)); goto rollback; } @@ -1239,7 +1238,7 @@ void manager_transaction_unlink_job(Manager *m, Job *j, bool delete_dependencies job_dependency_free(j->object_list); if (other && delete_dependencies) { - log_debug("Deleting job %s/%s as dependency of job %s/%s", + log_info("Deleting job %s/%s as dependency of job %s/%s", other->unit->meta.id, job_type_to_string(other->type), j->unit->meta.id, job_type_to_string(j->type)); transaction_delete_job(m, other, delete_dependencies); @@ -2336,6 +2335,22 @@ finish: return r; } +bool manager_is_booting_or_shutting_down(Manager *m) { + Unit *u; + + assert(m); + + /* Is the initial job still around? */ + if (manager_get_job(m, 1)) + return true; + + /* Is there a job for the shutdown target? */ + if (((u = manager_get_unit(m, SPECIAL_SHUTDOWN_TARGET)))) + return !!u->meta.job; + + return false; +} + static const char* const manager_running_as_table[_MANAGER_RUNNING_AS_MAX] = { [MANAGER_SYSTEM] = "system", [MANAGER_SESSION] = "session"