Whamcloud - gitweb
LU-17404 kernel: fix filemap_splice_read detection 54/55454/3
authorSebastien Buisson <sbuisson@ddn.com>
Mon, 17 Jun 2024 14:29:33 +0000 (16:29 +0200)
committerOleg Drokin <green@whamcloud.com>
Mon, 8 Jul 2024 20:08:09 +0000 (20:08 +0000)
On Centos 9 kernel 5.14, filemap_splice_read is in the header files,
but the symbol is not exported by the kernel.
So instead of trying to build a kernel module with a call to this
function, just use LB_CHECK_EXPORT on this symbol.

Test-Parameters: trivial
Signed-off-by: Sebastien Buisson <sbuisson@ddn.com>
Change-Id: I1f55d0b41c46a992204c1cebc3f5c8c7dbc6128e
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/55454
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Jian Yu <yujian@whamcloud.com>
lustre/autoconf/lustre-core.m4

index a37281b..30bec2c 100644 (file)
@@ -4207,30 +4207,16 @@ AC_DEFUN([LC_HAVE_CLASS_CREATE_MODULE_ARG], [
 ]) # LC_HAVE_CLASS_CREATE_MODULE_ARG
 
 #
-# LC_HAVE_FILEMAP_SPLICE_READ
+# LC_EXPORTS_FILEMAP_SPLICE_READ
 #
 # linux kernel v6.4-rc2-29-gc6585011bc1d
 #   splice: Remove generic_file_splice_read()
 #
-AC_DEFUN([LC_SRC_HAVE_FILEMAP_SPLICE_READ], [
-       LB2_LINUX_TEST_SRC([filemap_splice_read], [
-               #include <linux/fs.h>
-       ],[
-               struct file *in = NULL;
-               loff_t pos = 0;
-               struct pipe_inode_info *pipe = NULL;
-               ssize_t count __attribute__ ((unused));
-
-               count = filemap_splice_read(in, &pos, pipe, 0, 0);
-       ],[-Werror])
-])
-AC_DEFUN([LC_HAVE_FILEMAP_SPLICE_READ], [
-       LB2_MSG_LINUX_TEST_RESULT([if 'filemap_splice_read' is available],
-       [filemap_splice_read], [
-               AC_DEFINE(HAVE_FILEMAP_SPLICE_READ, 1,
-                       ['filemap_splice_read' is available])
-       ])
-]) # LC_HAVE_FILEMAP_SPLICE_READ
+AC_DEFUN([LC_EXPORTS_FILEMAP_SPLICE_READ], [
+LB_CHECK_EXPORT([filemap_splice_read], [mm/filemap.c],
+       [AC_DEFINE(HAVE_FILEMAP_SPLICE_READ, 1,
+                       ['filemap_splice_read' is exported])])
+]) # LC_EXPORTS_FILEMAP_SPLICE_READ
 
 #
 # LC_HAVE_ENUM_ITER_PIPE
@@ -4832,7 +4818,6 @@ AC_DEFUN([LC_PROG_LINUX_SRC], [
        LC_SRC_HAVE_CLASS_CREATE_MODULE_ARG
 
        # 6.5
-       LC_SRC_HAVE_FILEMAP_SPLICE_READ
        LC_SRC_HAVE_ENUM_ITER_PIPE
        LC_SRC_HAVE_GET_USER_PAGES_WITHOUT_VMA
        LC_SRC_HAVE_FOLIO_BATCH
@@ -5146,11 +5131,11 @@ AC_DEFUN([LC_PROG_LINUX_RESULTS], [
        LC_HAVE_CLASS_CREATE_MODULE_ARG
 
        # 6.5
-       LC_HAVE_FILEMAP_SPLICE_READ
        LC_HAVE_ENUM_ITER_PIPE
        LC_HAVE_GET_USER_PAGES_WITHOUT_VMA
        LC_HAVE_FOLIO_BATCH
        LC_HAVE_STRUCT_PAGEVEC
+       LC_EXPORTS_FILEMAP_SPLICE_READ
 
        # 6.6
        LC_HAVE_FLUSH___WORKQUEUE