1
0
mirror of https://github.com/golang/go synced 2024-11-15 00:20:30 -07:00

[release-branch.go1.15] internal/poll: treat copy_file_range EOPNOTSUPP as not-handled

For #40731
Fixes #40739

Change-Id: I3e29878d597318acf5edcc38497aa2624f72be35
Reviewed-on: https://go-review.googlesource.com/c/go/+/248258
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com>
(cherry picked from commit d3a411b6de)
Reviewed-on: https://go-review.googlesource.com/c/go/+/249197
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
This commit is contained in:
Ian Lance Taylor 2020-08-12 12:09:35 -07:00 committed by Dmitri Shuralyov
parent 9c17883f28
commit f2b7109989

View File

@ -41,7 +41,7 @@ func CopyFileRange(dst, src *FD, remain int64) (written int64, handled bool, err
// use copy_file_range(2) again.
atomic.StoreInt32(&copyFileRangeSupported, 0)
return 0, false, nil
case syscall.EXDEV, syscall.EINVAL:
case syscall.EXDEV, syscall.EINVAL, syscall.EOPNOTSUPP:
// Prior to Linux 5.3, it was not possible to
// copy_file_range across file systems. Similarly to
// the ENOSYS case above, if we see EXDEV, we have
@ -52,6 +52,9 @@ func CopyFileRange(dst, src *FD, remain int64) (written int64, handled bool, err
// dst or src refer to a pipe rather than a regular
// file. This is another case where no data has been
// transfered, so we consider it unhandled.
//
// If the file is on NFS, we can see EOPNOTSUPP.
// See issue #40731.
return 0, false, nil
case nil:
if n == 0 {