diff options
author | Mike Yuan <me@yhndnzj.com> | 2023-04-04 22:12:32 +0800 |
---|---|---|
committer | Luca Boccassi <luca.boccassi@gmail.com> | 2023-04-11 17:54:02 +0100 |
commit | 8a826a979aa51703ec45dbecc34691265b4d04e0 (patch) | |
tree | 891c4198a77d9d94690ffcb429836ebed376b56d /src | |
parent | b87d6da4478820d680b9542668b5df41848f937d (diff) | |
download | systemd-8a826a979aa51703ec45dbecc34691265b4d04e0.tar.gz |
systemctl: suppress error for try-* if unit is masked
Closes #16521
Diffstat (limited to 'src')
-rw-r--r-- | src/systemctl/systemctl-start-unit.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/systemctl/systemctl-start-unit.c b/src/systemctl/systemctl-start-unit.c index 136b98012a..3dac7da460 100644 --- a/src/systemctl/systemctl-start-unit.c +++ b/src/systemctl/systemctl-start-unit.c @@ -162,7 +162,14 @@ fail: if (arg_action != ACTION_SYSTEMCTL) return r; - log_error_errno(r, "Failed to %s %s: %s", job_type, name, bus_error_message(error, r)); + if (sd_bus_error_has_name(error, BUS_ERROR_UNIT_MASKED) && + STR_IN_SET(method, "TryRestartUnit", "ReloadOrTryRestartUnit")) { + /* Ignore masked unit if try-* is requested */ + + log_debug_errno(r, "Failed to %s %s, ignoring: %s", job_type, name, bus_error_message(error, r)); + return 0; + } else + log_error_errno(r, "Failed to %s %s: %s", job_type, name, bus_error_message(error, r)); if (!sd_bus_error_has_names(error, BUS_ERROR_NO_SUCH_UNIT, BUS_ERROR_UNIT_MASKED, @@ -359,7 +366,6 @@ int verb_start(int argc, char *argv[], void *userdata) { if (arg_marked) ret = enqueue_marked_jobs(bus, w); - else STRV_FOREACH(name, names) { _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; |