The following pull request was submitted through Github. It can be accessed and reviewed at: https://github.com/lxc/lxd/pull/2515
This e-mail was sent by the LXC bot, direct replies will not reach the author unless they happen to be subscribed to this list. === Description (from pull-request) === Closes #2508 Signed-off-by: Stéphane Graber <stgra...@ubuntu.com>
From 36755bdbfae33e0a568e9d10e9b70169565c861c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgra...@ubuntu.com> Date: Mon, 17 Oct 2016 16:47:32 -0400 Subject: [PATCH] Don't make unnecessary image copies MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #2508 Signed-off-by: Stéphane Graber <stgra...@ubuntu.com> --- lxd/images.go | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/lxd/images.go b/lxd/images.go index afaa514..daae70b 100644 --- a/lxd/images.go +++ b/lxd/images.go @@ -468,14 +468,14 @@ func getImgPostInfo(d *Daemon, r *http.Request, sha256 := sha256.New() var size int64 - // Create a temporary file for the image tarball - imageTarf, err := ioutil.TempFile(builddir, "lxd_tar_") - if err != nil { - return info, err - } - defer os.Remove(imageTarf.Name()) - if ctype == "multipart/form-data" { + // Create a temporary file for the image tarball + imageTarf, err := ioutil.TempFile(builddir, "lxd_tar_") + if err != nil { + return info, err + } + defer os.Remove(imageTarf.Name()) + // Parse the POST data post.Seek(0, 0) mr := multipart.NewReader(post, ctypeParams["boundary"]) @@ -577,9 +577,8 @@ func getImgPostInfo(d *Daemon, r *http.Request, } } else { post.Seek(0, 0) - size, err = io.Copy(io.MultiWriter(imageTarf, sha256), post) + size, err = io.Copy(sha256, post) info.Size = size - imageTarf.Close() logger.Debug("Tar size", log.Ctx{"size": size}) if err != nil { logger.Error( @@ -605,7 +604,7 @@ func getImgPostInfo(d *Daemon, r *http.Request, return info, err } - imageMeta, err = getImageMetadata(imageTarf.Name()) + imageMeta, err = getImageMetadata(post.Name()) if err != nil { logger.Error( "Failed to get image metadata", @@ -614,13 +613,13 @@ func getImgPostInfo(d *Daemon, r *http.Request, } imgfname := shared.VarPath("images", info.Fingerprint) - err = shared.FileMove(imageTarf.Name(), imgfname) + err = shared.FileMove(post.Name(), imgfname) if err != nil { logger.Error( "Failed to move the tarfile", log.Ctx{ "err": err, - "source": imageTarf.Name(), + "source": post.Name(), "dest": imgfname}) return info, err }
_______________________________________________ lxc-devel mailing list lxc-devel@lists.linuxcontainers.org http://lists.linuxcontainers.org/listinfo/lxc-devel