diff --git a/cgroup2/manager.go b/cgroup2/manager.go index 59e55f4..34bc26a 100644 --- a/cgroup2/manager.go +++ b/cgroup2/manager.go @@ -242,8 +242,10 @@ func setResources(path string, resources *Resources) error { type CgroupType string const ( - Domain CgroupType = "domain" - Threaded CgroupType = "threaded" + Domain CgroupType = "domain" + DomainThreaded CgroupType = "domain threaded" + DomainInvalid CgroupType = "domain invalid" + Threaded CgroupType = "threaded" ) func (c *Manager) GetType() (CgroupType, error) { diff --git a/cgroup2/manager_test.go b/cgroup2/manager_test.go index c8ba0c5..76cbc3f 100644 --- a/cgroup2/manager_test.go +++ b/cgroup2/manager_test.go @@ -283,20 +283,31 @@ func TestCgroupType(t *testing.T) { checkCgroupMode(t) manager, err := NewManager(defaultCgroup2Path, "/test-type", ToResources(&specs.LinuxResources{})) require.NoError(t, err) + submanager, err := NewManager(defaultCgroup2Path, "/test-type/sub", ToResources(&specs.LinuxResources{})) + require.NoError(t, err) + t.Cleanup(func() { + _ = submanager.Delete() _ = manager.Delete() }) + // Check initial type is domain cgType, err := manager.GetType() require.NoError(t, err) require.Equal(t, cgType, Domain) - // Swap to threaded - require.NoError(t, manager.SetType(Threaded)) + // Swap sub cgroup to threaded + require.NoError(t, submanager.SetType(Threaded)) - cgType, err = manager.GetType() + // Check sub cgroup type is threaded + cgType, err = submanager.GetType() require.NoError(t, err) require.Equal(t, cgType, Threaded) + + // Check parent cgroup type is domain threaded + cgType, err = manager.GetType() + require.NoError(t, err) + require.Equal(t, cgType, DomainThreaded) } func TestCgroupv2PSIStats(t *testing.T) {