From bbbbfa582b923746d752e336edcf21135c340fcf Mon Sep 17 00:00:00 2001 From: baude Date: Wed, 5 Sep 2018 18:30:30 -0500 Subject: vendor containerd/cgroups We need to vendor in the latest containerd/cgroups for a fix related to slice delegation and systemd <= 239. The opencontainer/runtime-spec is brought along for the ride. Signed-off-by: baude Closes: #1414 Approved by: mheon --- vendor/github.com/containerd/cgroups/cgroup.go | 46 ++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'vendor/github.com/containerd/cgroups/cgroup.go') diff --git a/vendor/github.com/containerd/cgroups/cgroup.go b/vendor/github.com/containerd/cgroups/cgroup.go index d1c36bde3..7959feb49 100644 --- a/vendor/github.com/containerd/cgroups/cgroup.go +++ b/vendor/github.com/containerd/cgroups/cgroup.go @@ -1,3 +1,19 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package cgroups import ( @@ -121,6 +137,36 @@ func (c *cgroup) add(process Process) error { return nil } +// AddTask moves the provided tasks (threads) into the new cgroup +func (c *cgroup) AddTask(process Process) error { + if process.Pid <= 0 { + return ErrInvalidPid + } + c.mu.Lock() + defer c.mu.Unlock() + if c.err != nil { + return c.err + } + return c.addTask(process) +} + +func (c *cgroup) addTask(process Process) error { + for _, s := range pathers(c.subsystems) { + p, err := c.path(s.Name()) + if err != nil { + return err + } + if err := ioutil.WriteFile( + filepath.Join(s.Path(p), cgroupTasks), + []byte(strconv.Itoa(process.Pid)), + defaultFilePerm, + ); err != nil { + return err + } + } + return nil +} + // Delete will remove the control group from each of the subsystems registered func (c *cgroup) Delete() error { c.mu.Lock() -- cgit v1.2.3-54-g00ecf