podman/libpod/pod_internal_linux.go
Peter Jannesen d0b0c62853 Fix: cgroup is not set: internal libpod error after os reboot
[NO NEW TESTS NEEDED]
Closes #19175

Signed-off-by: Peter Jannesen <peter@jannesen.com>
2023-07-13 09:05:56 -04:00

35 lines
1.1 KiB
Go

package libpod
import (
"fmt"
"path/filepath"
"github.com/containers/common/pkg/config"
"github.com/containers/podman/v4/libpod/define"
"github.com/containers/podman/v4/pkg/rootless"
"github.com/sirupsen/logrus"
)
func (p *Pod) platformRefresh() error {
// We need to recreate the pod's cgroup
if p.config.UsePodCgroup {
switch p.runtime.config.Engine.CgroupManager {
case config.SystemdCgroupsManager:
cgroupPath, err := systemdSliceFromPath(p.config.CgroupParent, fmt.Sprintf("libpod_pod_%s", p.ID()), p.ResourceLim())
if err != nil {
logrus.Errorf("Creating Cgroup for pod %s: %v", p.ID(), err)
}
p.state.CgroupPath = cgroupPath
case config.CgroupfsCgroupsManager:
if !rootless.IsRootless() || isRootlessCgroupSet(p.config.CgroupParent) {
p.state.CgroupPath = filepath.Join(p.config.CgroupParent, p.ID())
logrus.Debugf("setting pod cgroup to %s", p.state.CgroupPath)
}
default:
return fmt.Errorf("unknown cgroups manager %s specified: %w", p.runtime.config.Engine.CgroupManager, define.ErrInvalidArg)
}
}
return nil
}