diff --git a/repo/config/config.go b/repo/config/config.go index 8c834b415..d8f5720e5 100644 --- a/repo/config/config.go +++ b/repo/config/config.go @@ -18,6 +18,7 @@ var log = logging.Logger("config") // Config is used to load IPFS config files. type Config struct { Identity Identity // local node's peer identity + Datastore Datastore // local node's storage Addresses Addresses // local node's addresses Mounts Mounts // local node's mount points Version Version // local node's version management @@ -29,8 +30,6 @@ type Config struct { SupernodeRouting SupernodeClientConfig // local node's routing servers (if SupernodeRouting enabled) API API // local node's API settings Swarm SwarmConfig - - Datastore Datastore } const ( diff --git a/repo/fsrepo/fsrepo.go b/repo/fsrepo/fsrepo.go index d5153837b..ef7059822 100644 --- a/repo/fsrepo/fsrepo.go +++ b/repo/fsrepo/fsrepo.go @@ -324,11 +324,17 @@ func (r *FSRepo) openConfig() error { // openDatastore returns an error if the config file is not present. func (r *FSRepo) openDatastore() error { - d, err := openDefaultDatastore(r) - if err != nil { - return err + switch r.config.Datastore.Type { + case "default", "leveldb", "": + d, err := openDefaultDatastore(r) + if err != nil { + return err + } + r.ds = d + default: + return fmt.Errorf("unknown datastore type: %s", r.config.Datastore.Type) } - r.ds = d + return nil }