cgroup: refactor cgroup_xattr_apply()
Split the function up, so that each set of xattrs is applied separately.
This commit is contained in:
+28
-9
@@ -878,19 +878,11 @@ int cgroup_log_xattr_apply(Unit *u) {
|
||||
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)
|
||||
@@ -898,6 +890,12 @@ static void cgroup_xattr_apply(Unit *u) {
|
||||
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,
|
||||
@@ -914,6 +912,12 @@ static void cgroup_xattr_apply(Unit *u) {
|
||||
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(
|
||||
@@ -942,6 +946,21 @@ static void cgroup_xattr_apply(Unit *u) {
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user