From b013c1541d3b58f736bc79269aa88d3bfacda6ea Mon Sep 17 00:00:00 2001 From: Chanhun Jeong Date: Thu, 14 Dec 2017 17:52:37 +0900 Subject: [PATCH] skip container ID remapping, if the file is overlayfs whiteout. Signed-off-by: Chanhun Jeong --- pkg/archive/archive.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pkg/archive/archive.go b/pkg/archive/archive.go index aa55637565..a0c25937c8 100644 --- a/pkg/archive/archive.go +++ b/pkg/archive/archive.go @@ -456,10 +456,16 @@ func (ta *tarAppender) addTarFile(path, name string) error { } } + //check whether the file is overlayfs whiteout + //if yes, skip re-mapping container ID mappings. + isOverlayWhiteout := fi.Mode()&os.ModeCharDevice != 0 && hdr.Devmajor == 0 && hdr.Devminor == 0 + //handle re-mapping container ID mappings back to host ID mappings before //writing tar headers/files. We skip whiteout files because they were written //by the kernel and already have proper ownership relative to the host - if !strings.HasPrefix(filepath.Base(hdr.Name), WhiteoutPrefix) && !ta.IDMappings.Empty() { + if !isOverlayWhiteout && + !strings.HasPrefix(filepath.Base(hdr.Name), WhiteoutPrefix) && + !ta.IDMappings.Empty() { fileIDPair, err := getFileUIDGID(fi.Sys()) if err != nil { return err