From 33121d3d4526d7e5315cc1dd20e194bdf699486f Mon Sep 17 00:00:00 2001 From: Nicolas De Loof Date: Wed, 22 Jun 2022 09:05:21 +0200 Subject: [PATCH] introduce Containerd-snapshotter feature flag Signed-off-by: Nicolas De Loof --- daemon/daemon.go | 10 ++++++++++ daemon/oci_linux.go | 10 ++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/daemon/daemon.go b/daemon/daemon.go index bb09038b63..f9c91d89ce 100644 --- a/daemon/daemon.go +++ b/daemon/daemon.go @@ -146,6 +146,16 @@ func (daemon *Daemon) Features() *map[string]bool { return &daemon.configStore.Features } +// usesSnapshotter returns true if feature flag to use containerd snapshotter is enabled +func (daemon *Daemon) usesSnapshotter() bool { + if daemon.configStore.Features != nil { + if b, ok := daemon.configStore.Features["containerd-snapshotter"]; ok { + return b + } + } + return false +} + // RegistryHosts returns registry configuration in containerd resolvers format func (daemon *Daemon) RegistryHosts() docker.RegistryHosts { var ( diff --git a/daemon/oci_linux.go b/daemon/oci_linux.go index 8deeed2b86..07caa78bc3 100644 --- a/daemon/oci_linux.go +++ b/daemon/oci_linux.go @@ -720,16 +720,18 @@ func sysctlExists(s string) bool { // WithCommonOptions sets common docker options func WithCommonOptions(daemon *Daemon, c *container.Container) coci.SpecOpts { return func(ctx context.Context, _ coci.Client, _ *containers.Container, s *coci.Spec) error { - if c.BaseFS == nil { + if c.BaseFS == nil && !daemon.usesSnapshotter() { return errors.New("populateCommonSpec: BaseFS of container " + c.ID + " is unexpectedly nil") } linkedEnv, err := daemon.setupLinkedContainers(c) if err != nil { return err } - s.Root = &specs.Root{ - Path: c.BaseFS.Path(), - Readonly: c.HostConfig.ReadonlyRootfs, + if !daemon.usesSnapshotter() { + s.Root = &specs.Root{ + Path: c.BaseFS.Path(), + Readonly: c.HostConfig.ReadonlyRootfs, + } } if err := c.SetupWorkingDirectory(daemon.idMapping.RootPair()); err != nil { return err