From 4d6216cef9d6f72bc4cf6e474b540f98c3093199 Mon Sep 17 00:00:00 2001 From: Josh Hawn Date: Mon, 20 Oct 2014 11:42:13 -0700 Subject: [PATCH] AUFS Diff/ApplyDiff excludes /.wh..wh.* files Also includes Checksum field in `docker inspect` output for images. Correcly close layerData decompress/reader wrapper when storing images. Remove imgJSON from call to graph.Register when pulling an image. Docker-DCO-1.1-Signed-off-by: Josh Hawn (github: jlhawn) --- daemon/graphdriver/aufs/aufs.go | 5 ++++- graph/pull.go | 2 +- graph/service.go | 1 + image/image.go | 3 ++- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/daemon/graphdriver/aufs/aufs.go b/daemon/graphdriver/aufs/aufs.go index 8ba097d45a507..3d72a8f012c20 100644 --- a/daemon/graphdriver/aufs/aufs.go +++ b/daemon/graphdriver/aufs/aufs.go @@ -300,11 +300,14 @@ func (a *Driver) Diff(id, parent string) (archive.Archive, error) { // AUFS doesn't need the parent layer to produce a diff. return archive.TarWithOptions(path.Join(a.rootPath(), "diff", id), &archive.TarOptions{ Compression: archive.Uncompressed, + Excludes: []string{".wh..wh.*"}, }) } func (a *Driver) applyDiff(id string, diff archive.ArchiveReader) error { - return archive.Untar(diff, path.Join(a.rootPath(), "diff", id), nil) + return archive.Untar(diff, path.Join(a.rootPath(), "diff", id), &archive.TarOptions{ + Excludes: []string{".wh..wh."}, + }) } // DiffSize calculates the changes between the specified id diff --git a/graph/pull.go b/graph/pull.go index 00b840b2e7ba4..cd9168e76976b 100644 --- a/graph/pull.go +++ b/graph/pull.go @@ -576,7 +576,7 @@ func (s *TagStore) pullV2Tag(eng *engine.Engine, r *registry.Session, out io.Wri defer d.tmpFile.Close() d.tmpFile.Seek(0, 0) if d.tmpFile != nil { - err = s.graph.Register(d.img, d.imgJSON, + err = s.graph.Register(d.img, utils.ProgressReader(d.tmpFile, int(d.length), out, sf, false, utils.TruncateID(d.img.ID), "Extracting")) if err != nil { return false, err diff --git a/graph/service.go b/graph/service.go index f8c548ae3cebe..04c5e8d455562 100644 --- a/graph/service.go +++ b/graph/service.go @@ -101,6 +101,7 @@ func (s *TagStore) CmdLookup(job *engine.Job) engine.Status { out.Set("Os", image.OS) out.SetInt64("Size", image.Size) out.SetInt64("VirtualSize", image.GetParentsSize(0)+image.Size) + out.Set("Checksum", image.Checksum) if _, err = out.WriteTo(job.Stdout); err != nil { return job.Error(err) } diff --git a/image/image.go b/image/image.go index 0312012c0a675..24c25f3cf13e3 100644 --- a/image/image.go +++ b/image/image.go @@ -87,9 +87,10 @@ func StoreImage(img *Image, layerData archive.ArchiveReader, root string) error if err != nil { return err } + defer layerData.Close() // Wrap with tarsum. - tarsumLayerData, err := tarsum.NewTarSum(layerData, true, tarsum.Version0) + tarsumLayerData, err := tarsum.NewTarSum(layerData, true, tarsum.VersionDev) if err != nil { return err }