diff options
author | Ian Lance Taylor <iant@golang.org> | 2021-02-14 17:14:41 -0800 |
---|---|---|
committer | Ian Lance Taylor <iant@golang.org> | 2021-02-16 00:46:04 +0000 |
commit | 30641e36aa5b547eee48565caa3078b0a2e7c185 (patch) | |
tree | c085c8c6f8f46883cc0877fcf400b4b910fb3e84 /README.md | |
parent | 33d72fd4122a4b7e31e738d5d9283093966ec14a (diff) | |
download | go-30641e36aa5b547eee48565caa3078b0a2e7c185.tar.gz go-30641e36aa5b547eee48565caa3078b0a2e7c185.zip |
internal/poll: if copy_file_range returns 0, assume it failed
On current Linux kernels copy_file_range does not correctly handle
files in certain special file systems, such as /proc. For those file
systems it fails to copy any data and returns zero. This breaks Go's
io.Copy for those files.
Fix the problem by assuming that if copy_file_range returns 0 the
first time it is called on a file, that that file is not supported.
In that case fall back to just using read. This will force an extra
system call when using io.Copy to copy a zero-sized normal file,
but at least it will work correctly.
For #36817
Fixes #44272
Change-Id: I02e81872cb70fda0ce5485e2ea712f219132e614
Reviewed-on: https://go-review.googlesource.com/c/go/+/291989
Trust: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
Diffstat (limited to 'README.md')
0 files changed, 0 insertions, 0 deletions