Jelajahi Sumber

if the Rename during an image delete fails, just delete the original dir

Signed-off-by: Doug Davis <dug@us.ibm.com>
Doug Davis 10 tahun lalu
induk
melakukan
86a3a9a282
1 mengubah file dengan 10 tambahan dan 6 penghapusan
  1. 10 6
      graph/graph.go

+ 10 - 6
graph/graph.go

@@ -302,13 +302,17 @@ func (graph *Graph) Delete(name string) error {
 		return err
 	}
 	tmp, err := graph.Mktemp("")
-	if err != nil {
-		return err
-	}
 	graph.idIndex.Delete(id)
-	err = os.Rename(graph.ImageRoot(id), tmp)
-	if err != nil {
-		return err
+	if err == nil {
+		err = os.Rename(graph.ImageRoot(id), tmp)
+		// On err make tmp point to old dir and cleanup unused tmp dir
+		if err != nil {
+			os.RemoveAll(tmp)
+			tmp = graph.ImageRoot(id)
+		}
+	} else {
+		// On err make tmp point to old dir for cleanup
+		tmp = graph.ImageRoot(id)
 	}
 	// Remove rootfs data from the driver
 	graph.driver.Remove(id)