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