| From 2aaae27bbcdae1c917441932fb79b6f6b6e0ebcd Mon Sep 17 00:00:00 2001 |
| From: Tim Windelschmidt <tim@monogon.tech> |
| Date: Tue, 12 Sep 2023 14:33:58 +0200 |
| 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 fcdc8e2bc..f2aaf6c2a 100644 |
| --- a/pkg/shim/proc/init.go |
| +++ b/pkg/shim/proc/init.go |
| @@ -155,7 +155,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 a6904e1ae..964a152c9 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 { |
| |
| var _ shim.Shim = (*service)(nil) |
| |
| -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.41.0 |
| |