From 009d0f9d81bbd5e130520986ce84e8f097d88a52 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Thu, 19 Sep 2013 14:59:27 +0200 Subject: [PATCH] Image: unmount device before removing it on failures If we don't do this the remove will fail due to EBUSY --- image.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/image.go b/image.go index b3e8de3e55..16abf9eef0 100644 --- a/image.go +++ b/image.go @@ -414,6 +414,7 @@ func (image *Image) ensureImageDevice(devices DeviceSet) error { err = ioutil.WriteFile(path.Join(mountDir, ".docker-id"), []byte(image.ID), 0600) if err != nil { + _ = devices.UnmountDevice(image.ID, mountDir) _ = devices.RemoveDevice(image.ID) return err } @@ -432,11 +433,13 @@ func (image *Image) ensureImageDevice(devices DeviceSet) error { // part of the container changes dockerinitLayer, err := image.getDockerInitLayer() if err != nil { + _ = devices.UnmountDevice(image.ID, mountDir) _ = devices.RemoveDevice(image.ID) return err } err = image.applyLayer(dockerinitLayer, mountDir) if err != nil { + _ = devices.UnmountDevice(image.ID, mountDir) _ = devices.RemoveDevice(image.ID) return err }