From 02fdc194fc726ef2ce1fa4303e121abd277f8d32 Mon Sep 17 00:00:00 2001 From: Michael Crosby Date: Mon, 3 Feb 2014 15:56:58 -0800 Subject: [PATCH] Fix unmounts out of container export funcs Docker-DCO-1.1-Signed-off-by: Michael Crosby (github: crosbymichael) --- container.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/container.go b/container.go index 1e44ddd76c..a283b8d0bc 100644 --- a/container.go +++ b/container.go @@ -1416,9 +1416,12 @@ func (container *Container) ExportRw() (archive.Archive, error) { if container.runtime == nil { return nil, fmt.Errorf("Can't load storage driver for unregistered container %s", container.ID) } - defer container.Unmount() - - return container.runtime.Diff(container) + archive, err := container.runtime.Diff(container) + if err != nil { + container.Unmount() + return nil, err + } + return EofReader(archive, func() { container.Unmount() }), nil } func (container *Container) Export() (archive.Archive, error) { @@ -1428,6 +1431,7 @@ func (container *Container) Export() (archive.Archive, error) { archive, err := archive.Tar(container.basefs, archive.Uncompressed) if err != nil { + container.Unmount() return nil, err } return EofReader(archive, func() { container.Unmount() }), nil