diff --git a/libcontainer/cgroups/fs/apply_raw.go b/libcontainer/cgroups/fs/apply_raw.go index 59ce5ea6b..aa5012c38 100644 --- a/libcontainer/cgroups/fs/apply_raw.go +++ b/libcontainer/cgroups/fs/apply_raw.go @@ -68,6 +68,14 @@ type Manager struct { Paths map[string]string } +func NewManager(cg *configs.Cgroup, paths map[string]string, rootless bool) cgroups.Manager { + return &Manager{ + Cgroups: cg, + Paths: paths, + Rootless: rootless, + } +} + // The absolute path to the root of the cgroup hierarchies. var cgroupRootLock sync.Mutex var cgroupRoot string diff --git a/libcontainer/factory_linux.go b/libcontainer/factory_linux.go index 373d987f7..2d951ff96 100644 --- a/libcontainer/factory_linux.go +++ b/libcontainer/factory_linux.go @@ -120,20 +120,21 @@ func cgroupfs2(l *LinuxFactory, rootless bool) error { return nil } +func cgroupfs(l *LinuxFactory, rootless bool) error { + if cgroups.IsCgroup2UnifiedMode() { + return cgroupfs2(l, rootless) + } + l.NewCgroupsManager = func(config *configs.Cgroup, paths map[string]string) cgroups.Manager { + return fs.NewManager(config, paths, rootless) + } + return nil +} + // Cgroupfs is an options func to configure a LinuxFactory to return containers // that use the native cgroups filesystem implementation to create and manage // cgroups. func Cgroupfs(l *LinuxFactory) error { - if cgroups.IsCgroup2UnifiedMode() { - return cgroupfs2(l, false) - } - l.NewCgroupsManager = func(config *configs.Cgroup, paths map[string]string) cgroups.Manager { - return &fs.Manager{ - Cgroups: config, - Paths: paths, - } - } - return nil + return cgroupfs(l, false) } // RootlessCgroupfs is an options func to configure a LinuxFactory to return @@ -143,17 +144,7 @@ func Cgroupfs(l *LinuxFactory) error { // during rootless container (including euid=0 in userns) setup (while still allowing cgroup usage if // they've been set up properly). func RootlessCgroupfs(l *LinuxFactory) error { - if cgroups.IsCgroup2UnifiedMode() { - return cgroupfs2(l, true) - } - l.NewCgroupsManager = func(config *configs.Cgroup, paths map[string]string) cgroups.Manager { - return &fs.Manager{ - Cgroups: config, - Rootless: true, - Paths: paths, - } - } - return nil + return cgroupfs(l, true) } // IntelRdtfs is an options func to configure a LinuxFactory to return