Whamcloud - gitweb
LU-18475 build: compatibility updates for kernel 6.13 06/57906/10
authorShaun Tancheff <shaun.tancheff@hpe.com>
Wed, 19 Feb 2025 09:38:10 +0000 (16:38 +0700)
committerOleg Drokin <green@whamcloud.com>
Thu, 10 Apr 2025 06:54:19 +0000 (06:54 +0000)
Linux v5.8-2483-gc0842fbc1b18
  random32: move the pseudo-random 32-bit definitions to prandom.h
Include prandom.h when available

Linux v6.13-rc1-2-gcdd30ebb1b9f
  module: Convert symbol namespace to string literal
__stringify macros used by MODULE_IMPORT_NS()

Linux v6.12-rc1-5-gfd15ba4cb00a
  ceph: Remove call to PagePrivate2()
PagePrivate2 removed, provide a replacement for older kernels.

Test-Parameters: trivial
Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Change-Id: I6e1e43bad2fff967bbfce2e3df0f0f6ff251e413
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/57906
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
Reviewed-by: Jian Yu <yujian@whamcloud.com>
Reviewed-by: Timothy Day <timday@amazon.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
autoMakefile.am
config/lustre-build-linux.m4
config/lustre-core.m4
lustre/include/lustre_compat.h
lustre/kunit/ldlm_extent.c

index ba77162..7de2025 100644 (file)
@@ -145,7 +145,7 @@ modules: undef.h ldiskfs-sources
        KBUILD_EXTRA_SYMBOLS="@INT_O2IB_SYMBOLS@ @EXTRA_SYMBOLS@ $(KBUILD_EXTRA_SYMBOLS)" \
        LDFLAGS= CC="$(CC)" -C $(LINUX_OBJ) \
        -f $(PWD)/config/Kbuild LUSTRE_LINUX_CONFIG=$(LINUX_CONFIG) \
-       LINUXINCLUDE='-I$$(srctree)/arch/$$(SRCARCH)/include -Iarch/$$(SRCARCH)/include/generated -Iinclude $$(if $$(KBUILD_SRC)$$(building_out_of_srctree),-Iinclude2 -I$$(srctree)/include) -I$$(srctree)/arch/$$(SRCARCH)/include/uapi -Iarch/$$(SRCARCH)/include/generated/uapi -I$$(srctree)/include/uapi -Iinclude/generated/uapi -include $(CONFIG_INCLUDE)' \
+       LINUXINCLUDE='-I$$(srctree)/include -I$$(srctree)/arch/$$(SRCARCH)/include -Iarch/$$(SRCARCH)/include/generated -Iinclude $$(if $$(KBUILD_SRC)$$(building_out_of_srctree),-Iinclude2 -I$$(srctree)/include) -I$$(srctree)/arch/$$(SRCARCH)/include/uapi -Iarch/$$(SRCARCH)/include/generated/uapi -I$$(srctree)/include/uapi -Iinclude/generated/uapi -I$$(srctree)/arch/$$(SRCARCH)/include/generated -I$$(srctree)/arch/$$(SRCARCH)/include/generated/uapi -I$$(srctree)/include/generated -I$$(srctree)/include/generated/uapi -include $(CONFIG_INCLUDE)' \
        $(MODULE_TARGET)=$(PWD) -o tmp_include_depends -o scripts -o \
        include/config/MARKER $@
 if EXTERNAL_KO2IBLND
@@ -153,7 +153,7 @@ if EXTERNAL_KO2IBLND
        KBUILD_EXTRA_SYMBOLS="$(PWD)/Module.symvers @EXT_O2IB_SYMBOLS@ @EXTRA_SYMBOLS@" \
        LDFLAGS= CC="$(CC)" -C $(LINUX_OBJ) \
        -f $(PWD)/config/Kbuild LUSTRE_LINUX_CONFIG=$(LINUX_CONFIG) \
-       LINUXINCLUDE='-I$$(srctree)/arch/$$(SRCARCH)/include -Iarch/$$(SRCARCH)/include/generated -Iinclude $$(if $$(KBUILD_SRC)$$(building_out_of_srctree),-Iinclude2 -I$$(srctree)/include) -I$$(srctree)/arch/$$(SRCARCH)/include/uapi -Iarch/$$(SRCARCH)/include/generated/uapi -I$$(srctree)/include/uapi -Iinclude/generated/uapi -include $(CONFIG_INCLUDE)' \
+       LINUXINCLUDE='-I$$(srctree)/include -I$$(srctree)/arch/$$(SRCARCH)/include -Iarch/$$(SRCARCH)/include/generated -Iinclude $$(if $$(KBUILD_SRC)$$(building_out_of_srctree),-Iinclude2 -I$$(srctree)/include) -I$$(srctree)/arch/$$(SRCARCH)/include/uapi -Iarch/$$(SRCARCH)/include/generated/uapi -I$$(srctree)/include/uapi -Iinclude/generated/uapi -I$$(srctree)/arch/$$(SRCARCH)/include/generated -I$$(srctree)/arch/$$(SRCARCH)/include/generated/uapi -I$$(srctree)/include/generated -I$$(srctree)/include/generated/uapi -include $(CONFIG_INCLUDE)' \
        $(MODULE_TARGET)=$(PWD)/lnet/klnds/o2iblnd -o tmp_include_depends -o scripts -o \
        include/config/MARKER $@
 endif # EXTERNAL_KO2IBLND
index 8b9e524..519ddba 100644 (file)
@@ -667,7 +667,7 @@ AC_DEFUN([LB_LINUX_COMPILE_IFELSE],
 mkdir -p kconftest.dir/
 rm -f kconftest.dir/conftest.o kconftest.dir/conftest.mod.c kconftest.dir/conftest.ko
 cp config/Kbuild kconftest.dir/
-AS_IF([AC_TRY_COMMAND(cp conftest.c kconftest.dir && make -d [$2] DEQUOTE_CC_VERSION_TEXT=$lb_cv_dequote_CC_VERSION_TEXT LDFLAGS= ${LD:+LD="$LD"} CC="$CC" -f $PWD/kconftest.dir/Kbuild LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_CHECK_INCLUDE -I$LINUX/arch/$SUBARCH/include -Iinclude -Iarch/$SUBARCH/include/generated -I$LINUX/include -Iinclude2 -I$LINUX/include/uapi -Iinclude/generated -I$LINUX/arch/$SUBARCH/include/uapi -Iarch/$SUBARCH/include/generated/uapi -I$LINUX/include/uapi -Iinclude/generated/uapi ${SPL_OBJ:+-include $SPL_OBJ/spl_config.h} ${ZFS_OBJ:+-include $ZFS_OBJ/zfs_config.h} ${SPL:+-I$SPL/include } ${ZFS:+-I$ZFS -I$ZFS/include -I$ZFS/include/os/linux/kernel -I$ZFS/include/os/linux/spl -I$ZFS/include/os/linux/zfs -I${SPL:-$ZFS/include/spl}} -include $CONFIG_INCLUDE" KBUILD_EXTRA_SYMBOLS="${ZFS_OBJ:+$ZFS_OBJ/Module.symvers} $KBUILD_EXTRA_SYMBOLS" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $MODULE_TARGET=$PWD/kconftest.dir) >/dev/null && AC_TRY_COMMAND([$3])],
+AS_IF([AC_TRY_COMMAND(cp conftest.c kconftest.dir && make -d [$2] DEQUOTE_CC_VERSION_TEXT=$lb_cv_dequote_CC_VERSION_TEXT LDFLAGS= ${LD:+LD="$LD"} CC="$CC" -f $PWD/kconftest.dir/Kbuild LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_CHECK_INCLUDE -I$LINUX/arch/$SUBARCH/include -Iinclude -Iarch/$SUBARCH/include/generated -I$LINUX/include -Iinclude2 -I$LINUX/include/uapi -Iinclude/generated -I$LINUX/arch/$SUBARCH/include/uapi -Iarch/$SUBARCH/include/generated/uapi -I$LINUX/include/uapi -Iinclude/generated/uapi -I$LINUX/arch/$SUBARCH/include/generated -I$LINUX/arch/$SUBARCH/include/generated/uapi -I$LINUX/include/generated -I$LINUX/include/generated/uapi ${SPL_OBJ:+-include $SPL_OBJ/spl_config.h} ${ZFS_OBJ:+-include $ZFS_OBJ/zfs_config.h} ${SPL:+-I$SPL/include } ${ZFS:+-I$ZFS -I$ZFS/include -I$ZFS/include/os/linux/kernel -I$ZFS/include/os/linux/spl -I$ZFS/include/os/linux/zfs -I${SPL:-$ZFS/include/spl}} -include $CONFIG_INCLUDE" KBUILD_EXTRA_SYMBOLS="${ZFS_OBJ:+$ZFS_OBJ/Module.symvers} $KBUILD_EXTRA_SYMBOLS" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $MODULE_TARGET=$PWD/kconftest.dir) >/dev/null && AC_TRY_COMMAND([$3])],
        [$4],
        [_AC_MSG_LOG_CONFTEST
 m4_ifvaln([$5],[$5])dnl])
@@ -863,6 +863,10 @@ LINUXINCLUDE += -Iinclude/generated
 LINUXINCLUDE += -I$LINUX/arch/$SUBARCH/include/uapi
 LINUXINCLUDE += -Iarch/$SUBARCH/include/generated/uapi
 LINUXINCLUDE += -I$LINUX/include/uapi -Iinclude/generated/uapi
+LINUXINCLUDE += -I$LINUX/arch/$SUBARCH/include/generated
+LINUXINCLUDE += -I$LINUX/arch/$SUBARCH/include/generated/uapi
+LINUXINCLUDE += -I$LINUX/include/generated
+LINUXINCLUDE += -I$LINUX/include/generated/uapi
 ifneq (\$(SOBJ),)
 LINUXINCLUDE += -include \$(SOBJ)/spl_config.h
 endif
index e516721..bb9bc69 100644 (file)
@@ -3045,6 +3045,22 @@ AC_DEFUN([LC_FSCRYPT_DUMMY_CONTEXT_ENABLED], [
 ]) # LC_FSCRYPT_DUMMY_CONTEXT_ENABLED
 
 #
+# LC_HAVE_PRANDOM_HEADER
+#
+# Linux v5.8-2483-gc0842fbc1b18
+#   random32: move the pseudo-random 32-bit definitions to prandom.h
+#
+AC_DEFUN([LC_SRC_HAVE_PRANDOM_HEADER], [
+       LB2_CHECK_LINUX_HEADER_SRC([linux/prandom.h], [-Werror])
+])
+AC_DEFUN([LC_HAVE_PRANDOM_HEADER], [
+       LB2_CHECK_LINUX_HEADER_RESULT([linux/prandom.h], [
+               AC_DEFINE(HAVE_PRANDOM_H, 1,
+                       [prandom.h is present])
+       ])
+]) # LC_HAVE_PRANDOM_HEADER
+
+#
 # LC_HAVE_KTHREAD_USE_MM
 #
 # kernel 5.8 commit f5678e7f2ac31c270334b936352f0ef2fe7dd2b3
@@ -4975,6 +4991,58 @@ AC_DEFUN([LC_HAVE_PAGE_MAPCOUNT_IS_TYPE], [
 ]) # LC_HAVE_PAGE_MAPCOUNT_IS_TYPE
 
 #
+# LC_HAVE_MODULE_IMPORT_STRING_LITERAL
+#
+# Linux v6.13-rc1-2-gcdd30ebb1b9f
+#   module: Convert symbol namespace to string literal
+#
+AC_DEFUN([LC_SRC_HAVE_MODULE_IMPORT_STRING_LITERAL], [
+       LB2_LINUX_TEST_SRC([module_import_ns_uses_export_symbols], [
+               #include <linux/module.h>
+               #include <crypto/internal/cipher.h>
+
+               MODULE_IMPORT_NS(CRYPTO_INTERNAL);
+               u8 salt[16];
+       ],[
+               (void)crypto_cipher_setkey(NULL, salt, sizeof(salt));
+       ],[-Werror])
+])
+AC_DEFUN([LC_HAVE_MODULE_IMPORT_STRING_LITERAL], [
+       LB2_MSG_LINUX_TEST_RESULT([if MODULE_IMPORT_NS() uses export symbols],
+       [module_import_ns_uses_export_symbols], [
+               AC_DEFINE(HAVE_MODULE_IMPORT_USES_EXPORT_SYMBOLS, 1,
+                       [MODULE_IMPORT_NS() needs string literal])
+       ], [
+               # convert CRYPTO_INTERNAL to a string literal for import
+               AC_DEFINE(CRYPTO_INTERNAL, __stringify(CRYPTO_INTERNAL),
+                       [MODULE_IMPORT_NS() needs string literal])
+       ])
+]) # LC_HAVE_MODULE_IMPORT_STRING_LITERAL
+
+#
+# LC_NEED_PAGEPRIVATE2
+#
+# Linux v6.12-rc1-5-gfd15ba4cb00a
+#   ceph: Remove call to PagePrivate2()
+#
+AC_DEFUN([LC_SRC_HAVE_PAGEPRIVATE2], [
+       LB2_LINUX_TEST_SRC([folio_test_private_2], [
+               #include <linux/mm.h>
+       ],[
+               struct page *page = NULL;
+
+               ClearPagePrivate2(page);
+       ],[-Werror])
+])
+AC_DEFUN([LC_HAVE_PAGEPRIVATE2], [
+       LB2_MSG_LINUX_TEST_RESULT([if PagePrivate2() is available],
+       [folio_test_private_2], [
+               AC_DEFINE(HAVE_PAGE_PRIVATE_2, 1,
+                       [PagePrivate2() is available])
+       ])
+]) # LC_HAVE_PAGEPRIVATE2
+
+#
 # LC_PROG_LINUX
 #
 # Lustre linux kernel checks
@@ -5167,6 +5235,7 @@ AC_DEFUN([LC_PROG_LINUX_SRC], [
        LC_SRC_FSCRYPT_DUMMY_CONTEXT_ENABLED
 
        # 5.8
+       LC_SRC_HAVE_PRANDOM_HEADER
        LC_SRC_HAVE_KTHREAD_USE_MM
 
        # 5.9
@@ -5283,6 +5352,10 @@ AC_DEFUN([LC_PROG_LINUX_SRC], [
        LC_SRC_HAVE_FOLIO_TEST_MLOCKED
        LC_SRC_HAVE_PAGE_MAPCOUNT_IS_TYPE
 
+       # 6.13
+       LC_SRC_HAVE_MODULE_IMPORT_STRING_LITERAL
+       LC_SRC_HAVE_PAGEPRIVATE2
+
        # kernel patch to extend integrity interface
        LC_SRC_BIO_INTEGRITY_PREP_FN
 ])
@@ -5489,6 +5562,7 @@ AC_DEFUN([LC_PROG_LINUX_RESULTS], [
        LC_FSCRYPT_DUMMY_CONTEXT_ENABLED
 
        # 5.8
+       LC_HAVE_PRANDOM_HEADER
        LC_HAVE_KTHREAD_USE_MM
 
        # 5.9
@@ -5613,6 +5687,10 @@ AC_DEFUN([LC_PROG_LINUX_RESULTS], [
        LC_HAVE_FOLIO_TEST_MLOCKED
        LC_HAVE_PAGE_MAPCOUNT_IS_TYPE
 
+       # 6.13
+       LC_HAVE_MODULE_IMPORT_STRING_LITERAL
+       LC_HAVE_PAGEPRIVATE2
+
        # kernel patch to extend integrity interface
        LC_BIO_INTEGRITY_PREP_FN
 ])
index 7123a90..7a98d63 100644 (file)
@@ -981,6 +981,12 @@ static inline struct page *wbe_folio_page(struct folio *folio)
 #define wbe_folio_page(page)           (page)
 #endif
 
+#ifndef HAVE_PAGE_PRIVATE_2
+#define PagePrivate2(page)     test_bit(PG_private_2, &((page)->flags))
+#define SetPagePrivate2(page)  set_bit(PG_private_2, &((page)->flags))
+#define ClearPagePrivate2(page)        clear_bit(PG_private_2, &((page)->flags))
+#endif
+
 #ifdef HAVE_FOLIO_MAPCOUNT
 /* clone of fs/proc/internal.h:
  *   folio_precise_page_mapcount(struct folio *folio, struct page *page)
index 944de39..4ac1c3d 100644 (file)
@@ -2,7 +2,9 @@
 
 #include <linux/module.h>
 #include <linux/kernel.h>
-
+#ifdef HAVE_PRANDOM_H
+#include <linux/prandom.h>
+#endif
 #include <libcfs/libcfs.h>
 #include <lustre_dlm.h>
 #include <obd_support.h>