From: Mike Yuan Date: Tue, 24 Feb 2026 14:22:28 +0000 (+0100) Subject: Revert "systemctl: allow --marker with start/stop too" X-Git-Tag: v260-rc1~23^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a8ceed000003d0544b929be144f7e295db6a840c;p=thirdparty%2Fsystemd.git Revert "systemctl: allow --marker with start/stop too" This reverts commit 351b4dd123f89f7f8491239b2d3f77bef5d00797. I'm pretty sure we should not create more of these multiplexer interfaces, which in this specific also leads to a fair bit of confusion: start/stop/reload-or-restart --marked all enqueue all job types. Instead, a dedicated verb will be introduced in later commits. --- diff --git a/man/systemctl.xml b/man/systemctl.xml index 619805891c1..63454505dcb 100644 --- a/man/systemctl.xml +++ b/man/systemctl.xml @@ -2855,10 +2855,10 @@ Jan 12 10:46:45 example.com bluetoothd[8900]: gatt-time-server: Input/output err - Only allowed with reload-or-restart, start, or - stop. Enqueues jobs for all units that are marked. When a unit marked for reload - does not support reload, restart will be queued. Those properties can be set using - set-property Markers=…. + Only allowed with reload-or-restart. Enqueues restart jobs for all + units that have the needs-restart mark, and reload jobs for units that have the + needs-reload mark. When a unit marked for reload does not support reload, restart + will be queued. Those properties can be set using set-property Markers=…. Unless is used, systemctl will wait for the queued jobs to finish. diff --git a/src/systemctl/systemctl-main.c b/src/systemctl/systemctl-main.c index b23bc4e6fff..c0596cfb861 100644 --- a/src/systemctl/systemctl-main.c +++ b/src/systemctl/systemctl-main.c @@ -59,8 +59,8 @@ static int systemctl_main(int argc, char *argv[]) { { "list-machines", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY, verb_list_machines }, { "clear-jobs", VERB_ANY, 1, VERB_ONLINE_ONLY, verb_trivial_method }, { "cancel", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY, verb_cancel }, - { "start", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY, verb_start }, - { "stop", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY, verb_start }, + { "start", 2, VERB_ANY, VERB_ONLINE_ONLY, verb_start }, + { "stop", 2, VERB_ANY, VERB_ONLINE_ONLY, verb_start }, { "condstop", 2, VERB_ANY, VERB_ONLINE_ONLY, verb_start }, /* For compatibility with ALTLinux */ { "reload", 2, VERB_ANY, VERB_ONLINE_ONLY, verb_start }, { "restart", 2, VERB_ANY, VERB_ONLINE_ONLY, verb_start }, diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index fef1cb7a77b..382a50e3123 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -1069,13 +1069,14 @@ static int systemctl_parse_argv(int argc, char *argv[]) { return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "--wait may not be combined with --no-block."); + bool do_reload_or_restart = streq_ptr(argv[optind], "reload-or-restart"); if (arg_marked) { - if (!STRPTR_IN_SET(argv[optind], "reload-or-restart", "start", "stop")) + if (!do_reload_or_restart) return log_error_errno(SYNTHETIC_ERRNO(EINVAL), - "--marked may only be used with 'reload-or-restart', 'start', or 'stop'."); + "--marked may only be used with 'reload-or-restart'."); if (optind + 1 < argc) return log_error_errno(SYNTHETIC_ERRNO(EINVAL), - "No additional arguments allowed with '%s --marked'.", strna(argv[optind])); + "No additional arguments allowed with 'reload-or-restart --marked'."); if (arg_wait) return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "--marked --wait is not supported."); @@ -1083,10 +1084,10 @@ static int systemctl_parse_argv(int argc, char *argv[]) { return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "--marked --show-transaction is not supported."); - } else if (STRPTR_IN_SET(argv[optind], "reload-or-restart", "start", "stop")) { + } else if (do_reload_or_restart) { if (optind + 1 >= argc) return log_error_errno(SYNTHETIC_ERRNO(EINVAL), - "List of units to %s is required.", strna(argv[optind])); + "List of units to restart/reload is required."); } if (arg_image && arg_root)