1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

daemon: graphdriver: some minor cleanup

- use pkg/errors for errors and fix error-capitalisation
- remove one redundant call to logDeprecatedWarning() (we're already skipping
  deprecated drivers in that loop).
- rename `list` to `priorityList` for readability.
- remove redundant "skip" for the vfs storage driver, as it's already
  excluded by `scanPriorDrivers()`
- change one debug log to an "info", so that the daemon logs contain the driver
  that was configured, and include "multiple prior states found" error in the
  daemon logs, to assist in debugging failed daemon starts.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
Sebastiaan van Stijn 2022-03-14 16:42:05 +01:00
parent 0a3336fd7d
commit 020fd68326
No known key found for this signature in database
GPG key ID: 76698F39D527CE8C

View file

@ -1,19 +1,18 @@
package graphdriver // import "github.com/docker/docker/daemon/graphdriver"
import (
"fmt"
"io"
"os"
"path/filepath"
"strings"
"github.com/sirupsen/logrus"
"github.com/vbatts/tar-split/tar/storage"
"github.com/docker/docker/pkg/archive"
"github.com/docker/docker/pkg/containerfs"
"github.com/docker/docker/pkg/idtools"
"github.com/docker/docker/pkg/plugingetter"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
"github.com/vbatts/tar-split/tar/storage"
)
// FsMagic unsigned id of the filesystem in use.
@ -152,7 +151,7 @@ func init() {
// Register registers an InitFunc for the driver.
func Register(name string, initFunc InitFunc) error {
if _, exists := drivers[name]; exists {
return fmt.Errorf("Name already registered %s", name)
return errors.Errorf("name already registered %s", name)
}
drivers[name] = initFunc
@ -193,20 +192,16 @@ type Options struct {
// New creates the driver and initializes it at the specified root.
func New(name string, pg plugingetter.PluginGetter, config Options) (Driver, error) {
if name != "" {
logrus.Debugf("[graphdriver] trying provided driver: %s", name) // so the logs show specified driver
logrus.Infof("[graphdriver] trying configured driver: %s", name)
logDeprecatedWarning(name)
return GetDriver(name, pg, config)
}
// Guess for prior driver
driversMap := scanPriorDrivers(config.Root)
list := strings.Split(priority, ",")
logrus.Debugf("[graphdriver] priority list: %v", list)
for _, name := range list {
if name == "vfs" {
// don't use vfs even if there is state present.
continue
}
priorityList := strings.Split(priority, ",")
logrus.Debugf("[graphdriver] priority list: %v", priorityList)
for _, name := range priorityList {
if _, prior := driversMap[name]; prior {
// of the state found from prior drivers, check in order of our priority
// which we would prefer
@ -222,13 +217,15 @@ func New(name string, pg plugingetter.PluginGetter, config Options) (Driver, err
// abort starting when there are other prior configured drivers
// to ensure the user explicitly selects the driver to load
if len(driversMap)-1 > 0 {
if len(driversMap) > 1 {
var driversSlice []string
for name := range driversMap {
driversSlice = append(driversSlice, name)
}
return nil, fmt.Errorf("%s contains several valid graphdrivers: %s; Please cleanup or explicitly choose storage driver (-s <DRIVER>)", config.Root, strings.Join(driversSlice, ", "))
err = errors.Errorf("%s contains several valid graphdrivers: %s; cleanup or explicitly choose storage driver (-s <DRIVER>)", config.Root, strings.Join(driversSlice, ", "))
logrus.Errorf("[graphdriver] %v", err)
return nil, err
}
logrus.Infof("[graphdriver] using prior storage driver: %s", name)
@ -237,8 +234,9 @@ func New(name string, pg plugingetter.PluginGetter, config Options) (Driver, err
}
}
// Check for priority drivers first
for _, name := range list {
// If no prior state was found, continue with automatic selection, and pick
// the first supported storage driver (in order of priorityList).
for _, name := range priorityList {
driver, err := getBuiltinDriver(name, config.Root, config.DriverOptions, config.IDMap)
if err != nil {
if IsDriverNotSupported(err) {
@ -264,13 +262,14 @@ func New(name string, pg plugingetter.PluginGetter, config Options) (Driver, err
}
return nil, err
}
logDeprecatedWarning(name)
return driver, nil
}
return nil, fmt.Errorf("No supported storage backend found")
return nil, errors.Errorf("no supported storage driver found")
}
// scanPriorDrivers returns an un-ordered scan of directories of prior storage drivers
// scanPriorDrivers returns an un-ordered scan of directories of prior storage
// drivers. The 'vfs' storage driver is not taken into account, and ignored.
func scanPriorDrivers(root string) map[string]bool {
driversMap := make(map[string]bool)