if (!s->what)
return 0;
+ if (!s->from_fragment)
+ return 0;
+
if (is_device_path(s->what))
return unit_add_node_link(UNIT(s), s->what, UNIT(s)->manager->running_as == SYSTEMD_SYSTEM);
else
}
static int swap_add_default_dependencies(Swap *s) {
- int r;
-
assert(s);
if (UNIT(s)->manager->running_as != SYSTEMD_SYSTEM)
if (detect_container(NULL) > 0)
return 0;
- r = unit_add_two_dependencies_by_name(UNIT(s), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, NULL, true);
- if (r < 0)
- return r;
-
- if (!s->from_fragment)
- /* The swap unit can either be for an alternative device name, in which
- * case we don't need to add the dependency on swap.target because this unit
- * is following a different unit which will have this dependency added,
- * or it can be derived from /proc/swaps, in which case it was started
- * manually, and should not become a dependency of swap.target. */
- return 0;
-
- return unit_add_two_dependencies_by_name_inverse(UNIT(s), UNIT_AFTER, UNIT_REQUIRES, SPECIAL_SWAP_TARGET, NULL, true);
+ return unit_add_two_dependencies_by_name(UNIT(s), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, NULL, true);
}
static int swap_verify(Swap *s) {
exec_params.confirm_spawn = UNIT(s)->manager->confirm_spawn;
exec_params.cgroup_supported = UNIT(s)->manager->cgroup_supported;
exec_params.cgroup_path = UNIT(s)->cgroup_path;
+ exec_params.cgroup_delegate = s->cgroup_context.delegate;
exec_params.runtime_prefix = manager_get_runtime_prefix(UNIT(s)->manager);
exec_params.unit_id = UNIT(s)->id;
r = unit_kill_context(
UNIT(s),
&s->kill_context,
- state != SWAP_ACTIVATING_SIGTERM && state != SWAP_DEACTIVATING_SIGTERM,
+ (state != SWAP_ACTIVATING_SIGTERM && state != SWAP_DEACTIVATING_SIGTERM) ?
+ KILL_KILL : KILL_TERMINATE,
-1,
s->control_pid,
false);