return 0;
}
-static void cgroup_xattr_apply(Unit *u) {
+static void cgroup_invocation_id_xattr_apply(Unit *u) {
bool b;
- int r;
assert(u);
- /* The 'user.*' xattrs can be set from a user manager. */
- cgroup_oomd_xattr_apply(u);
- cgroup_log_xattr_apply(u);
-
- if (!MANAGER_IS_SYSTEM(u->manager))
- return;
-
b = !sd_id128_is_null(u->invocation_id);
FOREACH_STRING(xn, "trusted.invocation_id", "user.invocation_id") {
if (b)
else
unit_remove_xattr_graceful(u, xn);
}
+}
+
+static void cgroup_delegate_xattr_apply(Unit *u) {
+ bool b;
+
+ assert(u);
/* Indicate on the cgroup whether delegation is on, via an xattr. This is best-effort, as old kernels
* didn't support xattrs on cgroups at all. Later they got support for setting 'trusted.*' xattrs,
else
unit_remove_xattr_graceful(u, xn);
}
+}
+
+static void cgroup_survive_xattr_apply(Unit *u) {
+ int r;
+
+ assert(u);
if (u->survive_final_kill_signal) {
r = cg_set_xattr(
}
}
+static void cgroup_xattr_apply(Unit *u) {
+ assert(u);
+
+ /* The 'user.*' xattrs can be set from a user manager. */
+ cgroup_oomd_xattr_apply(u);
+ cgroup_log_xattr_apply(u);
+
+ if (!MANAGER_IS_SYSTEM(u->manager))
+ return;
+
+ cgroup_invocation_id_xattr_apply(u);
+ cgroup_delegate_xattr_apply(u);
+ cgroup_survive_xattr_apply(u);
+}
+
static int lookup_block_device(const char *p, dev_t *ret) {
dev_t rdev, dev = 0;
mode_t mode;