aboutsummaryrefslogtreecommitdiff
path: root/lib/libc
diff options
context:
space:
mode:
authorRick Macklem <rmacklem@FreeBSD.org>2021-01-03 01:21:21 +0000
committerRick Macklem <rmacklem@FreeBSD.org>2021-01-03 01:21:21 +0000
commitd189a74dfdcd4a89c92a48ecbf8fcb6f6903f9b6 (patch)
treed24792d2a5dc9fa3fec2768746b98857632f24c0 /lib/libc
parentc98a764c681f8b70812a9f13a6e61c96aa1a69d2 (diff)
downloadsrc-d189a74dfdcd4a89c92a48ecbf8fcb6f6903f9b6.tar.gz
src-d189a74dfdcd4a89c92a48ecbf8fcb6f6903f9b6.zip
copy_file_range(2): add recommendation to use large "len"
PR#252358 reported a serious performance problem w.r.t. cp(1) when copying large non-sparse files. This problem appears to have been caused by cp(1) calling copy_file_range(2) with a small "len" argument. This patch adds a recommendation to use a large "len" value where possible, for performance reasons. Reviewed by: asomers Differential Revision: https://reviews.freebsd.org/D27935
Diffstat (limited to 'lib/libc')
-rw-r--r--lib/libc/sys/copy_file_range.211
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/libc/sys/copy_file_range.2 b/lib/libc/sys/copy_file_range.2
index a3f714f0e7e8..22106b397ef2 100644
--- a/lib/libc/sys/copy_file_range.2
+++ b/lib/libc/sys/copy_file_range.2
@@ -25,7 +25,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd March 30, 2020
+.Dd January 2, 2021
.Dt COPY_FILE_RANGE 2
.Os
.Sh NAME
@@ -117,6 +117,15 @@ with
.Dv SEEK_DATA
arguments and this system call for the
data ranges found.
+.Pp
+For best performance, call
+.Fn copy_file_range
+with the largest
+.Fa len
+value possible.
+It is interruptible on most file systems,
+so there is no penalty for using very large len values, even SSIZE_MAX.
+.Pp
.Sh RETURN VALUES
If it succeeds, the call returns the number of bytes copied, which can be fewer
than