containerd / containerd/continuity
s390x: copy_file_range error in container
- Dominant language
- Go
- Stars
- 153
- Forks
- 74
- PR merge metrics
- No merged PRs in 30d
Description
On `s390x` the copy package fails if run inside a container because it fails to detect the existence of `copy_file_range` properly.
If ran on host https://github.com/containerd/continuity/blob/7f53d412b9eb1cbf744c2063185d703a0ee34700/fs/copy_linux.go#L74 fails with ENOSYS and fallback method will be used.
But if the same code is run under limited capabilities it produces `EPERM` instead(even though it doesn't seem to be allowed error for this syscall) and the copy fails.
```
--- FAIL: TestCopyDirectory (0.00s)
copy_test.go:47: Copy test failed: operation not permitted
copy file range failed
github.com/containerd/continuity/fs.copyFileContent
/root/go/src/github.com/containerd/continuity/fs/copy_linux.go:79
github.com/containerd/continuity/fs.CopyFile
/root/go/src/github.com/containerd/continuity/fs/copy.go:137
github.com/containerd/continuity/fs.copyDirectory
/root/go/src/github.com/containerd/continuity/fs/copy.go:92
github.com/containerd/continuity/fs.copyDirectory
/root/go/src/github.com/containerd/continuity/fs/copy.go:79
github.com/containerd/continuity/fs.CopyDir
/root/go/src/github.com/containerd/continuity/fs/copy.go:40
github.com/containerd/continuity/fs.testCopy
/root/go/src/github.com/containerd/continuity/fs/copy_test.go:97
github.com/containerd/continuity/fs.TestCopyDirectory
/root/go/src/github.com/containerd/continuity/fs/copy_test.go:46
testing.tRunner
/usr/local/go/src/testing/testing.go:827
runtime.goexit
/usr/local/go/src/runtime/asm_s390x.s:782
failed to copy files
github.com/containerd/continuity/fs.copyDirectory
/root/go/src/github.com/containerd/continuity/fs/copy.go:93
github.com/containerd/continuity/fs.copyDirectory
/root/go/src/github.com/containerd/continuity/fs/copy.go:79
github.com/containerd/continuity/fs.CopyDir
/root/go/src/github.com/containerd/continuity/fs/copy.go:40
github.com/containerd/continuity/fs.testCopy
/root/go/src/github.com/containerd/continuity/fs/copy_test.go:97
github.com/containerd/continuity/fs.TestCopyDirectory
/root/go/src/github.com/containerd/continuity/fs/copy_test.go:46
testing.tRunner
/usr/local/go/src/testing/testing.go:827
runtime.goexit
/usr/local/go/src/runtime/asm_s390x.s:782
failed to copy
github.com/containerd/continuity/fs.testCopy
/root/go/src/github.com/containerd/continuity/fs/copy_test.go:98
github.com/containerd/continuity/fs.TestCopyDirectory
/root/go/src/github.com/containerd/continuity/fs/copy_test.go:46
testing.tRunner
/usr/local/go/src/testing/testing.go:827
runtime.goexit
/usr/local/go/src/runtime/asm_s390x.s:782
FAIL
```
```
root@s390x-ubuntu-17:/home/ubuntu# uname -a
Linux s390x-ubuntu-17 4.4.0-130-generic #156-Ubuntu SMP Thu Jun 14 09:18:59 UTC 2018 s390x s390x s390x GNU/Linux
```
@estesp
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.