diff --git a/libcontainer/cgroups/fs/apply_raw.go b/libcontainer/cgroups/fs/apply_raw.go index f75dab1b..cd6c0a88 100644 --- a/libcontainer/cgroups/fs/apply_raw.go +++ b/libcontainer/cgroups/fs/apply_raw.go @@ -240,7 +240,7 @@ func (raw *data) parent(subsystem, mountpoint, src string) (string, error) { if err != nil { return "", err } - relDir, err := filepath.Rel(src, initPath) + relDir, err := filepath.Rel(initPath, src) if err != nil { return "", err } diff --git a/libcontainer/cgroups/fs/apply_raw_test.go b/libcontainer/cgroups/fs/apply_raw_test.go new file mode 100644 index 00000000..50aff591 --- /dev/null +++ b/libcontainer/cgroups/fs/apply_raw_test.go @@ -0,0 +1,29 @@ +package fs + +import ( + "path/filepath" + "testing" + + "github.com/opencontainers/runc/libcontainer/cgroups" +) + +func TestCgroupParent(t *testing.T) { + raw := &data{ + cgroup: "", + } + subsystem := "memory" + subPath := "/docker/874e38c82a6c630dc95f3f1f2c8d8f43efb531d35a9f46154ab2fde1531b7bb6" + initPath, err := cgroups.GetInitCgroupDir(subsystem) + if err != nil { + t.Fatal(err) + } + srcPath := filepath.Join(initPath, subPath) + cgPath := "/sys/fs/cgroup/memory" + path, err := raw.parent(subsystem, cgPath, srcPath) + if err != nil { + t.Fatal(err) + } + if path != filepath.Join(cgPath, subPath) { + t.Fatalf("Unexpected path: %s, should be %s", path, filepath.Join(cgPath, subPath)) + } +}