diff --git a/CHANGELOG.md b/CHANGELOG.md index a95bbdd478b..4b6f9d1825b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ Changelog for NeoFS Node ## [Unreleased] ### Fixed +- Inability to start node with peapods configured (#2576) ### Removed diff --git a/cmd/neofs-node/config.go b/cmd/neofs-node/config.go index 219398cdb2d..077245332ac 100644 --- a/cmd/neofs-node/config.go +++ b/cmd/neofs-node/config.go @@ -4,9 +4,11 @@ import ( "context" "errors" "fmt" + "io/fs" "net" "os" "os/signal" + "path/filepath" "sync" atomicstd "sync/atomic" "syscall" @@ -932,12 +934,20 @@ func writeSystemAttributes(c *cfg) error { for _, sh := range c.applicationConfiguration.EngineCfg.shards { for _, subStorage := range sh.SubStorages { path := subStorage.Path - paths = append(paths, path) - err := util.MkdirAllX(path, subStorage.Perm) - if err != nil { - return fmt.Errorf("can not create (ensure it exists) dir by '%s' path: %w", path, err) + for len(path) > 1 { // Dir returns / or . if nothing else left. + fi, err := os.Stat(path) + if err == nil && fi.IsDir() { + break + } + if err != nil && !errors.Is(err, fs.ErrNotExist) { + return fmt.Errorf("accessing %q: %w", path, err) + } + path = filepath.Dir(path) } + + paths = append(paths, path) + } }