core: rename and extend manager_add_job_by_name_and_warn
The "and" in the name was a misnomer. We do one *or* the other. So rename 's/_and_/_or_/', and extend with the ability to load a second unit. No functional change.
This commit is contained in:
@@ -113,7 +113,7 @@ void emergency_action(
|
||||
log_and_status(m, action, flags, "Rebooting", reason);
|
||||
|
||||
(void) update_reboot_parameter_and_warn(reboot_arg, true);
|
||||
(void) manager_add_job_by_name_and_warn(m, JOB_START, SPECIAL_REBOOT_TARGET, JOB_REPLACE_IRREVERSIBLY, NULL, NULL);
|
||||
(void) manager_add_job_by_name_or_warn(m, JOB_START, SPECIAL_REBOOT_TARGET, JOB_REPLACE_IRREVERSIBLY, NULL, NULL);
|
||||
break;
|
||||
|
||||
case EMERGENCY_ACTION_REBOOT_FORCE:
|
||||
@@ -141,7 +141,7 @@ void emergency_action(
|
||||
case EMERGENCY_ACTION_SOFT_REBOOT:
|
||||
log_and_status(m, action, flags, "Soft-rebooting", reason);
|
||||
|
||||
(void) manager_add_job_by_name_and_warn(m, JOB_START, SPECIAL_SOFT_REBOOT_TARGET, JOB_REPLACE_IRREVERSIBLY, NULL, NULL);
|
||||
(void) manager_add_job_by_name_or_warn(m, JOB_START, SPECIAL_SOFT_REBOOT_TARGET, JOB_REPLACE_IRREVERSIBLY, NULL, NULL);
|
||||
break;
|
||||
|
||||
case EMERGENCY_ACTION_SOFT_REBOOT_FORCE:
|
||||
@@ -157,7 +157,7 @@ void emergency_action(
|
||||
|
||||
if (MANAGER_IS_USER(m) || detect_container() > 0) {
|
||||
log_and_status(m, action, flags, "Exiting", reason);
|
||||
(void) manager_add_job_by_name_and_warn(m, JOB_START, SPECIAL_EXIT_TARGET, JOB_REPLACE_IRREVERSIBLY, NULL, NULL);
|
||||
(void) manager_add_job_by_name_or_warn(m, JOB_START, SPECIAL_EXIT_TARGET, JOB_REPLACE_IRREVERSIBLY, NULL, NULL);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -166,7 +166,7 @@ void emergency_action(
|
||||
|
||||
case EMERGENCY_ACTION_POWEROFF:
|
||||
log_and_status(m, action, flags, "Powering off", reason);
|
||||
(void) manager_add_job_by_name_and_warn(m, JOB_START, SPECIAL_POWEROFF_TARGET, JOB_REPLACE_IRREVERSIBLY, NULL, NULL);
|
||||
(void) manager_add_job_by_name_or_warn(m, JOB_START, SPECIAL_POWEROFF_TARGET, JOB_REPLACE_IRREVERSIBLY, NULL, NULL);
|
||||
break;
|
||||
|
||||
case EMERGENCY_ACTION_EXIT_FORCE:
|
||||
@@ -199,7 +199,7 @@ void emergency_action(
|
||||
|
||||
case EMERGENCY_ACTION_KEXEC:
|
||||
log_and_status(m, action, flags, "Executing kexec", reason);
|
||||
(void) manager_add_job_by_name_and_warn(m, JOB_START, SPECIAL_KEXEC_TARGET, JOB_REPLACE_IRREVERSIBLY, NULL, NULL);
|
||||
(void) manager_add_job_by_name_or_warn(m, JOB_START, SPECIAL_KEXEC_TARGET, JOB_REPLACE_IRREVERSIBLY, NULL, NULL);
|
||||
break;
|
||||
|
||||
case EMERGENCY_ACTION_KEXEC_FORCE:
|
||||
@@ -209,7 +209,7 @@ void emergency_action(
|
||||
|
||||
case EMERGENCY_ACTION_HALT:
|
||||
log_and_status(m, action, flags, "Halting", reason);
|
||||
(void) manager_add_job_by_name_and_warn(m, JOB_START, SPECIAL_HALT_TARGET, JOB_REPLACE_IRREVERSIBLY, NULL, NULL);
|
||||
(void) manager_add_job_by_name_or_warn(m, JOB_START, SPECIAL_HALT_TARGET, JOB_REPLACE_IRREVERSIBLY, NULL, NULL);
|
||||
break;
|
||||
|
||||
case EMERGENCY_ACTION_HALT_FORCE:
|
||||
|
||||
+23
-9
@@ -2527,22 +2527,36 @@ int manager_add_job_by_name(Manager *m, JobType type, const char *name, JobMode
|
||||
return manager_add_job_full(m, type, unit, mode, /* extra_flags= */ 0, affected_jobs, e, ret);
|
||||
}
|
||||
|
||||
int manager_add_job_by_name_and_warn(Manager *m, JobType type, const char *name, JobMode mode, Set *affected_jobs, Job **ret) {
|
||||
static int manager_add_job_by_name_or_warn_with_fallback(
|
||||
Manager *m,
|
||||
JobType type,
|
||||
const char *name,
|
||||
const char *fallback,
|
||||
JobMode mode,
|
||||
Set *affected_jobs,
|
||||
Job **ret) {
|
||||
|
||||
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
|
||||
int r;
|
||||
|
||||
assert(m);
|
||||
assert(type < _JOB_TYPE_MAX);
|
||||
assert(name);
|
||||
assert(mode < _JOB_MODE_MAX);
|
||||
|
||||
r = manager_add_job_by_name(m, type, name, mode, affected_jobs, &error, ret);
|
||||
if (r == -ENOENT && fallback) {
|
||||
log_debug_errno(r, "Failed to enqueue job %s/%s, fallback to %s: %s",
|
||||
name, job_mode_to_string(mode), fallback, bus_error_message(&error, r));
|
||||
sd_bus_error_free(&error);
|
||||
name = fallback;
|
||||
r = manager_add_job_by_name(m, type, name, mode, affected_jobs, &error, ret);
|
||||
}
|
||||
if (r < 0)
|
||||
return log_warning_errno(r, "Failed to enqueue %s job for %s: %s", job_mode_to_string(mode), name, bus_error_message(&error, r));
|
||||
|
||||
return log_warning_errno(r, "Failed to enqueue job %s/%s: %s",
|
||||
name, job_mode_to_string(mode), bus_error_message(&error, r));
|
||||
return r;
|
||||
}
|
||||
|
||||
int manager_add_job_by_name_or_warn(Manager *m, JobType type, const char *name, JobMode mode, Set *affected_jobs, Job **ret) {
|
||||
return manager_add_job_by_name_or_warn_with_fallback(m, type, name, /* fallback= */ NULL, mode, affected_jobs, ret);
|
||||
}
|
||||
|
||||
int manager_propagate_reload(Manager *m, Unit *unit, JobMode mode, sd_bus_error *e) {
|
||||
_cleanup_(transaction_abort_and_freep) Transaction *tr = NULL;
|
||||
int r;
|
||||
@@ -3209,7 +3223,7 @@ turn_off:
|
||||
static void manager_start_special(Manager *m, const char *name, JobMode mode) {
|
||||
Job *job;
|
||||
|
||||
if (manager_add_job_by_name_and_warn(m, JOB_START, name, mode, NULL, &job) < 0)
|
||||
if (manager_add_job_by_name_or_warn(m, JOB_START, name, mode, NULL, &job) < 0)
|
||||
return;
|
||||
|
||||
const char *s = unit_status_string(job->unit, NULL);
|
||||
|
||||
+1
-1
@@ -624,7 +624,7 @@ int manager_add_job(
|
||||
Job **ret);
|
||||
|
||||
int manager_add_job_by_name(Manager *m, JobType type, const char *name, JobMode mode, Set *affected_jobs, sd_bus_error *e, Job **ret);
|
||||
int manager_add_job_by_name_and_warn(Manager *m, JobType type, const char *name, JobMode mode, Set *affected_jobs, Job **ret);
|
||||
int manager_add_job_by_name_or_warn(Manager *m, JobType type, const char *name, JobMode mode, Set *affected_jobs, Job **ret);
|
||||
int manager_propagate_reload(Manager *m, Unit *unit, JobMode mode, sd_bus_error *e);
|
||||
|
||||
void manager_clear_jobs(Manager *m);
|
||||
|
||||
Reference in New Issue
Block a user