summaryrefslogtreecommitdiff
path: root/utils/utils.go
diff options
context:
space:
mode:
authorGiuseppe Scrivano <gscrivan@redhat.com>2021-09-16 12:44:45 +0200
committerGiuseppe Scrivano <gscrivan@redhat.com>2021-09-16 20:17:39 +0200
commit72534a74b3c2ff35ae1711a890406a6bce5fa44f (patch)
tree84e43ac76d20dc17488f1a8b2edebfac59055d84 /utils/utils.go
parent9c1e27fdd536f6026efe3da4360755a3e9135ca8 (diff)
downloadpodman-72534a74b3c2ff35ae1711a890406a6bce5fa44f.tar.gz
podman-72534a74b3c2ff35ae1711a890406a6bce5fa44f.tar.bz2
podman-72534a74b3c2ff35ae1711a890406a6bce5fa44f.zip
system: move MovePauseProcessToScope to utils
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Diffstat (limited to 'utils/utils.go')
-rw-r--r--utils/utils.go25
1 files changed, 25 insertions, 0 deletions
diff --git a/utils/utils.go b/utils/utils.go
index e2760d225..185ac4865 100644
--- a/utils/utils.go
+++ b/utils/utils.go
@@ -172,3 +172,28 @@ func RunsOnSystemd() bool {
})
return runsOnSystemd
}
+
+func moveProcessToScope(pidPath, slice, scope string) error {
+ data, err := ioutil.ReadFile(pidPath)
+ if err != nil {
+ return errors.Wrapf(err, "cannot read pid file %s", pidPath)
+ }
+ pid, err := strconv.ParseUint(string(data), 10, 0)
+ if err != nil {
+ return errors.Wrapf(err, "cannot parse pid file %s", pidPath)
+ }
+ return RunUnderSystemdScope(int(pid), slice, scope)
+}
+
+// MovePauseProcessToScope moves the pause process used for rootless mode to keep the namespaces alive to
+// a separate scope.
+func MovePauseProcessToScope(pausePidPath string) {
+ err := moveProcessToScope(pausePidPath, "user.slice", "podman-pause.scope")
+ if err != nil {
+ if RunsOnSystemd() {
+ logrus.Warnf("Failed to add pause process to systemd sandbox cgroup: %v", err)
+ } else {
+ logrus.Debugf("Failed to add pause process to systemd sandbox cgroup: %v", err)
+ }
+ }
+}