core: add IgnoreOnSoftReboot= unit option
As it says on the tin, configures the unit to survive a soft reboot. Currently all the following options have to be set by hand: Conflicts=reboot.target kexec.target poweroff.target halt.target Before=reboot.target kexec.target poweroff.target halt.target After=sysinit.target basic.target DefaultDependencies=no IgnoreOnIsolate=yes This is not very user friendly. If new default dependencies are added, or new shutdown/reboot types, they also have to be added manually. The new option is much simpler, easy to find, and does the right thing by default.
This commit is contained in:
committed by
Zbigniew Jędrzejewski-Szmek
parent
03d298e1e5
commit
b80fc61e89
+9
-9
@@ -64,22 +64,22 @@ static int slice_add_parent_slice(Slice *s) {
|
||||
}
|
||||
|
||||
static int slice_add_default_dependencies(Slice *s) {
|
||||
int r;
|
||||
|
||||
assert(s);
|
||||
|
||||
if (!UNIT(s)->default_dependencies)
|
||||
return 0;
|
||||
|
||||
/* Make sure slices are unloaded on shutdown */
|
||||
r = unit_add_two_dependencies_by_name(
|
||||
UNIT(s),
|
||||
UNIT_BEFORE, UNIT_CONFLICTS,
|
||||
SPECIAL_SHUTDOWN_TARGET, true, UNIT_DEPENDENCY_DEFAULT);
|
||||
if (r < 0)
|
||||
return r;
|
||||
if (!UNIT(s)->ignore_on_soft_reboot)
|
||||
return unit_add_two_dependencies_by_name(
|
||||
UNIT(s),
|
||||
UNIT_BEFORE, UNIT_CONFLICTS,
|
||||
SPECIAL_SHUTDOWN_TARGET, true,
|
||||
UNIT_DEPENDENCY_DEFAULT);
|
||||
|
||||
return 0;
|
||||
/* Unless we are meant to survive soft reboot, in which case we need to conflict with
|
||||
* non-soft-reboot targets. */
|
||||
return unit_add_dependencies_on_real_shutdown_targets(UNIT(s));
|
||||
}
|
||||
|
||||
static int slice_verify(Slice *s) {
|
||||
|
||||
Reference in New Issue
Block a user