summaryrefslogtreecommitdiff
path: root/src/systemctl
diff options
context:
space:
mode:
authorMike Yuan <me@yhndnzj.com>2023-04-04 22:12:32 +0800
committerLuca Boccassi <luca.boccassi@gmail.com>2023-04-11 17:54:02 +0100
commit8a826a979aa51703ec45dbecc34691265b4d04e0 (patch)
tree891c4198a77d9d94690ffcb429836ebed376b56d /src/systemctl
parentb87d6da4478820d680b9542668b5df41848f937d (diff)
downloadsystemd-8a826a979aa51703ec45dbecc34691265b4d04e0.tar.gz
systemctl: suppress error for try-* if unit is masked
Closes #16521
Diffstat (limited to 'src/systemctl')
-rw-r--r--src/systemctl/systemctl-start-unit.c10
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;