diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2019-05-17 19:54:13 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-17 19:54:13 +0200 |
commit | 144244aeed673957692bc6cf36c933e4b2d93a80 (patch) | |
tree | eaf7ade613f69af364c38e7ff74b77af11731cae /pkg/util/utils_supported.go | |
parent | 41c4721b0b06e213e01713aa491fe877befbe077 (diff) | |
parent | 0e8f4ddaa93b12ca02a94a0624f38416f0f75e4e (diff) | |
download | podman-144244aeed673957692bc6cf36c933e4b2d93a80.tar.gz podman-144244aeed673957692bc6cf36c933e4b2d93a80.tar.bz2 podman-144244aeed673957692bc6cf36c933e4b2d93a80.zip |
Merge pull request #3104 from giuseppe/initial-cgroup2
rootless: allow resource isolation with cgroup v2
Diffstat (limited to 'pkg/util/utils_supported.go')
-rw-r--r-- | pkg/util/utils_supported.go | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/pkg/util/utils_supported.go b/pkg/util/utils_supported.go index af5e67fc1..8b98658c2 100644 --- a/pkg/util/utils_supported.go +++ b/pkg/util/utils_supported.go @@ -11,9 +11,33 @@ import ( "github.com/pkg/errors" "os" "path/filepath" + "sync" "syscall" ) +const ( + _cgroup2SuperMagic = 0x63677270 +) + +var ( + isUnifiedOnce sync.Once + isUnified bool + isUnifiedErr error +) + +// IsCgroup2UnifiedMode returns whether we are running in cgroup 2 unified mode. +func IsCgroup2UnifiedMode() (bool, error) { + isUnifiedOnce.Do(func() { + var st syscall.Statfs_t + if err := syscall.Statfs("/sys/fs/cgroup", &st); err != nil { + isUnified, isUnifiedErr = false, err + } else { + isUnified, isUnifiedErr = st.Type == _cgroup2SuperMagic, nil + } + }) + return isUnified, isUnifiedErr +} + // GetRootlessRuntimeDir returns the runtime directory when running as non root func GetRootlessRuntimeDir() (string, error) { var rootlessRuntimeDirError error |