summaryrefslogtreecommitdiffhomepage
path: root/runsc/boot
diff options
context:
space:
mode:
Diffstat (limited to 'runsc/boot')
-rw-r--r--runsc/boot/controller.go1
-rw-r--r--runsc/boot/loader.go12
-rw-r--r--runsc/boot/loader_test.go3
3 files changed, 8 insertions, 8 deletions
diff --git a/runsc/boot/controller.go b/runsc/boot/controller.go
index 7d7803e92..bc33e028a 100644
--- a/runsc/boot/controller.go
+++ b/runsc/boot/controller.go
@@ -171,7 +171,6 @@ func (cm *containerManager) StartRoot(cid *string, _ *struct{}) error {
if err := <-cm.startResultChan; err != nil {
return fmt.Errorf("failed to start sandbox: %v", err)
}
- cm.l.setRootContainerID(*cid)
return nil
}
diff --git a/runsc/boot/loader.go b/runsc/boot/loader.go
index 5867eec96..9a5d649ab 100644
--- a/runsc/boot/loader.go
+++ b/runsc/boot/loader.go
@@ -142,7 +142,7 @@ func init() {
// New initializes a new kernel loader configured by spec.
// New also handles setting up a kernel for restoring a container.
-func New(spec *specs.Spec, conf *Config, controllerFD, deviceFD int, goferFDs []int, console bool) (*Loader, error) {
+func New(id string, spec *specs.Spec, conf *Config, controllerFD, deviceFD int, goferFDs []int, console bool) (*Loader, error) {
if err := usage.Init(); err != nil {
return nil, fmt.Errorf("Error setting up memory usage: %v", err)
}
@@ -286,6 +286,9 @@ func New(spec *specs.Spec, conf *Config, controllerFD, deviceFD int, goferFDs []
spec: spec,
startSignalForwarding: startSignalForwarding,
rootProcArgs: procArgs,
+ sandboxID: id,
+ containerRootTGs: make(map[string]*kernel.ThreadGroup),
+ execProcesses: make(map[execID]*kernel.ThreadGroup),
}
ctrl.manager.l = l
return l, nil
@@ -420,10 +423,9 @@ func (l *Loader) run() error {
l.rootProcArgs.FDMap.DecRef()
}
- if l.execProcesses != nil {
- return fmt.Errorf("there shouldn't already be a cache of exec'd processes, but found: %v", l.execProcesses)
- }
- l.execProcesses = make(map[execID]*kernel.ThreadGroup)
+ l.mu.Lock()
+ l.containerRootTGs[l.sandboxID] = l.k.GlobalInit()
+ l.mu.Unlock()
// Start signal forwarding only after an init process is created.
l.stopSignalForwarding = l.startSignalForwarding()
diff --git a/runsc/boot/loader_test.go b/runsc/boot/loader_test.go
index a8a796445..0b363253d 100644
--- a/runsc/boot/loader_test.go
+++ b/runsc/boot/loader_test.go
@@ -101,7 +101,7 @@ func createLoader() (*Loader, func(), error) {
return nil, nil, err
}
- l, err := New(spec, conf, fd, -1 /* device fd */, []int{sandEnd}, false)
+ l, err := New("foo", spec, conf, fd, -1 /* device fd */, []int{sandEnd}, false)
if err != nil {
cleanup()
return nil, nil, err
@@ -129,7 +129,6 @@ func TestRun(t *testing.T) {
}()
// Run the container.
- l.setRootContainerID("foo")
if err := l.Run(); err != nil {
t.Errorf("error running container: %v", err)
}