From: Shaun Tancheff Date: Wed, 19 Feb 2025 09:38:10 +0000 (+0700) Subject: LU-18475 build: compatibility updates for kernel 6.13 X-Git-Tag: 2.16.54~13 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=70a3b9066883b45541c40d9177bf8bd2035be6d4;p=fs%2Flustre-release.git LU-18475 build: compatibility updates for kernel 6.13 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 Change-Id: I6e1e43bad2fff967bbfce2e3df0f0f6ff251e413 Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/57906 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Oleg Drokin Reviewed-by: Jian Yu Reviewed-by: Timothy Day Reviewed-by: James Simmons --- diff --git a/autoMakefile.am b/autoMakefile.am index ba77162..7de2025 100644 --- a/autoMakefile.am +++ b/autoMakefile.am @@ -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 diff --git a/config/lustre-build-linux.m4 b/config/lustre-build-linux.m4 index 8b9e524..519ddba 100644 --- a/config/lustre-build-linux.m4 +++ b/config/lustre-build-linux.m4 @@ -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 diff --git a/config/lustre-core.m4 b/config/lustre-core.m4 index e516721..bb9bc69 100644 --- a/config/lustre-core.m4 +++ b/config/lustre-core.m4 @@ -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 + #include + + 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 + ],[ + 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 ]) diff --git a/lustre/include/lustre_compat.h b/lustre/include/lustre_compat.h index 7123a90..7a98d63 100644 --- a/lustre/include/lustre_compat.h +++ b/lustre/include/lustre_compat.h @@ -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) diff --git a/lustre/kunit/ldlm_extent.c b/lustre/kunit/ldlm_extent.c index 944de39..4ac1c3d 100644 --- a/lustre/kunit/ldlm_extent.c +++ b/lustre/kunit/ldlm_extent.c @@ -2,7 +2,9 @@ #include #include - +#ifdef HAVE_PRANDOM_H +#include +#endif #include #include #include