From 4f3e74c0caf630d19954002b7260dd956a5e83c2 Mon Sep 17 00:00:00 2001 From: Kohei Tokunaga Date: Fri, 17 Sep 2021 00:22:52 +0900 Subject: [PATCH] Differ: write diff to the content store over bufio writer Signed-off-by: Kohei Tokunaga --- cache/blobs_linux.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/cache/blobs_linux.go b/cache/blobs_linux.go index 614895f23..b614918b4 100644 --- a/cache/blobs_linux.go +++ b/cache/blobs_linux.go @@ -4,6 +4,7 @@ package cache import ( + "bufio" "bytes" "context" "fmt" @@ -71,10 +72,11 @@ func (sr *immutableRef) tryComputeOverlayBlob(ctx context.Context, lower, upper } }() + bufW := bufio.NewWriterSize(cw, 128*1024) var labels map[string]string if compressorFunc != nil { dgstr := digest.SHA256.Digester() - compressed, err := compressorFunc(cw, mediaType) + compressed, err := compressorFunc(bufW, mediaType) if err != nil { return emptyDesc, false, errors.Wrap(err, "failed to get compressed stream") } @@ -88,11 +90,14 @@ func (sr *immutableRef) tryComputeOverlayBlob(ctx context.Context, lower, upper } labels[containerdUncompressed] = dgstr.Digest().String() } else { - if err = writeOverlayUpperdir(ctx, cw, upperdir, lower); err != nil { + if err = writeOverlayUpperdir(ctx, bufW, upperdir, lower); err != nil { return emptyDesc, false, errors.Wrap(err, "failed to write diff") } } + if err := bufW.Flush(); err != nil { + return emptyDesc, false, errors.Wrap(err, "failed to flush diff") + } var commitopts []content.Opt if labels != nil { commitopts = append(commitopts, content.WithLabels(labels))