From cd3435fc0b8ff37c5754d1437c93dd77cc9ccf20 Mon Sep 17 00:00:00 2001 From: Mike Yuan Date: Tue, 27 May 2025 17:42:02 +0200 Subject: [PATCH] cgroup-util: drop CGROUP_MASK_EXTEND_JOINED Also kill the "compat pair invalidation" logic in unit_invalidate_cgroup() --- src/basic/cgroup-util.h | 9 ----- src/core/cgroup.c | 14 ++------ src/test/test-cgroup-mask.c | 68 ++++++++++++++++++------------------- 3 files changed, 35 insertions(+), 56 deletions(-) diff --git a/src/basic/cgroup-util.h b/src/basic/cgroup-util.h index e4cb1598438..c5917296ddc 100644 --- a/src/basic/cgroup-util.h +++ b/src/basic/cgroup-util.h @@ -66,15 +66,6 @@ typedef enum CGroupMask { _CGROUP_MASK_ALL = CGROUP_CONTROLLER_TO_MASK(_CGROUP_CONTROLLER_MAX) - 1, } CGroupMask; -static inline CGroupMask CGROUP_MASK_EXTEND_JOINED(CGroupMask mask) { - /* We always mount "cpu" and "cpuacct" in the same hierarchy. Hence, when one bit is set also set the other */ - - if (mask & (CGROUP_MASK_CPU|CGROUP_MASK_CPUACCT)) - mask |= (CGROUP_MASK_CPU|CGROUP_MASK_CPUACCT); - - return mask; -} - /* Special values for all weight knobs on unified hierarchy */ #define CGROUP_WEIGHT_INVALID UINT64_MAX #define CGROUP_WEIGHT_IDLE UINT64_C(0) diff --git a/src/core/cgroup.c b/src/core/cgroup.c index d7d5983c8d8..6098462025e 100644 --- a/src/core/cgroup.c +++ b/src/core/cgroup.c @@ -1727,7 +1727,7 @@ static CGroupMask unit_get_cgroup_mask(Unit *u) { cgroup_tasks_max_isset(&c->tasks_max)) mask |= CGROUP_MASK_PIDS; - return CGROUP_MASK_EXTEND_JOINED(mask); + return mask; } static CGroupMask unit_get_bpf_mask(Unit *u) { @@ -1778,7 +1778,7 @@ CGroupMask unit_get_delegate_mask(Unit *u) { return 0; assert_se(c = unit_get_cgroup_context(u)); - return CGROUP_MASK_EXTEND_JOINED(c->delegate_controllers); + return c->delegate_controllers; } static CGroupMask unit_get_subtree_mask(Unit *u) { @@ -3980,16 +3980,6 @@ void unit_invalidate_cgroup(Unit *u, CGroupMask m) { if (!crt) return; - if (m == 0) - return; - - /* always invalidate compat pairs together */ - if (m & (CGROUP_MASK_IO | CGROUP_MASK_BLKIO)) - m |= CGROUP_MASK_IO | CGROUP_MASK_BLKIO; - - if (m & (CGROUP_MASK_CPU | CGROUP_MASK_CPUACCT)) - m |= CGROUP_MASK_CPU | CGROUP_MASK_CPUACCT; - if (FLAGS_SET(crt->cgroup_invalidated_mask, m)) /* NOP? */ return; diff --git a/src/test/test-cgroup-mask.c b/src/test/test-cgroup-mask.c index 42a055e50f6..c308715ffa1 100644 --- a/src/test/test-cgroup-mask.c +++ b/src/test/test-cgroup-mask.c @@ -11,8 +11,6 @@ log_cgroup_mask(got, expected); \ assert_se(got == expected) -#define ASSERT_CGROUP_MASK_JOINED(got, expected) ASSERT_CGROUP_MASK(got, CGROUP_MASK_EXTEND_JOINED(expected)) - static void log_cgroup_mask(CGroupMask got, CGroupMask expected) { _cleanup_free_ char *e_store = NULL, *g_store = NULL; @@ -72,53 +70,53 @@ TEST_RET(cgroup_mask, .sd_booted = true) { assert_se(UNIT_GET_SLICE(nomem_parent) == root); /* Verify per-unit cgroups settings. */ - ASSERT_CGROUP_MASK_JOINED(unit_get_own_mask(son), CGROUP_MASK_CPU); - ASSERT_CGROUP_MASK_JOINED(unit_get_own_mask(grandchild), 0); - ASSERT_CGROUP_MASK_JOINED(unit_get_own_mask(parent_deep), CGROUP_MASK_MEMORY); - ASSERT_CGROUP_MASK_JOINED(unit_get_own_mask(parent), (CGROUP_MASK_IO | CGROUP_MASK_BLKIO)); - ASSERT_CGROUP_MASK_JOINED(unit_get_own_mask(nomem_parent), 0); - ASSERT_CGROUP_MASK_JOINED(unit_get_own_mask(nomem_leaf), (CGROUP_MASK_IO | CGROUP_MASK_BLKIO | CGROUP_MASK_MEMORY)); - ASSERT_CGROUP_MASK_JOINED(unit_get_own_mask(root), 0); + ASSERT_CGROUP_MASK(unit_get_own_mask(son), CGROUP_MASK_CPU); + ASSERT_CGROUP_MASK(unit_get_own_mask(grandchild), 0); + ASSERT_CGROUP_MASK(unit_get_own_mask(parent_deep), CGROUP_MASK_MEMORY); + ASSERT_CGROUP_MASK(unit_get_own_mask(parent), (CGROUP_MASK_IO | CGROUP_MASK_BLKIO)); + ASSERT_CGROUP_MASK(unit_get_own_mask(nomem_parent), 0); + ASSERT_CGROUP_MASK(unit_get_own_mask(nomem_leaf), (CGROUP_MASK_IO | CGROUP_MASK_BLKIO | CGROUP_MASK_MEMORY)); + ASSERT_CGROUP_MASK(unit_get_own_mask(root), 0); /* Verify aggregation of member masks */ - ASSERT_CGROUP_MASK_JOINED(unit_get_members_mask(son), 0); - ASSERT_CGROUP_MASK_JOINED(unit_get_members_mask(daughter), 0); - ASSERT_CGROUP_MASK_JOINED(unit_get_members_mask(grandchild), 0); - ASSERT_CGROUP_MASK_JOINED(unit_get_members_mask(parent_deep), 0); - ASSERT_CGROUP_MASK_JOINED(unit_get_members_mask(parent), (CGROUP_MASK_CPU | CGROUP_MASK_MEMORY)); - ASSERT_CGROUP_MASK_JOINED(unit_get_members_mask(nomem_parent), (CGROUP_MASK_IO | CGROUP_MASK_BLKIO | CGROUP_MASK_MEMORY)); - ASSERT_CGROUP_MASK_JOINED(unit_get_members_mask(nomem_leaf), 0); - ASSERT_CGROUP_MASK_JOINED(unit_get_members_mask(root), (CGROUP_MASK_CPU | CGROUP_MASK_IO | CGROUP_MASK_BLKIO | CGROUP_MASK_MEMORY)); + ASSERT_CGROUP_MASK(unit_get_members_mask(son), 0); + ASSERT_CGROUP_MASK(unit_get_members_mask(daughter), 0); + ASSERT_CGROUP_MASK(unit_get_members_mask(grandchild), 0); + ASSERT_CGROUP_MASK(unit_get_members_mask(parent_deep), 0); + ASSERT_CGROUP_MASK(unit_get_members_mask(parent), (CGROUP_MASK_CPU | CGROUP_MASK_MEMORY)); + ASSERT_CGROUP_MASK(unit_get_members_mask(nomem_parent), (CGROUP_MASK_IO | CGROUP_MASK_BLKIO | CGROUP_MASK_MEMORY)); + ASSERT_CGROUP_MASK(unit_get_members_mask(nomem_leaf), 0); + ASSERT_CGROUP_MASK(unit_get_members_mask(root), (CGROUP_MASK_CPU | CGROUP_MASK_IO | CGROUP_MASK_BLKIO | CGROUP_MASK_MEMORY)); /* Verify aggregation of sibling masks. */ - ASSERT_CGROUP_MASK_JOINED(unit_get_siblings_mask(son), (CGROUP_MASK_CPU | CGROUP_MASK_MEMORY)); - ASSERT_CGROUP_MASK_JOINED(unit_get_siblings_mask(daughter), (CGROUP_MASK_CPU | CGROUP_MASK_MEMORY)); - ASSERT_CGROUP_MASK_JOINED(unit_get_siblings_mask(grandchild), 0); - ASSERT_CGROUP_MASK_JOINED(unit_get_siblings_mask(parent_deep), (CGROUP_MASK_CPU | CGROUP_MASK_MEMORY)); - ASSERT_CGROUP_MASK_JOINED(unit_get_siblings_mask(parent), (CGROUP_MASK_CPU | CGROUP_MASK_IO | CGROUP_MASK_BLKIO | CGROUP_MASK_MEMORY)); - ASSERT_CGROUP_MASK_JOINED(unit_get_siblings_mask(nomem_parent), (CGROUP_MASK_CPU | CGROUP_MASK_CPUACCT | CGROUP_MASK_IO | CGROUP_MASK_BLKIO | CGROUP_MASK_MEMORY)); - ASSERT_CGROUP_MASK_JOINED(unit_get_siblings_mask(nomem_leaf), (CGROUP_MASK_IO | CGROUP_MASK_BLKIO | CGROUP_MASK_MEMORY)); - ASSERT_CGROUP_MASK_JOINED(unit_get_siblings_mask(root), (CGROUP_MASK_CPU | CGROUP_MASK_IO | CGROUP_MASK_BLKIO | CGROUP_MASK_MEMORY)); + ASSERT_CGROUP_MASK(unit_get_siblings_mask(son), (CGROUP_MASK_CPU | CGROUP_MASK_MEMORY)); + ASSERT_CGROUP_MASK(unit_get_siblings_mask(daughter), (CGROUP_MASK_CPU | CGROUP_MASK_MEMORY)); + ASSERT_CGROUP_MASK(unit_get_siblings_mask(grandchild), 0); + ASSERT_CGROUP_MASK(unit_get_siblings_mask(parent_deep), (CGROUP_MASK_CPU | CGROUP_MASK_MEMORY)); + ASSERT_CGROUP_MASK(unit_get_siblings_mask(parent), (CGROUP_MASK_CPU | CGROUP_MASK_IO | CGROUP_MASK_BLKIO | CGROUP_MASK_MEMORY)); + ASSERT_CGROUP_MASK(unit_get_siblings_mask(nomem_parent), (CGROUP_MASK_CPU | CGROUP_MASK_IO | CGROUP_MASK_BLKIO | CGROUP_MASK_MEMORY)); + ASSERT_CGROUP_MASK(unit_get_siblings_mask(nomem_leaf), (CGROUP_MASK_IO | CGROUP_MASK_BLKIO | CGROUP_MASK_MEMORY)); + ASSERT_CGROUP_MASK(unit_get_siblings_mask(root), (CGROUP_MASK_CPU | CGROUP_MASK_IO | CGROUP_MASK_BLKIO | CGROUP_MASK_MEMORY)); /* Verify aggregation of target masks. */ - ASSERT_CGROUP_MASK(unit_get_target_mask(son), (CGROUP_MASK_EXTEND_JOINED(CGROUP_MASK_CPU | CGROUP_MASK_MEMORY) & m->cgroup_supported)); - ASSERT_CGROUP_MASK(unit_get_target_mask(daughter), (CGROUP_MASK_EXTEND_JOINED(CGROUP_MASK_CPU | CGROUP_MASK_MEMORY) & m->cgroup_supported)); + ASSERT_CGROUP_MASK(unit_get_target_mask(son), ((CGROUP_MASK_CPU | CGROUP_MASK_MEMORY) & m->cgroup_supported)); + ASSERT_CGROUP_MASK(unit_get_target_mask(daughter), ((CGROUP_MASK_CPU | CGROUP_MASK_MEMORY) & m->cgroup_supported)); ASSERT_CGROUP_MASK(unit_get_target_mask(grandchild), 0); - ASSERT_CGROUP_MASK(unit_get_target_mask(parent_deep), (CGROUP_MASK_EXTEND_JOINED(CGROUP_MASK_CPU | CGROUP_MASK_MEMORY) & m->cgroup_supported)); - ASSERT_CGROUP_MASK(unit_get_target_mask(parent), (CGROUP_MASK_EXTEND_JOINED(CGROUP_MASK_CPU | CGROUP_MASK_IO | CGROUP_MASK_BLKIO | CGROUP_MASK_MEMORY) & m->cgroup_supported)); - ASSERT_CGROUP_MASK(unit_get_target_mask(nomem_parent), (CGROUP_MASK_EXTEND_JOINED(CGROUP_MASK_CPU | CGROUP_MASK_CPUACCT | CGROUP_MASK_IO | CGROUP_MASK_BLKIO) & m->cgroup_supported)); - ASSERT_CGROUP_MASK(unit_get_target_mask(nomem_leaf), (CGROUP_MASK_EXTEND_JOINED(CGROUP_MASK_IO | CGROUP_MASK_BLKIO) & m->cgroup_supported)); - ASSERT_CGROUP_MASK(unit_get_target_mask(root), (CGROUP_MASK_EXTEND_JOINED(CGROUP_MASK_CPU | CGROUP_MASK_IO | CGROUP_MASK_BLKIO | CGROUP_MASK_MEMORY) & m->cgroup_supported)); + ASSERT_CGROUP_MASK(unit_get_target_mask(parent_deep), ((CGROUP_MASK_CPU | CGROUP_MASK_MEMORY) & m->cgroup_supported)); + ASSERT_CGROUP_MASK(unit_get_target_mask(parent), ((CGROUP_MASK_CPU | CGROUP_MASK_IO | CGROUP_MASK_BLKIO | CGROUP_MASK_MEMORY) & m->cgroup_supported)); + ASSERT_CGROUP_MASK(unit_get_target_mask(nomem_parent), ((CGROUP_MASK_CPU | CGROUP_MASK_IO | CGROUP_MASK_BLKIO) & m->cgroup_supported)); + ASSERT_CGROUP_MASK(unit_get_target_mask(nomem_leaf), ((CGROUP_MASK_IO | CGROUP_MASK_BLKIO) & m->cgroup_supported)); + ASSERT_CGROUP_MASK(unit_get_target_mask(root), ((CGROUP_MASK_CPU | CGROUP_MASK_IO | CGROUP_MASK_BLKIO | CGROUP_MASK_MEMORY) & m->cgroup_supported)); /* Verify aggregation of enable masks. */ ASSERT_CGROUP_MASK(unit_get_enable_mask(son), 0); ASSERT_CGROUP_MASK(unit_get_enable_mask(daughter), 0); ASSERT_CGROUP_MASK(unit_get_enable_mask(grandchild), 0); ASSERT_CGROUP_MASK(unit_get_enable_mask(parent_deep), 0); - ASSERT_CGROUP_MASK(unit_get_enable_mask(parent), (CGROUP_MASK_EXTEND_JOINED(CGROUP_MASK_CPU | CGROUP_MASK_MEMORY) & m->cgroup_supported)); - ASSERT_CGROUP_MASK(unit_get_enable_mask(nomem_parent), (CGROUP_MASK_EXTEND_JOINED(CGROUP_MASK_IO | CGROUP_MASK_BLKIO) & m->cgroup_supported)); + ASSERT_CGROUP_MASK(unit_get_enable_mask(parent), ((CGROUP_MASK_CPU | CGROUP_MASK_MEMORY) & m->cgroup_supported)); + ASSERT_CGROUP_MASK(unit_get_enable_mask(nomem_parent), ((CGROUP_MASK_IO | CGROUP_MASK_BLKIO) & m->cgroup_supported)); ASSERT_CGROUP_MASK(unit_get_enable_mask(nomem_leaf), 0); - ASSERT_CGROUP_MASK(unit_get_enable_mask(root), (CGROUP_MASK_EXTEND_JOINED(CGROUP_MASK_CPU | CGROUP_MASK_IO | CGROUP_MASK_BLKIO | CGROUP_MASK_MEMORY) & m->cgroup_supported)); + ASSERT_CGROUP_MASK(unit_get_enable_mask(root), ((CGROUP_MASK_CPU | CGROUP_MASK_IO | CGROUP_MASK_BLKIO | CGROUP_MASK_MEMORY) & m->cgroup_supported)); return 0; } -- 2.47.3