From 2b6761fd3e7ee00056e43de6e6092d5e3401c1fc Mon Sep 17 00:00:00 2001 From: Cory Snider Date: Thu, 4 May 2023 11:58:55 -0400 Subject: [PATCH] d/graphdriver/copy: support src fs w/o xattr support Treat copying extended attributes from a source filesystem which does not support extended attributes as a no-op, same as if the file did not possess the extended attribute. Only fail copying extended attributes if the source file has the attribute and the destination filesystem does not support xattrs. Signed-off-by: Cory Snider --- daemon/graphdriver/copy/copy.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/daemon/graphdriver/copy/copy.go b/daemon/graphdriver/copy/copy.go index 0fb8a1a9d955e98548d665f4b42a88cf66598266..8136b7a1726860cdb36388bed4ca9f31c1fbafbe 100644 --- a/daemon/graphdriver/copy/copy.go +++ b/daemon/graphdriver/copy/copy.go @@ -5,6 +5,7 @@ package copy // import "github.com/docker/docker/daemon/graphdriver/copy" import ( "container/list" + "errors" "fmt" "io" "os" @@ -90,6 +91,11 @@ func legacyCopy(srcFile io.Reader, dstFile io.Writer) error { func copyXattr(srcPath, dstPath, attr string) error { data, err := system.Lgetxattr(srcPath, attr) if err != nil { + if errors.Is(err, syscall.EOPNOTSUPP) { + // Task failed successfully: there is no xattr to copy + // if the source filesystem doesn't support xattrs. + return nil + } return err } if data != nil {