diff --git a/cmd/containerd/builtins_devmapper_linux.go b/cmd/containerd/builtins_devmapper_linux.go index aada976b3..2d22d8ca9 100644 --- a/cmd/containerd/builtins_devmapper_linux.go +++ b/cmd/containerd/builtins_devmapper_linux.go @@ -18,4 +18,4 @@ package main -import _ "github.com/containerd/containerd/snapshots/devmapper" +import _ "github.com/containerd/containerd/snapshots/devmapper/plugin" diff --git a/snapshots/devmapper/plugin/plugin.go b/snapshots/devmapper/plugin/plugin.go new file mode 100644 index 000000000..ea8d3059f --- /dev/null +++ b/snapshots/devmapper/plugin/plugin.go @@ -0,0 +1,52 @@ +// +build linux + +/* + 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 plugin + +import ( + "github.com/containerd/containerd/platforms" + "github.com/containerd/containerd/plugin" + "github.com/containerd/containerd/snapshots/devmapper" + "github.com/pkg/errors" +) + +func init() { + plugin.Register(&plugin.Registration{ + Type: plugin.SnapshotPlugin, + ID: "devmapper", + Config: &devmapper.Config{}, + InitFn: func(ic *plugin.InitContext) (interface{}, error) { + ic.Meta.Platforms = append(ic.Meta.Platforms, platforms.DefaultSpec()) + + config, ok := ic.Config.(*devmapper.Config) + if !ok { + return nil, errors.New("invalid devmapper configuration") + } + + if config.PoolName == "" { + return nil, errors.New("devmapper not configured") + } + + if config.RootPath == "" { + config.RootPath = ic.Root + } + + return devmapper.NewSnapshotter(ic.Context, config) + }, + }) +} diff --git a/snapshots/devmapper/snapshotter.go b/snapshots/devmapper/snapshotter.go index 535bc406c..afa49b5cf 100644 --- a/snapshots/devmapper/snapshotter.go +++ b/snapshots/devmapper/snapshotter.go @@ -30,8 +30,6 @@ import ( "github.com/containerd/containerd/errdefs" "github.com/containerd/containerd/log" "github.com/containerd/containerd/mount" - "github.com/containerd/containerd/platforms" - "github.com/containerd/containerd/plugin" "github.com/containerd/containerd/snapshots" "github.com/containerd/containerd/snapshots/devmapper/dmsetup" "github.com/containerd/containerd/snapshots/storage" @@ -40,32 +38,6 @@ import ( "github.com/sirupsen/logrus" ) -func init() { - plugin.Register(&plugin.Registration{ - Type: plugin.SnapshotPlugin, - ID: "devmapper", - Config: &Config{}, - InitFn: func(ic *plugin.InitContext) (interface{}, error) { - ic.Meta.Platforms = append(ic.Meta.Platforms, platforms.DefaultSpec()) - - config, ok := ic.Config.(*Config) - if !ok { - return nil, errors.New("invalid devmapper configuration") - } - - if config.PoolName == "" { - return nil, errors.New("devmapper not configured") - } - - if config.RootPath == "" { - config.RootPath = ic.Root - } - - return NewSnapshotter(ic.Context, config) - }, - }) -} - const ( metadataFileName = "metadata.db" fsTypeExt4 = "ext4"