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.
This commit is contained in:
Mike Yuan
2024-04-19 10:08:36 +08:00
parent 848cdaa6dd
commit ad6b84d960
+1 -5
View File
@@ -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);