]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1.15] internal/poll: treat copy_file_range EIO as not-handled
authorTobias Klauser <tklauser@distanz.ch>
Mon, 2 Nov 2020 11:01:33 +0000 (12:01 +0100)
committerIan Lance Taylor <iant@golang.org>
Fri, 6 Nov 2020 00:15:21 +0000 (00:15 +0000)
For #42334
Fixes #42369

Change-Id: Ife51df4e7d2539a04393abfdec45e3f902975fca
Reviewed-on: https://go-review.googlesource.com/c/go/+/266940
Trust: Tobias Klauser <tobias.klauser@gmail.com>
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
(cherry picked from commit 633f9e206045176a12c301eb2c249c1c1d9a5d2e)
Reviewed-on: https://go-review.googlesource.com/c/go/+/267917
Trust: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com>
src/internal/poll/copy_file_range_linux.go

index 09de299ff71781f09e173acc72dc60705e2f1b37..24bee614a68ded4a186b6c5302ca3bd6078f6de7 100644 (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, syscall.EOPNOTSUPP, syscall.EPERM:
+               case syscall.EXDEV, syscall.EINVAL, syscall.EIO, syscall.EOPNOTSUPP, syscall.EPERM:
                        // 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
@@ -53,6 +53,9 @@ func CopyFileRange(dst, src *FD, remain int64) (written int64, handled bool, err
                        // file. This is another case where no data has been
                        // transfered, so we consider it unhandled.
                        //
+                       // If src and dst are on CIFS, we can see EIO.
+                       // See issue #42334.
+                       //
                        // If the file is on NFS, we can see EOPNOTSUPP.
                        // See issue #40731.
                        //