From ad6b84d9601f6009fb7deeaa82e0c0901e511b1e Mon Sep 17 00:00:00 2001 From: Mike Yuan Date: Wed, 17 Apr 2024 01:32:27 +0800 Subject: [PATCH] systemctl-start-unit: Subscribe() is unnecessary if we RefUnit explicitly Subscribe() enables full signal delivery on API bus. But aside from that, if a unit/job is explicitly Ref()'d, manager also emits the signal. See bus_foreach_bus() for details. bus-wait-for-units refs every unit to wait for, so there's no need to Subscribe() on top of that. In verb_clean_or_freeze() Subscribe() is not called either. --- src/systemctl/systemctl-start-unit.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/systemctl/systemctl-start-unit.c b/src/systemctl/systemctl-start-unit.c index c1574f019e..8068d77d1c 100644 --- a/src/systemctl/systemctl-start-unit.c +++ b/src/systemctl/systemctl-start-unit.c @@ -381,10 +381,6 @@ int verb_start(int argc, char *argv[], void *userdata) { } if (arg_wait) { - r = bus_call_method_async(bus, NULL, bus_systemd_mgr, "Subscribe", NULL, NULL, NULL); - if (r < 0) - return log_error_errno(r, "Failed to enable subscription: %m"); - r = bus_wait_for_units_new(bus, &wu); if (r < 0) return log_error_errno(r, "Failed to allocate unit watch context: %m"); @@ -408,7 +404,7 @@ int verb_start(int argc, char *argv[], void *userdata) { } if (!arg_no_block) { - const char* extra_args[4]; + const char *extra_args[4]; WaitJobsFlags flags = 0; SET_FLAG(flags, BUS_WAIT_JOBS_LOG_ERROR, !arg_quiet);