libct/cgroups/fs: introduce NewManager()
...and use it from libcontainer/factory_linux.go. Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
This commit is contained in:
parent
24f945e08d
commit
5935bf8c21
|
@ -68,6 +68,14 @@ type Manager struct {
|
||||||
Paths map[string]string
|
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.
|
// The absolute path to the root of the cgroup hierarchies.
|
||||||
var cgroupRootLock sync.Mutex
|
var cgroupRootLock sync.Mutex
|
||||||
var cgroupRoot string
|
var cgroupRoot string
|
||||||
|
|
|
@ -120,20 +120,21 @@ func cgroupfs2(l *LinuxFactory, rootless bool) error {
|
||||||
return nil
|
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
|
// Cgroupfs is an options func to configure a LinuxFactory to return containers
|
||||||
// that use the native cgroups filesystem implementation to create and manage
|
// that use the native cgroups filesystem implementation to create and manage
|
||||||
// cgroups.
|
// cgroups.
|
||||||
func Cgroupfs(l *LinuxFactory) error {
|
func Cgroupfs(l *LinuxFactory) error {
|
||||||
if cgroups.IsCgroup2UnifiedMode() {
|
return cgroupfs(l, false)
|
||||||
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
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// RootlessCgroupfs is an options func to configure a LinuxFactory to return
|
// 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
|
// during rootless container (including euid=0 in userns) setup (while still allowing cgroup usage if
|
||||||
// they've been set up properly).
|
// they've been set up properly).
|
||||||
func RootlessCgroupfs(l *LinuxFactory) error {
|
func RootlessCgroupfs(l *LinuxFactory) error {
|
||||||
if cgroups.IsCgroup2UnifiedMode() {
|
return cgroupfs(l, true)
|
||||||
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
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// IntelRdtfs is an options func to configure a LinuxFactory to return
|
// IntelRdtfs is an options func to configure a LinuxFactory to return
|
||||||
|
|
Loading…
Reference in New Issue