copy-file-range: support building for older kernels
authorPaul Eggert <eggert@cs.ucla.edu>
Tue, 6 Jun 2023 05:04:37 +0000 (22:04 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Tue, 6 Jun 2023 05:36:35 +0000 (22:36 -0700)
* m4/copy-file-range.m4 (gl_FUNC_COPY_FILE_RANGE):
Remove static check, to support the dubious practice of
building for platforms that predate the build platform.
On working kernels this adds an extra syscall the first time
that copy_file_range is used.  Problem reported for Gentoo by
Sam James <https://bugs.gnu.org/63850>.

ChangeLog
m4/copy-file-range.m4

index d8f04f737db6dbdb0f1370a852885e5e0fba29ca..a917eb63a6f898da8dbac2de937a2ed7674ac37a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2023-06-05  Paul Eggert  <eggert@cs.ucla.edu>
 
+       copy-file-range: support building for older kernels
+       * m4/copy-file-range.m4 (gl_FUNC_COPY_FILE_RANGE):
+       Remove static check, to support the dubious practice of
+       building for platforms that predate the build platform.
+       On working kernels this adds an extra syscall the first time
+       that copy_file_range is used.  Problem reported for Gentoo by
+       Sam James <https://bugs.gnu.org/63850>.
+
        manywarnings: more nuance about optimization
        * doc/manywarnings.texi (manywarnings): Suggest compiling with the
        optimization flags commonly used, as opposed to -O2 and -O0
index d41f2c48313b5efba9c92a140bffc00c9909de78..fa6ab341091084d854e296e4d5c825daae041dd3 100644 (file)
@@ -39,21 +39,9 @@ AC_DEFUN([gl_FUNC_COPY_FILE_RANGE],
 
     case $host_os in
       linux*)
-        AC_CACHE_CHECK([whether copy_file_range is known to work],
-          [gl_cv_copy_file_range_known_to_work],
-          [AC_COMPILE_IFELSE(
-             [AC_LANG_PROGRAM(
-                [[#include <linux/version.h>
-                ]],
-                [[#if LINUX_VERSION_CODE < KERNEL_VERSION (5, 3, 0)
-                   #error "copy_file_range is buggy"
-                  #endif
-                ]])],
-             [gl_cv_copy_file_range_known_to_work=yes],
-             [gl_cv_copy_file_range_known_to_work=no])])
-        if test "$gl_cv_copy_file_range_known_to_work" = no; then
-          REPLACE_COPY_FILE_RANGE=1
-        fi;;
+        # See copy-file-range.c comment re pre-5.3 Linux kernel bugs.
+        # We should be able to remove this hack in 2025.
+        REPLACE_COPY_FILE_RANGE=1;;
     esac
   fi
 ])