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:
parent
0a3336fd7d
commit
020fd68326
1 changed files with 19 additions and 20 deletions
|
@ -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)
|
||||
|
||||
|
|
Loading…
Reference in a new issue