From befb4e43590fff7f3b0d42e5928e91a76dc223f0 Mon Sep 17 00:00:00 2001 From: Sebastien Buisson Date: Mon, 17 Jun 2024 16:29:33 +0200 Subject: [PATCH] LU-17404 kernel: fix filemap_splice_read detection 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 Change-Id: I1f55d0b41c46a992204c1cebc3f5c8c7dbc6128e Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/55454 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Oleg Drokin Reviewed-by: Andreas Dilger Reviewed-by: Jian Yu --- lustre/autoconf/lustre-core.m4 | 29 +++++++---------------------- 1 file changed, 7 insertions(+), 22 deletions(-) diff --git a/lustre/autoconf/lustre-core.m4 b/lustre/autoconf/lustre-core.m4 index a37281bb..30bec2c 100644 --- a/lustre/autoconf/lustre-core.m4 +++ b/lustre/autoconf/lustre-core.m4 @@ -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 - ],[ - 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 -- 1.8.3.1