From: Mike Yuan Date: Tue, 16 Apr 2024 17:32:27 +0000 (+0800) Subject: systemctl-start-unit: Subscribe() is unnecessary if we RefUnit explicitly X-Git-Tag: v256-rc1~121^2~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ad6b84d9601f6009fb7deeaa82e0c0901e511b1e;p=thirdparty%2Fsystemd.git 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. --- diff --git a/src/systemctl/systemctl-start-unit.c b/src/systemctl/systemctl-start-unit.c index c1574f019e2..8068d77d1cd 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);