From 2b8ba501aaaf4bb7782424b3e83a1ee200933410 Mon Sep 17 00:00:00 2001 From: Ying Li Date: Wed, 22 Feb 2017 13:26:41 -0800 Subject: [PATCH] Rather than remove the swarm directory and re-create, remove the swarm subdirs Signed-off-by: Ying Li Upstream-commit: 68506bd23998cb229e05f70e3e923f64c43b2526 Component: engine --- components/engine/daemon/cluster/utils.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/components/engine/daemon/cluster/utils.go b/components/engine/daemon/cluster/utils.go index e20d19f518..93827961e1 100644 --- a/components/engine/daemon/cluster/utils.go +++ b/components/engine/daemon/cluster/utils.go @@ -38,12 +38,19 @@ func savePersistentState(root string, config nodeStartConfig) error { func clearPersistentState(root string) error { // todo: backup this data instead of removing? - if err := os.RemoveAll(root); err != nil { + // rather than delete the entire swarm directory, delete the contents in order to preserve the inode + // (for example, allowing it to be bind-mounted) + files, err := ioutil.ReadDir(root) + if err != nil { return err } - if err := os.MkdirAll(root, 0700); err != nil { - return err + + for _, f := range files { + if err := os.RemoveAll(filepath.Join(root, f.Name())); err != nil { + return err + } } + return nil }