blob: 89eb40f3389a3b6758b6c4de04b93a42ac07835f [file] [log] [blame]
From bf861ce45721791336b617a44844613bb74c677a Mon Sep 17 00:00:00 2001
From: Lorenz Brun <lorenz@monogon.tech>
Date: Tue, 22 Mar 2022 00:52:48 +0100
Subject: [PATCH] containerd 1.6 compatibility
---
pkg/shim/proc/exec.go | 2 +-
pkg/shim/proc/init.go | 2 +-
pkg/shim/service.go | 17 +++++++++--------
pkg/shim/service_linux.go | 2 +-
4 files changed, 12 insertions(+), 11 deletions(-)
diff --git a/pkg/shim/proc/exec.go b/pkg/shim/proc/exec.go
index da2e21598..d0d14dd24 100644
--- a/pkg/shim/proc/exec.go
+++ b/pkg/shim/proc/exec.go
@@ -238,7 +238,7 @@ func (e *execProcess) start(ctx context.Context) error {
if err != nil {
return fmt.Errorf("failed to retrieve console master: %w", err)
}
- if e.console, err = e.parent.Platform.CopyConsole(ctx, console, e.stdio.Stdin, e.stdio.Stdout, e.stdio.Stderr, &e.wg); err != nil {
+ if e.console, err = e.parent.Platform.CopyConsole(ctx, console, e.id, e.stdio.Stdin, e.stdio.Stdout, e.stdio.Stderr, &e.wg); err != nil {
return fmt.Errorf("failed to start console copy: %w", err)
}
} else if !e.stdio.IsNull() {
diff --git a/pkg/shim/proc/init.go b/pkg/shim/proc/init.go
index 6bf090813..76df1101a 100644
--- a/pkg/shim/proc/init.go
+++ b/pkg/shim/proc/init.go
@@ -152,7 +152,7 @@ func (p *Init) Create(ctx context.Context, r *CreateConfig) (err error) {
if err != nil {
return fmt.Errorf("failed to retrieve console master: %w", err)
}
- console, err = p.Platform.CopyConsole(ctx, console, r.Stdin, r.Stdout, r.Stderr, &p.wg)
+ console, err = p.Platform.CopyConsole(ctx, console, r.ID, r.Stdin, r.Stdout, r.Stderr, &p.wg)
if err != nil {
return fmt.Errorf("failed to start console copy: %w", err)
}
diff --git a/pkg/shim/service.go b/pkg/shim/service.go
index 68966afdf..772168052 100644
--- a/pkg/shim/service.go
+++ b/pkg/shim/service.go
@@ -50,7 +50,7 @@ import (
"github.com/sirupsen/logrus"
"golang.org/x/sys/unix"
"gvisor.dev/gvisor/pkg/cleanup"
- "gvisor.dev/gvisor/pkg/shim/runtimeoptions/v14"
+ v14 "gvisor.dev/gvisor/pkg/shim/runtimeoptions/v14"
"gvisor.dev/gvisor/pkg/shim/proc"
"gvisor.dev/gvisor/pkg/shim/runsc"
@@ -189,7 +189,7 @@ type service struct {
shimAddress string
}
-func (s *service) newCommand(ctx context.Context, containerdBinary, containerdAddress string) (*exec.Cmd, error) {
+func (s *service) newCommand(ctx context.Context, id, containerdBinary, containerdAddress string) (*exec.Cmd, error) {
ns, err := namespaces.NamespaceRequired(ctx)
if err != nil {
return nil, err
@@ -204,6 +204,7 @@ func (s *service) newCommand(ctx context.Context, containerdBinary, containerdAd
}
args := []string{
"-namespace", ns,
+ "-id", id,
"-address", containerdAddress,
"-publish-binary", containerdBinary,
}
@@ -219,14 +220,14 @@ func (s *service) newCommand(ctx context.Context, containerdBinary, containerdAd
return cmd, nil
}
-func (s *service) StartShim(ctx context.Context, id, containerdBinary, containerdAddress, containerdTTRPCAddress string) (string, error) {
- log.L.Debugf("StartShim, id: %s, binary: %q, address: %q", id, containerdBinary, containerdAddress)
+func (s *service) StartShim(ctx context.Context, opts shim.StartOpts) (string, error) {
+ log.L.Debugf("StartShim, id: %s, binary: %q, address: %q", opts.ID, opts.ContainerdBinary, opts.Address)
- cmd, err := s.newCommand(ctx, containerdBinary, containerdAddress)
+ cmd, err := s.newCommand(ctx, opts.ID, opts.ContainerdBinary, opts.Address)
if err != nil {
return "", err
}
- address, err := shim.SocketAddress(ctx, containerdAddress, id)
+ address, err := shim.SocketAddress(ctx, opts.Address, opts.ID)
if err != nil {
return "", err
}
@@ -280,8 +281,8 @@ func (s *service) StartShim(ctx context.Context, id, containerdBinary, container
if err := shim.WriteAddress(shimAddressPath, address); err != nil {
return "", err
}
- if err := shim.SetScore(cmd.Process.Pid); err != nil {
- return "", fmt.Errorf("failed to set OOM Score on shim: %w", err)
+ if err := shim.AdjustOOMScore(cmd.Process.Pid); err != nil {
+ return "", fmt.Errorf("failed to adjust OOM score for shim: %w", err)
}
cu.Release()
return address, nil
diff --git a/pkg/shim/service_linux.go b/pkg/shim/service_linux.go
index fb2f8b062..52c82ca90 100644
--- a/pkg/shim/service_linux.go
+++ b/pkg/shim/service_linux.go
@@ -33,7 +33,7 @@ type linuxPlatform struct {
epoller *console.Epoller
}
-func (p *linuxPlatform) CopyConsole(ctx context.Context, console console.Console, stdin, stdout, stderr string, wg *sync.WaitGroup) (console.Console, error) {
+func (p *linuxPlatform) CopyConsole(ctx context.Context, console console.Console, id, stdin, stdout, stderr string, wg *sync.WaitGroup) (console.Console, error) {
if p.epoller == nil {
return nil, fmt.Errorf("uninitialized epoller")
}
--
2.25.1