Bump cgroups to dbea6f2bd41658b84b00417ceefa416b97
This fixes issues for systemd 420 and non-existant cgroups. Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
This commit is contained in:
		| @@ -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 != "" { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Michael Crosby
					Michael Crosby