Browse Source

Rather than remove the swarm directory and re-create, remove the swarm subdirs

Signed-off-by: Ying Li <ying.li@docker.com>
Ying Li 8 years ago
parent
commit
68506bd239
1 changed files with 10 additions and 3 deletions
  1. 10 3
      daemon/cluster/utils.go

+ 10 - 3
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
 }