Merge pull request #3048 from crosbymichael/bump-cgroups
Bump cgroups to dbea6f2bd41658b84b00417ceefa416b97
This commit is contained in:
commit
e72ad44427
@ -1,6 +1,6 @@
|
|||||||
github.com/containerd/go-runc 5a6d9f37cfa36b15efba46dc7ea349fa9b7143c3
|
github.com/containerd/go-runc 5a6d9f37cfa36b15efba46dc7ea349fa9b7143c3
|
||||||
github.com/containerd/console c12b1e7919c14469339a5d38f2f8ed9b64a9de23
|
github.com/containerd/console c12b1e7919c14469339a5d38f2f8ed9b64a9de23
|
||||||
github.com/containerd/cgroups 1152b960fcee041f50df15cdc67c29dbccf801ef
|
github.com/containerd/cgroups dbea6f2bd41658b84b00417ceefa416b979cbf10
|
||||||
github.com/containerd/typeurl a93fcdb778cd272c6e9b3028b2f42d813e785d40
|
github.com/containerd/typeurl a93fcdb778cd272c6e9b3028b2f42d813e785d40
|
||||||
github.com/containerd/fifo 3d5202aec260678c48179c56f40e6f38a095738c
|
github.com/containerd/fifo 3d5202aec260678c48179c56f40e6f38a095738c
|
||||||
github.com/containerd/btrfs 2e1aa0ddf94f91fa282b6ed87c23bf0d64911244
|
github.com/containerd/btrfs 2e1aa0ddf94f91fa282b6ed87c23bf0d64911244
|
||||||
|
41
vendor/github.com/containerd/cgroups/cgroup.go
generated
vendored
41
vendor/github.com/containerd/cgroups/cgroup.go
generated
vendored
@ -30,24 +30,49 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// New returns a new control via the cgroup cgroups interface
|
// New returns a new control via the cgroup cgroups interface
|
||||||
func New(hierarchy Hierarchy, path Path, resources *specs.LinuxResources) (Cgroup, error) {
|
func New(hierarchy Hierarchy, path Path, resources *specs.LinuxResources, opts ...InitOpts) (Cgroup, error) {
|
||||||
|
config := newInitConfig()
|
||||||
|
for _, o := range opts {
|
||||||
|
if err := o(config); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
subsystems, err := hierarchy()
|
subsystems, err := hierarchy()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
var active []Subsystem
|
||||||
for _, s := range subsystems {
|
for _, s := range subsystems {
|
||||||
|
// check if subsystem exists
|
||||||
if err := initializeSubsystem(s, path, resources); err != nil {
|
if err := initializeSubsystem(s, path, resources); err != nil {
|
||||||
|
if err == ErrControllerNotActive {
|
||||||
|
if config.InitCheck != nil {
|
||||||
|
if skerr := config.InitCheck(s, path, err); skerr != nil {
|
||||||
|
if skerr != ErrIgnoreSubsystem {
|
||||||
|
return nil, skerr
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
active = append(active, s)
|
||||||
}
|
}
|
||||||
return &cgroup{
|
return &cgroup{
|
||||||
path: path,
|
path: path,
|
||||||
subsystems: subsystems,
|
subsystems: active,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load will load an existing cgroup and allow it to be controlled
|
// Load will load an existing cgroup and allow it to be controlled
|
||||||
func Load(hierarchy Hierarchy, path Path) (Cgroup, error) {
|
func Load(hierarchy Hierarchy, path Path, opts ...InitOpts) (Cgroup, error) {
|
||||||
|
config := newInitConfig()
|
||||||
|
for _, o := range opts {
|
||||||
|
if err := o(config); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
var activeSubsystems []Subsystem
|
var activeSubsystems []Subsystem
|
||||||
subsystems, err := hierarchy()
|
subsystems, err := hierarchy()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -60,6 +85,16 @@ func Load(hierarchy Hierarchy, path Path) (Cgroup, error) {
|
|||||||
if os.IsNotExist(errors.Cause(err)) {
|
if os.IsNotExist(errors.Cause(err)) {
|
||||||
return nil, ErrCgroupDeleted
|
return nil, ErrCgroupDeleted
|
||||||
}
|
}
|
||||||
|
if err == ErrControllerNotActive {
|
||||||
|
if config.InitCheck != nil {
|
||||||
|
if skerr := config.InitCheck(s, path, err); skerr != nil {
|
||||||
|
if skerr != ErrIgnoreSubsystem {
|
||||||
|
return nil, skerr
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if _, err := os.Lstat(s.Path(p)); err != nil {
|
if _, err := os.Lstat(s.Path(p)); err != nil {
|
||||||
|
61
vendor/github.com/containerd/cgroups/opts.go
generated
vendored
Normal file
61
vendor/github.com/containerd/cgroups/opts.go
generated
vendored
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
/*
|
||||||
|
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 (
|
||||||
|
"github.com/pkg/errors"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
// ErrIgnoreSubsystem allows the specific subsystem to be skipped
|
||||||
|
ErrIgnoreSubsystem = errors.New("skip subsystem")
|
||||||
|
// ErrDevicesRequired is returned when the devices subsystem is required but
|
||||||
|
// does not exist or is not active
|
||||||
|
ErrDevicesRequired = errors.New("devices subsystem is required")
|
||||||
|
)
|
||||||
|
|
||||||
|
// InitOpts allows configuration for the creation or loading of a cgroup
|
||||||
|
type InitOpts func(*InitConfig) error
|
||||||
|
|
||||||
|
// InitConfig provides configuration options for the creation
|
||||||
|
// or loading of a cgroup and its subsystems
|
||||||
|
type InitConfig struct {
|
||||||
|
// InitCheck can be used to check initialization errors from the subsystem
|
||||||
|
InitCheck InitCheck
|
||||||
|
}
|
||||||
|
|
||||||
|
func newInitConfig() *InitConfig {
|
||||||
|
return &InitConfig{
|
||||||
|
InitCheck: RequireDevices,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// InitCheck allows subsystems errors to be checked when initialized or loaded
|
||||||
|
type InitCheck func(Subsystem, Path, error) error
|
||||||
|
|
||||||
|
// AllowAny allows any subsystem errors to be skipped
|
||||||
|
func AllowAny(s Subsystem, p Path, err error) error {
|
||||||
|
return ErrIgnoreSubsystem
|
||||||
|
}
|
||||||
|
|
||||||
|
// RequireDevices requires the device subsystem but no others
|
||||||
|
func RequireDevices(s Subsystem, p Path, err error) error {
|
||||||
|
if s.Name() == Devices {
|
||||||
|
return ErrDevicesRequired
|
||||||
|
}
|
||||||
|
return ErrIgnoreSubsystem
|
||||||
|
}
|
5
vendor/github.com/containerd/cgroups/paths.go
generated
vendored
5
vendor/github.com/containerd/cgroups/paths.go
generated
vendored
@ -57,6 +57,9 @@ func PidPath(pid int) Path {
|
|||||||
return existingPath(paths, "")
|
return existingPath(paths, "")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ErrControllerNotActive is returned when a controller is not supported or enabled
|
||||||
|
var ErrControllerNotActive = errors.New("controller is not supported")
|
||||||
|
|
||||||
func existingPath(paths map[string]string, suffix string) Path {
|
func existingPath(paths map[string]string, suffix string) Path {
|
||||||
// localize the paths based on the root mount dest for nested cgroups
|
// localize the paths based on the root mount dest for nested cgroups
|
||||||
for n, p := range paths {
|
for n, p := range paths {
|
||||||
@ -77,7 +80,7 @@ func existingPath(paths map[string]string, suffix string) Path {
|
|||||||
root, ok := paths[string(name)]
|
root, ok := paths[string(name)]
|
||||||
if !ok {
|
if !ok {
|
||||||
if root, ok = paths[fmt.Sprintf("name=%s", name)]; !ok {
|
if root, ok = paths[fmt.Sprintf("name=%s", name)]; !ok {
|
||||||
return "", fmt.Errorf("unable to find %q in controller set", name)
|
return "", ErrControllerNotActive
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if suffix != "" {
|
if suffix != "" {
|
||||||
|
Loading…
Reference in New Issue
Block a user