diff --git a/dynamic/dynamic.go b/dynamic/dynamic.go index 30b4423..653b757 100644 --- a/dynamic/dynamic.go +++ b/dynamic/dynamic.go @@ -23,7 +23,7 @@ import "fmt" // Load is currently only implemented on non-static, non-gccgo builds for amd64 // and arm64, and plugins must be built with the exact same version of Go as // containerd itself. -func Load(path string) (err error) { +func Load(path string) (loaded int, err error) { defer func() { if v := recover(); v != nil { rerr, ok := v.(error) diff --git a/dynamic/dynamic_supported.go b/dynamic/dynamic_supported.go index eff7e59..5c77f0a 100644 --- a/dynamic/dynamic_supported.go +++ b/dynamic/dynamic_supported.go @@ -27,10 +27,10 @@ import ( // loadPlugins loads all plugins for the OS and Arch // that containerd is built for inside the provided path -func loadPlugins(path string) error { +func loadPlugins(path string) (int, error) { abs, err := filepath.Abs(path) if err != nil { - return err + return 0, err } pattern := filepath.Join(abs, fmt.Sprintf( "*-%s-%s.%s", @@ -40,14 +40,16 @@ func loadPlugins(path string) error { )) libs, err := filepath.Glob(pattern) if err != nil { - return err + return 0, err } + loaded := 0 for _, lib := range libs { if _, err := plugin.Open(lib); err != nil { - return err + return loaded, err } + loaded++ } - return nil + return loaded, nil } // getLibExt returns a platform specific lib extension for diff --git a/dynamic/dynamic_unsupported.go b/dynamic/dynamic_unsupported.go index ccef3d3..5565694 100644 --- a/dynamic/dynamic_unsupported.go +++ b/dynamic/dynamic_unsupported.go @@ -23,6 +23,6 @@ package dynamic // - with gccgo: gccgo has no plugin support golang/go#36403 // - on static builds; https://github.com/containerd/containerd/commit/0d682e24a1ba8e93e5e54a73d64f7d256f87492f // - on architectures other than amd64 and arm64 (other architectures need to be tested) -func loadPlugins(path string) error { - return nil +func loadPlugins(path string) (int, error) { + return 0, nil }