Browse Source

vendor: github.com/containerd/continuity v0.2.2

full diff: https://github.com/containerd/continuity/compare/v0.1.0...v0.2.2

- fs/stat: add FreeBSD, and cleanup some nolint-comments
- go.mod: bazil.org/fuse v0.0.0-20200407214033-5883e5a4b5125
- Fix darwin issues
- Remove direct dependency on github.com/pkg/errors
- Do not log errors before returning them
- Build containerd/continuity on multiple Unix OSes
- Update CI Go version to 1.17
- fs: use syscall.Timespec.Unix

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Sebastiaan van Stijn 3 years ago
parent
commit
812dacb676
30 changed files with 212 additions and 90 deletions
  1. 1 1
      vendor.mod
  2. 4 1
      vendor.sum
  3. 5 1
      vendor/github.com/containerd/continuity/AUTHORS
  4. 2 1
      vendor/github.com/containerd/continuity/devices/devices_unix.go
  5. 2 3
      vendor/github.com/containerd/continuity/devices/devices_windows.go
  6. 1 0
      vendor/github.com/containerd/continuity/devices/mknod_freebsd.go
  7. 2 1
      vendor/github.com/containerd/continuity/devices/mknod_unix.go
  8. 2 1
      vendor/github.com/containerd/continuity/driver/driver_unix.go
  9. 1 0
      vendor/github.com/containerd/continuity/driver/driver_windows.go
  10. 2 1
      vendor/github.com/containerd/continuity/driver/lchmod_unix.go
  11. 23 23
      vendor/github.com/containerd/continuity/fs/copy.go
  12. 3 7
      vendor/github.com/containerd/continuity/fs/copy_darwin.go
  13. 36 0
      vendor/github.com/containerd/continuity/fs/copy_device_unix.go
  14. 2 8
      vendor/github.com/containerd/continuity/fs/copy_freebsd.go
  15. 15 11
      vendor/github.com/containerd/continuity/fs/copy_linux.go
  16. 10 9
      vendor/github.com/containerd/continuity/fs/copy_unix.go
  17. 45 4
      vendor/github.com/containerd/continuity/fs/copy_windows.go
  18. 4 3
      vendor/github.com/containerd/continuity/fs/diff_unix.go
  19. 1 0
      vendor/github.com/containerd/continuity/fs/dtype_linux.go
  20. 3 4
      vendor/github.com/containerd/continuity/fs/du_unix.go
  21. 1 0
      vendor/github.com/containerd/continuity/fs/du_windows.go
  22. 2 2
      vendor/github.com/containerd/continuity/fs/hardlink_unix.go
  23. 1 2
      vendor/github.com/containerd/continuity/fs/path.go
  24. 3 3
      vendor/github.com/containerd/continuity/fs/stat_atim.go
  25. 3 2
      vendor/github.com/containerd/continuity/fs/stat_darwinbsd.go
  26. 33 0
      vendor/github.com/containerd/continuity/fs/utimesnanoat.go
  27. 2 1
      vendor/github.com/containerd/continuity/sysx/nodata_unix.go
  28. 1 0
      vendor/github.com/containerd/continuity/sysx/xattr.go
  29. 1 0
      vendor/github.com/containerd/continuity/sysx/xattr_unsupported.go
  30. 1 1
      vendor/modules.txt

+ 1 - 1
vendor.mod

@@ -19,7 +19,7 @@ require (
 	github.com/cloudflare/cfssl v0.0.0-20180323000720-5d63dbd981b5
 	github.com/cloudflare/cfssl v0.0.0-20180323000720-5d63dbd981b5
 	github.com/containerd/cgroups v1.0.3
 	github.com/containerd/cgroups v1.0.3
 	github.com/containerd/containerd v1.5.9
 	github.com/containerd/containerd v1.5.9
-	github.com/containerd/continuity v0.1.0
+	github.com/containerd/continuity v0.2.2
 	github.com/containerd/fifo v1.0.0
 	github.com/containerd/fifo v1.0.0
 	github.com/containerd/typeurl v1.0.2
 	github.com/containerd/typeurl v1.0.2
 	github.com/coreos/go-systemd/v22 v22.3.2
 	github.com/coreos/go-systemd/v22 v22.3.2

+ 4 - 1
vendor.sum

@@ -1,4 +1,5 @@
 bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8=
 bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8=
+bazil.org/fuse v0.0.0-20200407214033-5883e5a4b512/go.mod h1:FbcW6z/2VytnFDhZfumh8Ss8zxHE6qpMP5sHTRe0EaM=
 cloud.google.com/go v0.59.0 h1:BM3svUDU3itpc2m5cu5wCyThIYNDlFlts9GASw31GW8=
 cloud.google.com/go v0.59.0 h1:BM3svUDU3itpc2m5cu5wCyThIYNDlFlts9GASw31GW8=
 cloud.google.com/go v0.59.0/go.mod h1:qJxNOVCRTxHfwLhvDxxSI9vQc1zI59b9pEglp1Iv60E=
 cloud.google.com/go v0.59.0/go.mod h1:qJxNOVCRTxHfwLhvDxxSI9vQc1zI59b9pEglp1Iv60E=
 cloud.google.com/go/bigquery v1.0.0 h1:uzb+IRbJNYyU4lgbpqz7KKVjKO8XcF04rVFk6qbNTbM=
 cloud.google.com/go/bigquery v1.0.0 h1:uzb+IRbJNYyU4lgbpqz7KKVjKO8XcF04rVFk6qbNTbM=
@@ -157,8 +158,9 @@ github.com/containerd/continuity v0.0.0-20191127005431-f65d91d395eb/go.mod h1:GL
 github.com/containerd/continuity v0.0.0-20200710164510-efbc4488d8fe/go.mod h1:cECdGN1O8G9bgKTlLhuPJimka6Xb/Gg7vYzCTNVxhvo=
 github.com/containerd/continuity v0.0.0-20200710164510-efbc4488d8fe/go.mod h1:cECdGN1O8G9bgKTlLhuPJimka6Xb/Gg7vYzCTNVxhvo=
 github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7/go.mod h1:kR3BEg7bDFaEddKm54WSmrol1fKWDU1nKYkgrcgZT7Y=
 github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7/go.mod h1:kR3BEg7bDFaEddKm54WSmrol1fKWDU1nKYkgrcgZT7Y=
 github.com/containerd/continuity v0.0.0-20210208174643-50096c924a4e/go.mod h1:EXlVlkqNba9rJe3j7w3Xa924itAMLgZH4UD/Q4PExuQ=
 github.com/containerd/continuity v0.0.0-20210208174643-50096c924a4e/go.mod h1:EXlVlkqNba9rJe3j7w3Xa924itAMLgZH4UD/Q4PExuQ=
-github.com/containerd/continuity v0.1.0 h1:UFRRY5JemiAhPZrr/uE0n8fMTLcZsUvySPr1+D7pgr8=
 github.com/containerd/continuity v0.1.0/go.mod h1:ICJu0PwR54nI0yPEnJ6jcS+J7CZAUXrLh8lPo2knzsM=
 github.com/containerd/continuity v0.1.0/go.mod h1:ICJu0PwR54nI0yPEnJ6jcS+J7CZAUXrLh8lPo2knzsM=
+github.com/containerd/continuity v0.2.2 h1:QSqfxcn8c+12slxwu00AtzXrsami0MJb/MQs9lOLHLA=
+github.com/containerd/continuity v0.2.2/go.mod h1:pWygW9u7LtS1o4N/Tn0FoCFDIXZ7rxcMX7HX1Dmibvk=
 github.com/containerd/fifo v0.0.0-20180307165137-3d5202aec260/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI=
 github.com/containerd/fifo v0.0.0-20180307165137-3d5202aec260/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI=
 github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI=
 github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI=
 github.com/containerd/fifo v0.0.0-20200410184934-f15a3290365b/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0=
 github.com/containerd/fifo v0.0.0-20200410184934-f15a3290365b/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0=
@@ -699,6 +701,7 @@ github.com/tonistiigi/go-immutable-radix v0.0.0-20170803185627-826af9ccf0fe h1:p
 github.com/tonistiigi/go-immutable-radix v0.0.0-20170803185627-826af9ccf0fe/go.mod h1:/+MCh11CJf2oz0BXmlmqyopK/ad1rKkcOXPoYuPCJYU=
 github.com/tonistiigi/go-immutable-radix v0.0.0-20170803185627-826af9ccf0fe/go.mod h1:/+MCh11CJf2oz0BXmlmqyopK/ad1rKkcOXPoYuPCJYU=
 github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea h1:SXhTLE6pb6eld/v/cCndK0AMpt1wiVFb/YYmqB3/QG0=
 github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea h1:SXhTLE6pb6eld/v/cCndK0AMpt1wiVFb/YYmqB3/QG0=
 github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea/go.mod h1:WPnis/6cRcDZSUvVmezrxJPkiO87ThFYsoUiMwWNDJk=
 github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea/go.mod h1:WPnis/6cRcDZSUvVmezrxJPkiO87ThFYsoUiMwWNDJk=
+github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c/go.mod h1:hzIxponao9Kjc7aWznkXaL4U4TWaDSs8zcsY4Ka08nM=
 github.com/uber/jaeger-client-go v2.25.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk=
 github.com/uber/jaeger-client-go v2.25.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk=
 github.com/uber/jaeger-lib v2.2.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U=
 github.com/uber/jaeger-lib v2.2.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U=
 github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc=
 github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc=

+ 5 - 1
vendor/github.com/containerd/continuity/AUTHORS

@@ -12,8 +12,11 @@ Darren Stahl <darst@microsoft.com>
 Derek McGowan <derek@mcg.dev>
 Derek McGowan <derek@mcg.dev>
 Derek McGowan <derek@mcgstyle.net>
 Derek McGowan <derek@mcgstyle.net>
 Edward Pilatowicz <edward.pilatowicz@oracle.com>
 Edward Pilatowicz <edward.pilatowicz@oracle.com>
+Fu Wei <fuweid89@gmail.com>
+Hajime Tazaki <thehajime@gmail.com>
 Ian Campbell <ijc@docker.com>
 Ian Campbell <ijc@docker.com>
 Ivan Markin <sw@nogoegst.net>
 Ivan Markin <sw@nogoegst.net>
+Jacob Blain Christen <jacob@rancher.com>
 Justin Cormack <justin.cormack@docker.com>
 Justin Cormack <justin.cormack@docker.com>
 Justin Cummins <sul3n3t@gmail.com>
 Justin Cummins <sul3n3t@gmail.com>
 Kasper Fabæch Brandt <poizan@poizan.dk>
 Kasper Fabæch Brandt <poizan@poizan.dk>
@@ -23,10 +26,11 @@ Michael Crosby <michael@thepasture.io>
 Michael Wan <zirenwan@gmail.com>
 Michael Wan <zirenwan@gmail.com>
 Mike Brown <brownwm@us.ibm.com>
 Mike Brown <brownwm@us.ibm.com>
 Niels de Vos <ndevos@redhat.com>
 Niels de Vos <ndevos@redhat.com>
+Phil Estes <estesp@amazon.com>
 Phil Estes <estesp@gmail.com>
 Phil Estes <estesp@gmail.com>
 Phil Estes <estesp@linux.vnet.ibm.com>
 Phil Estes <estesp@linux.vnet.ibm.com>
-Samuel Karp <me@samuelkarp.com>
 Sam Whited <sam@samwhited.com>
 Sam Whited <sam@samwhited.com>
+Samuel Karp <me@samuelkarp.com>
 Sebastiaan van Stijn <github@gone.nl>
 Sebastiaan van Stijn <github@gone.nl>
 Shengjing Zhu <zhsj@debian.org>
 Shengjing Zhu <zhsj@debian.org>
 Stephen J Day <stephen.day@docker.com>
 Stephen J Day <stephen.day@docker.com>

+ 2 - 1
vendor/github.com/containerd/continuity/devices/devices_unix.go

@@ -1,4 +1,5 @@
-// +build linux darwin freebsd solaris
+//go:build !windows
+// +build !windows
 
 
 /*
 /*
    Copyright The containerd Authors.
    Copyright The containerd Authors.

+ 2 - 3
vendor/github.com/containerd/continuity/devices/devices_windows.go

@@ -17,11 +17,10 @@
 package devices
 package devices
 
 
 import (
 import (
+	"fmt"
 	"os"
 	"os"
-
-	"github.com/pkg/errors"
 )
 )
 
 
 func DeviceInfo(fi os.FileInfo) (uint64, uint64, error) {
 func DeviceInfo(fi os.FileInfo) (uint64, uint64, error) {
-	return 0, 0, errors.Wrap(ErrNotSupported, "cannot get device info on windows")
+	return 0, 0, fmt.Errorf("cannot get device info on windows: %w", ErrNotSupported)
 }
 }

+ 1 - 0
vendor/github.com/containerd/continuity/devices/mknod_freebsd.go

@@ -1,3 +1,4 @@
+//go:build freebsd
 // +build freebsd
 // +build freebsd
 
 
 /*
 /*

+ 2 - 1
vendor/github.com/containerd/continuity/devices/mknod_unix.go

@@ -1,4 +1,5 @@
-// +build linux darwin solaris
+//go:build !(freebsd || windows)
+// +build !freebsd,!windows
 
 
 /*
 /*
    Copyright The containerd Authors.
    Copyright The containerd Authors.

+ 2 - 1
vendor/github.com/containerd/continuity/driver/driver_unix.go

@@ -1,4 +1,5 @@
-// +build linux darwin freebsd solaris
+//go:build !windows
+// +build !windows
 
 
 /*
 /*
    Copyright The containerd Authors.
    Copyright The containerd Authors.

+ 1 - 0
vendor/github.com/containerd/continuity/driver/driver_windows.go

@@ -1,3 +1,4 @@
+//go:build go1.13
 // +build go1.13
 // +build go1.13
 
 
 /*
 /*

+ 2 - 1
vendor/github.com/containerd/continuity/driver/lchmod_unix.go

@@ -1,4 +1,5 @@
-// +build darwin freebsd solaris
+//go:build darwin || freebsd || netbsd || openbsd || solaris
+// +build darwin freebsd netbsd openbsd solaris
 
 
 /*
 /*
    Copyright The containerd Authors.
    Copyright The containerd Authors.

+ 23 - 23
vendor/github.com/containerd/continuity/fs/copy.go

@@ -17,12 +17,11 @@
 package fs
 package fs
 
 
 import (
 import (
+	"fmt"
 	"io/ioutil"
 	"io/ioutil"
 	"os"
 	"os"
 	"path/filepath"
 	"path/filepath"
 	"sync"
 	"sync"
-
-	"github.com/pkg/errors"
 )
 )
 
 
 var bufferPool = &sync.Pool{
 var bufferPool = &sync.Pool{
@@ -92,35 +91,35 @@ func CopyDir(dst, src string, opts ...CopyDirOpt) error {
 func copyDirectory(dst, src string, inodes map[uint64]string, o *copyDirOpts) error {
 func copyDirectory(dst, src string, inodes map[uint64]string, o *copyDirOpts) error {
 	stat, err := os.Stat(src)
 	stat, err := os.Stat(src)
 	if err != nil {
 	if err != nil {
-		return errors.Wrapf(err, "failed to stat %s", src)
+		return fmt.Errorf("failed to stat %s: %w", src, err)
 	}
 	}
 	if !stat.IsDir() {
 	if !stat.IsDir() {
-		return errors.Errorf("source %s is not directory", src)
+		return fmt.Errorf("source %s is not directory", src)
 	}
 	}
 
 
 	if st, err := os.Stat(dst); err != nil {
 	if st, err := os.Stat(dst); err != nil {
 		if err := os.Mkdir(dst, stat.Mode()); err != nil {
 		if err := os.Mkdir(dst, stat.Mode()); err != nil {
-			return errors.Wrapf(err, "failed to mkdir %s", dst)
+			return fmt.Errorf("failed to mkdir %s: %w", dst, err)
 		}
 		}
 	} else if !st.IsDir() {
 	} else if !st.IsDir() {
-		return errors.Errorf("cannot copy to non-directory: %s", dst)
+		return fmt.Errorf("cannot copy to non-directory: %s", dst)
 	} else {
 	} else {
 		if err := os.Chmod(dst, stat.Mode()); err != nil {
 		if err := os.Chmod(dst, stat.Mode()); err != nil {
-			return errors.Wrapf(err, "failed to chmod on %s", dst)
+			return fmt.Errorf("failed to chmod on %s: %w", dst, err)
 		}
 		}
 	}
 	}
 
 
 	fis, err := ioutil.ReadDir(src)
 	fis, err := ioutil.ReadDir(src)
 	if err != nil {
 	if err != nil {
-		return errors.Wrapf(err, "failed to read %s", src)
+		return fmt.Errorf("failed to read %s: %w", src, err)
 	}
 	}
 
 
-	if err := copyFileInfo(stat, dst); err != nil {
-		return errors.Wrapf(err, "failed to copy file info for %s", dst)
+	if err := copyFileInfo(stat, src, dst); err != nil {
+		return fmt.Errorf("failed to copy file info for %s: %w", dst, err)
 	}
 	}
 
 
 	if err := copyXAttrs(dst, src, o.xex, o.xeh); err != nil {
 	if err := copyXAttrs(dst, src, o.xex, o.xeh); err != nil {
-		return errors.Wrap(err, "failed to copy xattrs")
+		return fmt.Errorf("failed to copy xattrs: %w", err)
 	}
 	}
 
 
 	for _, fi := range fis {
 	for _, fi := range fis {
@@ -136,37 +135,38 @@ func copyDirectory(dst, src string, inodes map[uint64]string, o *copyDirOpts) er
 		case (fi.Mode() & os.ModeType) == 0:
 		case (fi.Mode() & os.ModeType) == 0:
 			link, err := getLinkSource(target, fi, inodes)
 			link, err := getLinkSource(target, fi, inodes)
 			if err != nil {
 			if err != nil {
-				return errors.Wrap(err, "failed to get hardlink")
+				return fmt.Errorf("failed to get hardlink: %w", err)
 			}
 			}
 			if link != "" {
 			if link != "" {
 				if err := os.Link(link, target); err != nil {
 				if err := os.Link(link, target); err != nil {
-					return errors.Wrap(err, "failed to create hard link")
+					return fmt.Errorf("failed to create hard link: %w", err)
 				}
 				}
 			} else if err := CopyFile(target, source); err != nil {
 			} else if err := CopyFile(target, source); err != nil {
-				return errors.Wrap(err, "failed to copy files")
+				return fmt.Errorf("failed to copy files: %w", err)
 			}
 			}
 		case (fi.Mode() & os.ModeSymlink) == os.ModeSymlink:
 		case (fi.Mode() & os.ModeSymlink) == os.ModeSymlink:
 			link, err := os.Readlink(source)
 			link, err := os.Readlink(source)
 			if err != nil {
 			if err != nil {
-				return errors.Wrapf(err, "failed to read link: %s", source)
+				return fmt.Errorf("failed to read link: %s: %w", source, err)
 			}
 			}
 			if err := os.Symlink(link, target); err != nil {
 			if err := os.Symlink(link, target); err != nil {
-				return errors.Wrapf(err, "failed to create symlink: %s", target)
+				return fmt.Errorf("failed to create symlink: %s: %w", target, err)
 			}
 			}
 		case (fi.Mode() & os.ModeDevice) == os.ModeDevice:
 		case (fi.Mode() & os.ModeDevice) == os.ModeDevice:
 			if err := copyDevice(target, fi); err != nil {
 			if err := copyDevice(target, fi); err != nil {
-				return errors.Wrapf(err, "failed to create device")
+				return fmt.Errorf("failed to create device: %w", err)
 			}
 			}
 		default:
 		default:
 			// TODO: Support pipes and sockets
 			// TODO: Support pipes and sockets
-			return errors.Wrapf(err, "unsupported mode %s", fi.Mode())
+			return fmt.Errorf("unsupported mode %s: %w", fi.Mode(), err)
 		}
 		}
-		if err := copyFileInfo(fi, target); err != nil {
-			return errors.Wrap(err, "failed to copy file info")
+
+		if err := copyFileInfo(fi, source, target); err != nil {
+			return fmt.Errorf("failed to copy file info: %w", err)
 		}
 		}
 
 
 		if err := copyXAttrs(target, source, o.xex, o.xeh); err != nil {
 		if err := copyXAttrs(target, source, o.xex, o.xeh); err != nil {
-			return errors.Wrap(err, "failed to copy xattrs")
+			return fmt.Errorf("failed to copy xattrs: %w", err)
 		}
 		}
 	}
 	}
 
 
@@ -178,12 +178,12 @@ func copyDirectory(dst, src string, inodes map[uint64]string, o *copyDirOpts) er
 func CopyFile(target, source string) error {
 func CopyFile(target, source string) error {
 	src, err := os.Open(source)
 	src, err := os.Open(source)
 	if err != nil {
 	if err != nil {
-		return errors.Wrapf(err, "failed to open source %s", source)
+		return fmt.Errorf("failed to open source %s: %w", source, err)
 	}
 	}
 	defer src.Close()
 	defer src.Close()
 	tgt, err := os.Create(target)
 	tgt, err := os.Create(target)
 	if err != nil {
 	if err != nil {
-		return errors.Wrapf(err, "failed to open target %s", target)
+		return fmt.Errorf("failed to open target %s: %w", target, err)
 	}
 	}
 	defer tgt.Close()
 	defer tgt.Close()
 
 

+ 3 - 7
vendor/github.com/containerd/continuity/fs/copy_darwinopenbsdsolaris.go → vendor/github.com/containerd/continuity/fs/copy_darwin.go

@@ -1,4 +1,5 @@
-// +build darwin openbsd solaris
+//go:build darwin
+// +build darwin
 
 
 /*
 /*
    Copyright The containerd Authors.
    Copyright The containerd Authors.
@@ -19,10 +20,10 @@
 package fs
 package fs
 
 
 import (
 import (
+	"errors"
 	"os"
 	"os"
 	"syscall"
 	"syscall"
 
 
-	"github.com/pkg/errors"
 	"golang.org/x/sys/unix"
 	"golang.org/x/sys/unix"
 )
 )
 
 
@@ -33,8 +34,3 @@ func copyDevice(dst string, fi os.FileInfo) error {
 	}
 	}
 	return unix.Mknod(dst, uint32(fi.Mode()), int(st.Rdev))
 	return unix.Mknod(dst, uint32(fi.Mode()), int(st.Rdev))
 }
 }
-
-func utimesNano(name string, atime, mtime syscall.Timespec) error {
-	timespec := []syscall.Timespec{atime, mtime}
-	return syscall.UtimesNano(name, timespec)
-}

+ 36 - 0
vendor/github.com/containerd/continuity/fs/copy_device_unix.go

@@ -0,0 +1,36 @@
+//go:build openbsd || solaris || netbsd
+// +build openbsd solaris netbsd
+
+/*
+   Copyright The containerd Authors.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
+package fs
+
+import (
+	"errors"
+	"os"
+	"syscall"
+
+	"golang.org/x/sys/unix"
+)
+
+func copyDevice(dst string, fi os.FileInfo) error {
+	st, ok := fi.Sys().(*syscall.Stat_t)
+	if !ok {
+		return errors.New("unsupported stat type")
+	}
+	return unix.Mknod(dst, uint32(fi.Mode()), int(st.Rdev))
+}

+ 2 - 8
vendor/github.com/containerd/continuity/fs/copy_freebsd.go

@@ -1,3 +1,4 @@
+//go:build freebsd
 // +build freebsd
 // +build freebsd
 
 
 /*
 /*
@@ -19,10 +20,10 @@
 package fs
 package fs
 
 
 import (
 import (
+	"errors"
 	"os"
 	"os"
 	"syscall"
 	"syscall"
 
 
-	"github.com/pkg/errors"
 	"golang.org/x/sys/unix"
 	"golang.org/x/sys/unix"
 )
 )
 
 
@@ -33,10 +34,3 @@ func copyDevice(dst string, fi os.FileInfo) error {
 	}
 	}
 	return unix.Mknod(dst, uint32(fi.Mode()), st.Rdev)
 	return unix.Mknod(dst, uint32(fi.Mode()), st.Rdev)
 }
 }
-
-func utimesNano(name string, atime, mtime syscall.Timespec) error {
-	at := unix.NsecToTimespec(atime.Nano())
-	mt := unix.NsecToTimespec(mtime.Nano())
-	utimes := [2]unix.Timespec{at, mt}
-	return unix.UtimesNanoAt(unix.AT_FDCWD, name, utimes[0:], unix.AT_SYMLINK_NOFOLLOW)
-}

+ 15 - 11
vendor/github.com/containerd/continuity/fs/copy_linux.go

@@ -17,16 +17,17 @@
 package fs
 package fs
 
 
 import (
 import (
+	"errors"
+	"fmt"
 	"io"
 	"io"
 	"os"
 	"os"
 	"syscall"
 	"syscall"
 
 
 	"github.com/containerd/continuity/sysx"
 	"github.com/containerd/continuity/sysx"
-	"github.com/pkg/errors"
 	"golang.org/x/sys/unix"
 	"golang.org/x/sys/unix"
 )
 )
 
 
-func copyFileInfo(fi os.FileInfo, name string) error {
+func copyFileInfo(fi os.FileInfo, src, name string) error {
 	st := fi.Sys().(*syscall.Stat_t)
 	st := fi.Sys().(*syscall.Stat_t)
 	if err := os.Lchown(name, int(st.Uid), int(st.Gid)); err != nil {
 	if err := os.Lchown(name, int(st.Uid), int(st.Gid)); err != nil {
 		if os.IsPermission(err) {
 		if os.IsPermission(err) {
@@ -41,13 +42,13 @@ func copyFileInfo(fi os.FileInfo, name string) error {
 			}
 			}
 		}
 		}
 		if err != nil {
 		if err != nil {
-			return errors.Wrapf(err, "failed to chown %s", name)
+			return fmt.Errorf("failed to chown %s: %w", name, err)
 		}
 		}
 	}
 	}
 
 
 	if (fi.Mode() & os.ModeSymlink) != os.ModeSymlink {
 	if (fi.Mode() & os.ModeSymlink) != os.ModeSymlink {
 		if err := os.Chmod(name, fi.Mode()); err != nil {
 		if err := os.Chmod(name, fi.Mode()); err != nil {
-			return errors.Wrapf(err, "failed to chmod %s", name)
+			return fmt.Errorf("failed to chmod %s: %w", name, err)
 		}
 		}
 	}
 	}
 
 
@@ -56,7 +57,7 @@ func copyFileInfo(fi os.FileInfo, name string) error {
 		unix.NsecToTimespec(syscall.TimespecToNsec(StatMtime(st))),
 		unix.NsecToTimespec(syscall.TimespecToNsec(StatMtime(st))),
 	}
 	}
 	if err := unix.UtimesNanoAt(unix.AT_FDCWD, name, timespec, unix.AT_SYMLINK_NOFOLLOW); err != nil {
 	if err := unix.UtimesNanoAt(unix.AT_FDCWD, name, timespec, unix.AT_SYMLINK_NOFOLLOW); err != nil {
-		return errors.Wrapf(err, "failed to utime %s", name)
+		return fmt.Errorf("failed to utime %s: %w", name, err)
 	}
 	}
 
 
 	return nil
 	return nil
@@ -67,7 +68,7 @@ const maxSSizeT = int64(^uint(0) >> 1)
 func copyFileContent(dst, src *os.File) error {
 func copyFileContent(dst, src *os.File) error {
 	st, err := src.Stat()
 	st, err := src.Stat()
 	if err != nil {
 	if err != nil {
-		return errors.Wrap(err, "unable to stat source")
+		return fmt.Errorf("unable to stat source: %w", err)
 	}
 	}
 
 
 	size := st.Size()
 	size := st.Size()
@@ -88,13 +89,16 @@ func copyFileContent(dst, src *os.File) error {
 		n, err := unix.CopyFileRange(srcFd, nil, dstFd, nil, copySize, 0)
 		n, err := unix.CopyFileRange(srcFd, nil, dstFd, nil, copySize, 0)
 		if err != nil {
 		if err != nil {
 			if (err != unix.ENOSYS && err != unix.EXDEV) || !first {
 			if (err != unix.ENOSYS && err != unix.EXDEV) || !first {
-				return errors.Wrap(err, "copy file range failed")
+				return fmt.Errorf("copy file range failed: %w", err)
 			}
 			}
 
 
 			buf := bufferPool.Get().(*[]byte)
 			buf := bufferPool.Get().(*[]byte)
 			_, err = io.CopyBuffer(dst, src, *buf)
 			_, err = io.CopyBuffer(dst, src, *buf)
 			bufferPool.Put(buf)
 			bufferPool.Put(buf)
-			return errors.Wrap(err, "userspace copy failed")
+			if err != nil {
+				return fmt.Errorf("userspace copy failed: %w", err)
+			}
+			return nil
 		}
 		}
 
 
 		first = false
 		first = false
@@ -107,7 +111,7 @@ func copyFileContent(dst, src *os.File) error {
 func copyXAttrs(dst, src string, excludes map[string]struct{}, errorHandler XAttrErrorHandler) error {
 func copyXAttrs(dst, src string, excludes map[string]struct{}, errorHandler XAttrErrorHandler) error {
 	xattrKeys, err := sysx.LListxattr(src)
 	xattrKeys, err := sysx.LListxattr(src)
 	if err != nil {
 	if err != nil {
-		e := errors.Wrapf(err, "failed to list xattrs on %s", src)
+		e := fmt.Errorf("failed to list xattrs on %s: %w", src, err)
 		if errorHandler != nil {
 		if errorHandler != nil {
 			e = errorHandler(dst, src, "", e)
 			e = errorHandler(dst, src, "", e)
 		}
 		}
@@ -119,7 +123,7 @@ func copyXAttrs(dst, src string, excludes map[string]struct{}, errorHandler XAtt
 		}
 		}
 		data, err := sysx.LGetxattr(src, xattr)
 		data, err := sysx.LGetxattr(src, xattr)
 		if err != nil {
 		if err != nil {
-			e := errors.Wrapf(err, "failed to get xattr %q on %s", xattr, src)
+			e := fmt.Errorf("failed to get xattr %q on %s: %w", xattr, src, err)
 			if errorHandler != nil {
 			if errorHandler != nil {
 				if e = errorHandler(dst, src, xattr, e); e == nil {
 				if e = errorHandler(dst, src, xattr, e); e == nil {
 					continue
 					continue
@@ -128,7 +132,7 @@ func copyXAttrs(dst, src string, excludes map[string]struct{}, errorHandler XAtt
 			return e
 			return e
 		}
 		}
 		if err := sysx.LSetxattr(dst, xattr, data, 0); err != nil {
 		if err := sysx.LSetxattr(dst, xattr, data, 0); err != nil {
-			e := errors.Wrapf(err, "failed to set xattr %q on %s", xattr, dst)
+			e := fmt.Errorf("failed to set xattr %q on %s: %w", xattr, dst, err)
 			if errorHandler != nil {
 			if errorHandler != nil {
 				if e = errorHandler(dst, src, xattr, e); e == nil {
 				if e = errorHandler(dst, src, xattr, e); e == nil {
 					continue
 					continue

+ 10 - 9
vendor/github.com/containerd/continuity/fs/copy_unix.go

@@ -1,4 +1,5 @@
-// +build darwin freebsd openbsd solaris
+//go:build darwin || freebsd || openbsd || netbsd || solaris
+// +build darwin freebsd openbsd netbsd solaris
 
 
 /*
 /*
    Copyright The containerd Authors.
    Copyright The containerd Authors.
@@ -19,15 +20,15 @@
 package fs
 package fs
 
 
 import (
 import (
+	"fmt"
 	"io"
 	"io"
 	"os"
 	"os"
 	"syscall"
 	"syscall"
 
 
 	"github.com/containerd/continuity/sysx"
 	"github.com/containerd/continuity/sysx"
-	"github.com/pkg/errors"
 )
 )
 
 
-func copyFileInfo(fi os.FileInfo, name string) error {
+func copyFileInfo(fi os.FileInfo, src, name string) error {
 	st := fi.Sys().(*syscall.Stat_t)
 	st := fi.Sys().(*syscall.Stat_t)
 	if err := os.Lchown(name, int(st.Uid), int(st.Gid)); err != nil {
 	if err := os.Lchown(name, int(st.Uid), int(st.Gid)); err != nil {
 		if os.IsPermission(err) {
 		if os.IsPermission(err) {
@@ -42,18 +43,18 @@ func copyFileInfo(fi os.FileInfo, name string) error {
 			}
 			}
 		}
 		}
 		if err != nil {
 		if err != nil {
-			return errors.Wrapf(err, "failed to chown %s", name)
+			return fmt.Errorf("failed to chown %s: %w", name, err)
 		}
 		}
 	}
 	}
 
 
 	if (fi.Mode() & os.ModeSymlink) != os.ModeSymlink {
 	if (fi.Mode() & os.ModeSymlink) != os.ModeSymlink {
 		if err := os.Chmod(name, fi.Mode()); err != nil {
 		if err := os.Chmod(name, fi.Mode()); err != nil {
-			return errors.Wrapf(err, "failed to chmod %s", name)
+			return fmt.Errorf("failed to chmod %s: %w", name, err)
 		}
 		}
 	}
 	}
 
 
 	if err := utimesNano(name, StatAtime(st), StatMtime(st)); err != nil {
 	if err := utimesNano(name, StatAtime(st), StatMtime(st)); err != nil {
-		return errors.Wrapf(err, "failed to utime %s", name)
+		return fmt.Errorf("failed to utime %s: %w", name, err)
 	}
 	}
 
 
 	return nil
 	return nil
@@ -70,7 +71,7 @@ func copyFileContent(dst, src *os.File) error {
 func copyXAttrs(dst, src string, excludes map[string]struct{}, errorHandler XAttrErrorHandler) error {
 func copyXAttrs(dst, src string, excludes map[string]struct{}, errorHandler XAttrErrorHandler) error {
 	xattrKeys, err := sysx.LListxattr(src)
 	xattrKeys, err := sysx.LListxattr(src)
 	if err != nil {
 	if err != nil {
-		e := errors.Wrapf(err, "failed to list xattrs on %s", src)
+		e := fmt.Errorf("failed to list xattrs on %s: %w", src, err)
 		if errorHandler != nil {
 		if errorHandler != nil {
 			e = errorHandler(dst, src, "", e)
 			e = errorHandler(dst, src, "", e)
 		}
 		}
@@ -82,7 +83,7 @@ func copyXAttrs(dst, src string, excludes map[string]struct{}, errorHandler XAtt
 		}
 		}
 		data, err := sysx.LGetxattr(src, xattr)
 		data, err := sysx.LGetxattr(src, xattr)
 		if err != nil {
 		if err != nil {
-			e := errors.Wrapf(err, "failed to get xattr %q on %s", xattr, src)
+			e := fmt.Errorf("failed to get xattr %q on %s: %w", xattr, src, err)
 			if errorHandler != nil {
 			if errorHandler != nil {
 				if e = errorHandler(dst, src, xattr, e); e == nil {
 				if e = errorHandler(dst, src, xattr, e); e == nil {
 					continue
 					continue
@@ -91,7 +92,7 @@ func copyXAttrs(dst, src string, excludes map[string]struct{}, errorHandler XAtt
 			return e
 			return e
 		}
 		}
 		if err := sysx.LSetxattr(dst, xattr, data, 0); err != nil {
 		if err := sysx.LSetxattr(dst, xattr, data, 0); err != nil {
-			e := errors.Wrapf(err, "failed to set xattr %q on %s", xattr, dst)
+			e := fmt.Errorf("failed to set xattr %q on %s: %w", xattr, dst, err)
 			if errorHandler != nil {
 			if errorHandler != nil {
 				if e = errorHandler(dst, src, xattr, e); e == nil {
 				if e = errorHandler(dst, src, xattr, e); e == nil {
 					continue
 					continue

+ 45 - 4
vendor/github.com/containerd/continuity/fs/copy_windows.go

@@ -17,19 +17,60 @@
 package fs
 package fs
 
 
 import (
 import (
+	"errors"
+	"fmt"
 	"io"
 	"io"
 	"os"
 	"os"
 
 
-	"github.com/pkg/errors"
+	winio "github.com/Microsoft/go-winio"
+	"golang.org/x/sys/windows"
 )
 )
 
 
-func copyFileInfo(fi os.FileInfo, name string) error {
+const (
+	seTakeOwnershipPrivilege = "SeTakeOwnershipPrivilege"
+)
+
+func copyFileInfo(fi os.FileInfo, src, name string) error {
 	if err := os.Chmod(name, fi.Mode()); err != nil {
 	if err := os.Chmod(name, fi.Mode()); err != nil {
-		return errors.Wrapf(err, "failed to chmod %s", name)
+		return fmt.Errorf("failed to chmod %s: %w", name, err)
+	}
+
+	// Copy file ownership and ACL
+	// We need SeRestorePrivilege and SeTakeOwnershipPrivilege in order
+	// to restore security info on a file, especially if we're trying to
+	// apply security info which includes SIDs not necessarily present on
+	// the host.
+	privileges := []string{winio.SeRestorePrivilege, seTakeOwnershipPrivilege}
+	if err := winio.EnableProcessPrivileges(privileges); err != nil {
+		return err
+	}
+	defer winio.DisableProcessPrivileges(privileges)
+
+	secInfo, err := windows.GetNamedSecurityInfo(
+		src, windows.SE_FILE_OBJECT,
+		windows.OWNER_SECURITY_INFORMATION|windows.DACL_SECURITY_INFORMATION)
+
+	if err != nil {
+		return err
+	}
+
+	dacl, _, err := secInfo.DACL()
+	if err != nil {
+		return err
 	}
 	}
 
 
-	// TODO: copy windows specific metadata
+	sid, _, err := secInfo.Owner()
+	if err != nil {
+		return err
+	}
+
+	if err := windows.SetNamedSecurityInfo(
+		name, windows.SE_FILE_OBJECT,
+		windows.OWNER_SECURITY_INFORMATION|windows.DACL_SECURITY_INFORMATION,
+		sid, nil, dacl, nil); err != nil {
 
 
+		return err
+	}
 	return nil
 	return nil
 }
 }
 
 

+ 4 - 3
vendor/github.com/containerd/continuity/fs/diff_unix.go

@@ -1,3 +1,4 @@
+//go:build !windows
 // +build !windows
 // +build !windows
 
 
 /*
 /*
@@ -20,11 +21,11 @@ package fs
 
 
 import (
 import (
 	"bytes"
 	"bytes"
+	"fmt"
 	"os"
 	"os"
 	"syscall"
 	"syscall"
 
 
 	"github.com/containerd/continuity/sysx"
 	"github.com/containerd/continuity/sysx"
-	"github.com/pkg/errors"
 )
 )
 
 
 // detectDirDiff returns diff dir options if a directory could
 // detectDirDiff returns diff dir options if a directory could
@@ -56,11 +57,11 @@ func compareSysStat(s1, s2 interface{}) (bool, error) {
 func compareCapabilities(p1, p2 string) (bool, error) {
 func compareCapabilities(p1, p2 string) (bool, error) {
 	c1, err := sysx.LGetxattr(p1, "security.capability")
 	c1, err := sysx.LGetxattr(p1, "security.capability")
 	if err != nil && err != sysx.ENODATA {
 	if err != nil && err != sysx.ENODATA {
-		return false, errors.Wrapf(err, "failed to get xattr for %s", p1)
+		return false, fmt.Errorf("failed to get xattr for %s: %w", p1, err)
 	}
 	}
 	c2, err := sysx.LGetxattr(p2, "security.capability")
 	c2, err := sysx.LGetxattr(p2, "security.capability")
 	if err != nil && err != sysx.ENODATA {
 	if err != nil && err != sysx.ENODATA {
-		return false, errors.Wrapf(err, "failed to get xattr for %s", p2)
+		return false, fmt.Errorf("failed to get xattr for %s: %w", p2, err)
 	}
 	}
 	return bytes.Equal(c1, c2), nil
 	return bytes.Equal(c1, c2), nil
 }
 }

+ 1 - 0
vendor/github.com/containerd/continuity/fs/dtype_linux.go

@@ -1,3 +1,4 @@
+//go:build linux
 // +build linux
 // +build linux
 
 
 /*
 /*

+ 3 - 4
vendor/github.com/containerd/continuity/fs/du_unix.go

@@ -1,3 +1,4 @@
+//go:build !windows
 // +build !windows
 // +build !windows
 
 
 /*
 /*
@@ -41,10 +42,8 @@ type inode struct {
 
 
 func newInode(stat *syscall.Stat_t) inode {
 func newInode(stat *syscall.Stat_t) inode {
 	return inode{
 	return inode{
-		// Dev is uint32 on darwin/bsd, uint64 on linux/solaris/freebsd
-		dev: uint64(stat.Dev), // nolint: unconvert
-		// Ino is uint32 on bsd, uint64 on darwin/linux/solaris/freebsd
-		ino: uint64(stat.Ino), // nolint: unconvert
+		dev: uint64(stat.Dev), //nolint: unconvert // dev is uint32 on darwin/bsd, uint64 on linux/solaris/freebsd
+		ino: uint64(stat.Ino), //nolint: unconvert // ino is uint32 on bsd, uint64 on darwin/linux/solaris/freebsd
 	}
 	}
 }
 }
 
 

+ 1 - 0
vendor/github.com/containerd/continuity/fs/du_windows.go

@@ -1,3 +1,4 @@
+//go:build windows
 // +build windows
 // +build windows
 
 
 /*
 /*

+ 2 - 2
vendor/github.com/containerd/continuity/fs/hardlink_unix.go

@@ -1,3 +1,4 @@
+//go:build !windows
 // +build !windows
 // +build !windows
 
 
 /*
 /*
@@ -29,6 +30,5 @@ func getLinkInfo(fi os.FileInfo) (uint64, bool) {
 		return 0, false
 		return 0, false
 	}
 	}
 
 
-	// Ino is uint32 on bsd, uint64 on darwin/linux/solaris
-	return uint64(s.Ino), !fi.IsDir() && s.Nlink > 1 // nolint: unconvert
+	return uint64(s.Ino), !fi.IsDir() && s.Nlink > 1 //nolint: unconvert // ino is uint32 on bsd, uint64 on darwin/linux/solaris
 }
 }

+ 1 - 2
vendor/github.com/containerd/continuity/fs/path.go

@@ -19,11 +19,10 @@ package fs
 import (
 import (
 	"bytes"
 	"bytes"
 	"context"
 	"context"
+	"errors"
 	"io"
 	"io"
 	"os"
 	"os"
 	"path/filepath"
 	"path/filepath"
-
-	"github.com/pkg/errors"
 )
 )
 
 
 var (
 var (

+ 3 - 3
vendor/github.com/containerd/continuity/fs/stat_linuxopenbsd.go → vendor/github.com/containerd/continuity/fs/stat_atim.go

@@ -1,4 +1,5 @@
-// +build linux openbsd
+//go:build linux || openbsd || solaris
+// +build linux openbsd solaris
 
 
 /*
 /*
    Copyright The containerd Authors.
    Copyright The containerd Authors.
@@ -40,6 +41,5 @@ func StatMtime(st *syscall.Stat_t) syscall.Timespec {
 
 
 // StatATimeAsTime returns st.Atim as a time.Time
 // StatATimeAsTime returns st.Atim as a time.Time
 func StatATimeAsTime(st *syscall.Stat_t) time.Time {
 func StatATimeAsTime(st *syscall.Stat_t) time.Time {
-	// The int64 conversions ensure the line compiles for 32-bit systems as well.
-	return time.Unix(int64(st.Atim.Sec), int64(st.Atim.Nsec)) // nolint: unconvert
+	return time.Unix(st.Atim.Unix())
 }
 }

+ 3 - 2
vendor/github.com/containerd/continuity/fs/stat_darwinfreebsd.go → vendor/github.com/containerd/continuity/fs/stat_darwinbsd.go

@@ -1,4 +1,5 @@
-// +build darwin freebsd
+//go:build darwin || freebsd || netbsd
+// +build darwin freebsd netbsd
 
 
 /*
 /*
    Copyright The containerd Authors.
    Copyright The containerd Authors.
@@ -40,5 +41,5 @@ func StatMtime(st *syscall.Stat_t) syscall.Timespec {
 
 
 // StatATimeAsTime returns the access time as a time.Time
 // StatATimeAsTime returns the access time as a time.Time
 func StatATimeAsTime(st *syscall.Stat_t) time.Time {
 func StatATimeAsTime(st *syscall.Stat_t) time.Time {
-	return time.Unix(int64(st.Atimespec.Sec), int64(st.Atimespec.Nsec)) // nolint: unconvert
+	return time.Unix(st.Atimespec.Unix())
 }
 }

+ 33 - 0
vendor/github.com/containerd/continuity/fs/utimesnanoat.go

@@ -0,0 +1,33 @@
+//go:build !(windows || linux)
+// +build !windows,!linux
+
+/*
+   Copyright The containerd Authors.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
+package fs
+
+import (
+	"syscall"
+
+	"golang.org/x/sys/unix"
+)
+
+func utimesNano(name string, atime, mtime syscall.Timespec) error {
+	at := unix.NsecToTimespec(atime.Nano())
+	mt := unix.NsecToTimespec(mtime.Nano())
+	utimes := [2]unix.Timespec{at, mt}
+	return unix.UtimesNanoAt(unix.AT_FDCWD, name, utimes[0:], unix.AT_SYMLINK_NOFOLLOW)
+}

+ 2 - 1
vendor/github.com/containerd/continuity/sysx/nodata_unix.go

@@ -1,4 +1,5 @@
-// +build darwin freebsd openbsd
+//go:build !(linux || solaris || windows)
+// +build !linux,!solaris,!windows
 
 
 /*
 /*
    Copyright The containerd Authors.
    Copyright The containerd Authors.

+ 1 - 0
vendor/github.com/containerd/continuity/sysx/xattr.go

@@ -1,3 +1,4 @@
+//go:build linux || darwin
 // +build linux darwin
 // +build linux darwin
 
 
 /*
 /*

+ 1 - 0
vendor/github.com/containerd/continuity/sysx/xattr_unsupported.go

@@ -1,3 +1,4 @@
+//go:build !linux && !darwin
 // +build !linux,!darwin
 // +build !linux,!darwin
 
 
 /*
 /*

+ 1 - 1
vendor/modules.txt

@@ -218,7 +218,7 @@ github.com/containerd/containerd/snapshots/proxy
 github.com/containerd/containerd/sys
 github.com/containerd/containerd/sys
 github.com/containerd/containerd/sys/reaper
 github.com/containerd/containerd/sys/reaper
 github.com/containerd/containerd/version
 github.com/containerd/containerd/version
-# github.com/containerd/continuity v0.1.0
+# github.com/containerd/continuity v0.2.2
 ## explicit; go 1.13
 ## explicit; go 1.13
 github.com/containerd/continuity/devices
 github.com/containerd/continuity/devices
 github.com/containerd/continuity/driver
 github.com/containerd/continuity/driver