return r;
if (MANAGER_IS_SYSTEM(UNIT(t)->manager)) {
- r = unit_add_two_dependencies_by_name(UNIT(t), UNIT_AFTER, UNIT_REQUIRES, SPECIAL_SYSINIT_TARGET, true, UNIT_DEPENDENCY_DEFAULT);
+ r = unit_add_two_dependencies_by_name(UNIT(t),
+ UNIT_AFTER,
+ UNIT(t)->ignore_on_soft_reboot ? -EINVAL : UNIT_REQUIRES,
+ SPECIAL_SYSINIT_TARGET,
+ true,
+ UNIT_DEPENDENCY_DEFAULT);
if (r < 0)
return r;
}
}
- return unit_add_two_dependencies_by_name(UNIT(t), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_SHUTDOWN_TARGET, true, UNIT_DEPENDENCY_DEFAULT);
+ if (!UNIT(t)->ignore_on_soft_reboot)
+ return unit_add_two_dependencies_by_name(
+ UNIT(t),
+ UNIT_BEFORE, UNIT_CONFLICTS,
+ SPECIAL_SHUTDOWN_TARGET, true,
+ UNIT_DEPENDENCY_DEFAULT);
+
+ return unit_add_dependencies_on_real_shutdown_targets(UNIT(t));
}
static int timer_add_trigger_dependencies(Timer *t) {