From: Shaun Tancheff Date: Fri, 14 Jul 2023 09:21:45 +0000 (+0700) Subject: LU-16962 build: parallel header checks X-Git-Tag: 2.15.58~75 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=2e025641ef087f159ca000ff3c4acb3ce886b8a3;p=fs%2Flustre-release.git LU-16962 build: parallel header checks Add LB2_CHECK_LINUX_HEADER_SRC and LB2_CHECK_LINUX_HEADER_RESULT macros to use for running header checks in parallel. Migrate (most) header checks to parallel and run a subset early as the results of those tests are required by other configure tests. Test-Parameters: trivial HPE-bug-id: LUS-11710 Signed-off-by: Shaun Tancheff Change-Id: Ia765261179d25e96912e65e31c81824b4507e604 Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/51673 Tested-by: jenkins Tested-by: Maloo Reviewed-by: James Simmons Reviewed-by: Oleg Drokin Reviewed-by: Petros Koutoupis --- diff --git a/config/lustre-build-linux.m4 b/config/lustre-build-linux.m4 index 0fca911..145ab49 100644 --- a/config/lustre-build-linux.m4 +++ b/config/lustre-build-linux.m4 @@ -1071,3 +1071,32 @@ AC_DEFUN([LB2_TEST_CHECK_CONFIG_IM], [ $3 ]) ]) # LB2_TEST_CHECK_CONFIG_IM + +# +# LB2_CHECK_LINUX_HEADER_SRC +# +# $1 - Header file +# $2 - Extra CFLAGS (ex: -Werror) +# +AC_DEFUN([LB2_CHECK_LINUX_HEADER_SRC], [ + TEST_DIR=${TEST_DIR:-${ac_pwd}/_lpb} + UNIQUE_ID=$(echo $1 | tr /. __) + AS_VAR_PUSHDEF([lb_test], [lb_cv_test_${UNIQUE_ID}]) + # Skip test write and build steps if the result is already known. + LB2_LINUX_CONFTEST_C([${UNIQUE_ID}], [LB_LANG_PROGRAM([@%:@include <$1>])]) + LB2_LINUX_CONFTEST_MAKEFILE([${UNIQUE_ID}], [$2]) + AS_VAR_POPDEF([lb_test]) +]) + +# +# LB2_CHECK_LINUX_HEADER_RESULT +# +# $1 - Header file +# $2 - On Success +# $3 - On Failure +# +AC_DEFUN([LB2_CHECK_LINUX_HEADER_RESULT], [ + AC_MSG_CHECKING([for linux header $1]) + UNIQUE_ID=$(echo $1 | tr /. __) + LB2_LINUX_TEST_RESULT([${UNIQUE_ID}], [$2], [$3]) +]) diff --git a/config/lustre-build.m4 b/config/lustre-build.m4 index f7d1cfd..3e8d613 100644 --- a/config/lustre-build.m4 +++ b/config/lustre-build.m4 @@ -169,6 +169,19 @@ AS_IF([test "x$enable_modules" = xyes], [ AS_IF([test "x$enable_server" != xno], [LB_EXT4_SRC_DIR]) LC_PROG_LINUX + # Run 'early' checks. The results of these are used in + # other configure tests: + LIBCFS_SRC_LOCKDEP_IS_HELD + LIBCFS_SRC_HAVE_WAIT_BIT_HEADER + LIBCFS_SRC_LINUX_BLK_INTEGRITY_HEADER + + LB2_LINUX_TEST_COMPILE_ALL([early], + [for available lustre kapi interfaces]) + + LIBCFS_LOCKDEP_IS_HELD + LIBCFS_HAVE_WAIT_BIT_HEADER + LIBCFS_LINUX_BLK_INTEGRITY_HEADER + # Run any parallel compile tests LB_PROG_LINUX_SRC LIBCFS_PROG_LINUX_SRC diff --git a/libcfs/autoconf/lustre-libcfs.m4 b/libcfs/autoconf/lustre-libcfs.m4 index 4cad252..4ff1c5d 100644 --- a/libcfs/autoconf/lustre-libcfs.m4 +++ b/libcfs/autoconf/lustre-libcfs.m4 @@ -819,10 +819,14 @@ AC_DEFUN([LIBCFS_GET_USER_PAGES_6ARG], [ # 4.6 kernel created stringhash.h which moved stuff out of dcache.h # commit f4bcbe792b8f434e32487cff9d9e30ab45a3ce02 # +AC_DEFUN([LIBCFS_SRC_STRINGHASH], [ + LB2_CHECK_LINUX_HEADER_SRC([linux/stringhash.h], [-Werror]) +]) AC_DEFUN([LIBCFS_STRINGHASH], [ -LB_CHECK_LINUX_HEADER([linux/stringhash.h], [ - AC_DEFINE(HAVE_STRINGHASH, 1, - [stringhash.h is present])]) + LB2_CHECK_LINUX_HEADER_RESULT([linux/stringhash.h], [ + AC_DEFINE(HAVE_STRINGHASH, 1, + [stringhash.h is present]) + ]) ]) # LIBCFS_STRINGHASH # @@ -1000,17 +1004,19 @@ AC_DEFUN([LIBCFS_HOTPLUG_STATE_MACHINE], [ ]) # LIBCFS_HOTPLUG_STATE_MACHINE # +# LIBCFS_REFCOUNT_T +# # Kernel version 4.10-rc3 commit f405df5de3170c00e5c54f8b7cf4766044a032ba # introduced refcount_t which is atomic_t plus over flow guards. # -AC_DEFUN([LIBCFS_REFCOUNT_T], [ -tmp_flags="$EXTRA_KCFLAGS" -EXTRA_KCFLAGS="-Werror" -LB_CHECK_LINUX_HEADER([linux/refcount.h], [ - AC_DEFINE(HAVE_REFCOUNT_T, 1, - [refcount_t is supported]) +AC_DEFUN([LIBCFS_SRC_REFCOUNT_T], [ + LB2_CHECK_LINUX_HEADER_SRC([linux/refcount.h], [-Werror]) ]) -EXTRA_KCFLAGS="$tmp_flags" +AC_DEFUN([LIBCFS_REFCOUNT_T], [ + LB2_CHECK_LINUX_HEADER_RESULT([linux/refcount.h], [ + AC_DEFINE(HAVE_REFCOUNT_T, 1, + [refcount_t is supported]) + ]) ]) # LIBCFS_REFCOUNT_T # @@ -1038,10 +1044,14 @@ AC_DEFUN([LIBCFS_MEMALLOC_NORECLAIM], [ # # 4.11 has broken up sched.h into more headers. # +AC_DEFUN([LIBCFS_SRC_SCHED_HEADERS], [ + LB2_CHECK_LINUX_HEADER_SRC([linux/sched/signal.h], [-Werror]) +]) AC_DEFUN([LIBCFS_SCHED_HEADERS], [ -LB_CHECK_LINUX_HEADER([linux/sched/signal.h], [ - AC_DEFINE(HAVE_SCHED_HEADERS, 1, - [linux/sched header directory exist])]) + LB2_CHECK_LINUX_HEADER_RESULT([linux/sched/signal.h], [ + AC_DEFINE(HAVE_SCHED_HEADERS, 1, + [linux/sched header directory exist]) + ]) ]) # LIBCFS_SCHED_HEADERS # @@ -1146,28 +1156,36 @@ AC_DEFUN([LIBCFS_CPUS_READ_LOCK], [ ]) # LIBCFS_CPUS_READ_LOCK # +# LIBCFS_HAVE_PROCESSOR_HEADER +# # Kernel version 4.12-rc3 commit fd851a3cdc196bfc1d229b5f22369069af532bf8 # introduce processor.h # -AC_DEFUN([LIBCFS_HAVE_PROCESSOR_HEADER], [ -tmp_flags="$EXTRA_KCFLAGS" -EXTRA_KCFLAGS="-Werror" -LB_CHECK_LINUX_HEADER([linux/processor.h], [ - AC_DEFINE(HAVE_PROCESSOR_H, 1, - [processor.h is present]) +AC_DEFUN([LIBCFS_SRC_HAVE_PROCESSOR_HEADER], [ + LB2_CHECK_LINUX_HEADER_SRC([linux/processor.h], [-Werror]) ]) -EXTRA_KCFLAGS="$tmp_flags" +AC_DEFUN([LIBCFS_HAVE_PROCESSOR_HEADER], [ + LB2_CHECK_LINUX_HEADER_RESULT([linux/processor.h], [ + AC_DEFINE(HAVE_PROCESSOR_H, 1, + [processor.h is present]) + ],[]) ]) # LIBCFS_HAVE_PROCESSOR_HEADER # +# LIBCFS_HAVE_WAIT_BIT_HEADER +# # Kernel verison 4.12-rc6 commit 5dd43ce2f69d42a71dcacdb13d17d8c0ac1fe8f7 # created wait_bit.h # +AC_DEFUN([LIBCFS_SRC_HAVE_WAIT_BIT_HEADER], [ + LB2_CHECK_LINUX_HEADER_SRC([linux/wait_bit.h], [-Werror]) +]) AC_DEFUN([LIBCFS_HAVE_WAIT_BIT_HEADER], [ -LB_CHECK_LINUX_HEADER([linux/wait_bit.h], [ - AC_DEFINE(HAVE_WAIT_BIT_HEADER_H, 1, - [wait_bit.h is present])]) -]) # LIBCFS_HAVE_WAIT_BIT_HEADER + LB2_CHECK_LINUX_HEADER_RESULT([linux/wait_bit.h], [ + AC_DEFINE(HAVE_WAIT_BIT_HEADER_H, 1, + [wait_bit.h is present]) + ],[]) +]) # LIBCFS_HAVE_PROCESSOR_HEADER # # Kernel version 4.12-rc6 commmit 2055da97389a605c8a00d163d40903afbe413921 @@ -2033,10 +2051,14 @@ AC_DEFUN([LIBCFS_HAVE_KFREE_SENSITIVE], [ # Kernel v5.10-rc1-114-ga24d22b225ce # crypto: sha - split sha.h into sha1.h and sha2.h # +AC_DEFUN([LIBCFS_SRC_HAVE_CRYPTO_SHA2_HEADER], [ + LB2_CHECK_LINUX_HEADER_SRC([crypto/sha2.h], [-Werror]) +]) AC_DEFUN([LIBCFS_HAVE_CRYPTO_SHA2_HEADER], [ -LB_CHECK_LINUX_HEADER([crypto/sha2.h], [ - AC_DEFINE(HAVE_CRYPTO_SHA2_HEADER, 1, - [crypto/sha2.h is present])]) + LB2_CHECK_LINUX_HEADER_RESULT([crypto/sha2.h], [ + AC_DEFINE(HAVE_CRYPTO_SHA2_HEADER, 1, + [crypto/sha2.h is present]) + ]) ]) # LIBCFS_HAVE_CRYPTO_SHA2_HEADER # @@ -2108,14 +2130,14 @@ AC_DEFUN([LIBCFS_LINUX_FORTIFY_STRING_HEADER],[ # Kernel 5.12 commit 0eb76ba29d16df2951d37c54ca279c4e5630b071 # crypto: remove cipher routines from public crypto API # -AC_DEFUN([LIBCFS_HAVE_CIPHER_HEADER], [ -tmp_flags="$EXTRA_KCFLAGS" -EXTRA_KCFLAGS="-Werror" -LB_CHECK_LINUX_HEADER([crypto/internal/cipher.h], [ - AC_DEFINE(HAVE_CIPHER_H, 1, - [crypto/internal/cipher.h is present]) +AC_DEFUN([LIBCFS_SRC_HAVE_CIPHER_HEADER], [ + LB2_CHECK_LINUX_HEADER_SRC([crypto/internal/cipher.h], [-Werror]) ]) -EXTRA_KCFLAGS="$tmp_flags" +AC_DEFUN([LIBCFS_HAVE_CIPHER_HEADER], [ + LB2_CHECK_LINUX_HEADER_RESULT([crypto/internal/cipher.h], [ + AC_DEFINE(HAVE_CIPHER_H, 1, + [crypto/internal/cipher.h is present]) + ]) ]) # LIBCFS_HAVE_CIPHER_HEADER # @@ -2146,13 +2168,14 @@ AC_DEFUN([LIBCFS_HAVE_TASK_IS_RUNNING], [ # Kernel 5.14-rc5 commit c0891ac15f0428ffa81b2e818d416bdf3cb74ab6 # isystem: ship and use stdarg.h # -AC_DEFUN([LIBCFS_LINUX_STDARG_HEADER], [ -tmp_flags="$EXTRA_KCFLAGS" -EXTRA_KCFLAGS="-Werror" -LB_CHECK_LINUX_HEADER([linux/stdarg.h], [ - AC_DEFINE(HAVE_LINUX_STDARG_HEADER, 1, [linux/stdarg.h is present]) +AC_DEFUN([LIBCFS_SRC_LINUX_STDARG_HEADER], [ + LB2_CHECK_LINUX_HEADER_SRC([linux/stdarg.h], [-Werror]) ]) -EXTRA_KCFLAGS="$tmp_flags" +AC_DEFUN([LIBCFS_LINUX_STDARG_HEADER], [ + LB2_CHECK_LINUX_HEADER_RESULT([linux/stdarg.h], [ + AC_DEFINE(HAVE_LINUX_STDARG_HEADER, 1, + [linux/stdarg.h is present]) + ]) ]) # LIBCFS_LINUX_STDARG_HEADER # @@ -2161,14 +2184,14 @@ EXTRA_KCFLAGS="$tmp_flags" # Kernel 5.14 commit f39650de687e35766572ac89dbcd16a5911e2f0a # kernel.h: split out panic and oops helpers # -AC_DEFUN([LIBCFS_HAVE_PANIC_NOTIFIER_HEADER], [ -tmp_flags="$EXTRA_KCFLAGS" -EXTRA_KCFLAGS="-Werror" -LB_CHECK_LINUX_HEADER([linux/panic_notifier.h], [ - AC_DEFINE(HAVE_PANIC_NOTIFIER_H, 1, - [linux/panic_notifier.h is present]) +AC_DEFUN([LIBCFS_SRC_HAVE_PANIC_NOTIFIER_HEADER], [ + LB2_CHECK_LINUX_HEADER_SRC([linux/panic_notifier.h], [-Werror]) ]) -EXTRA_KCFLAGS="$tmp_flags" +AC_DEFUN([LIBCFS_HAVE_PANIC_NOTIFIER_HEADER], [ + LB2_CHECK_LINUX_HEADER_RESULT([linux/panic_notifier.h], [ + AC_DEFINE(HAVE_PANIC_NOTIFIER_H, 1, + [linux/panic_notifier.h is present]) + ]) ]) # LIBCFS_HAVE_PANIC_NOTIFIER_HEADER # @@ -2198,14 +2221,14 @@ AC_DEFUN([LIBCFS_PARAM_SET_UINT_MINMAX],[ # Kernel 5.15-rc6 commit fe45e630a1035aea94c29016f2598bbde149bbe3 # block: move integrity handling out of # -AC_DEFUN([LIBCFS_LINUX_BLK_INTEGRITY_HEADER], [ -tmp_flags="$EXTRA_KCFLAGS" -EXTRA_KCFLAGS="-Werror" -LB_CHECK_LINUX_HEADER([linux/blk-integrity.h], [ - AC_DEFINE(HAVE_LINUX_BLK_INTEGRITY_HEADER, 1, - [linux/blk-integrity.h is present]) +AC_DEFUN([LIBCFS_SRC_LINUX_BLK_INTEGRITY_HEADER], [ + LB2_CHECK_LINUX_HEADER_SRC([linux/blk-integrity.h], [-Werror]) ]) -EXTRA_KCFLAGS="$tmp_flags" +AC_DEFUN([LIBCFS_LINUX_BLK_INTEGRITY_HEADER], [ + LB2_CHECK_LINUX_HEADER_RESULT([linux/blk-integrity.h], [ + AC_DEFINE(HAVE_LINUX_BLK_INTEGRITY_HEADER, 1, + [linux/blk-integrity.h is present]) + ]) ]) # LIBCFS_LINUX_BLK_INTEGRITY_HEADER # @@ -2367,6 +2390,7 @@ AC_DEFUN([LIBCFS_PROG_LINUX_SRC], [ LIBCFS_SRC_BROKEN_HASH_64 LIBCFS_SRC_STACKTRACE_OPS_ADDRESS_RETURN_INT LIBCFS_SRC_GET_USER_PAGES_6ARG + LIBCFS_SRC_STRINGHASH # 4.7 LIBCFS_SRC_RHASHTABLE_INSERT_FAST LIBCFS_SRC_RHASHTABLE_WALK_INIT_3ARG @@ -2382,12 +2406,15 @@ AC_DEFUN([LIBCFS_PROG_LINUX_SRC], [ # 4.11 LIBCFS_SRC_NL_EXT_ACK LIBCFS_SRC_RHASHTABLE_LOOKUP_GET_INSERT_FAST + LIBCFS_SRC_SCHED_HEADERS LIBCFS_SRC_KREF_READ LIBCFS_SRC_RHT_BUCKET_VAR # 4.12 LIBCFS_SRC_CPUS_READ_LOCK + LIBCFS_SRC_HAVE_PROCESSOR_HEADER LIBCFS_SRC_WAIT_QUEUE_TASK_LIST_RENAME LIBCFS_SRC_WAIT_BIT_QUEUE_ENTRY_EXISTS + LIBCFS_SRC_REFCOUNT_T LIBCFS_SRC_MEMALLOC_NORECLAIM # 4.13 LIBCFS_SRC_NLA_STRDUP @@ -2397,7 +2424,6 @@ AC_DEFUN([LIBCFS_PROG_LINUX_SRC], [ LIBCFS_SRC_NEW_KERNEL_WRITE LIBCFS_SRC_NEW_KERNEL_READ # 4.15 - LIBCFS_SRC_LOCKDEP_IS_HELD LIBCFS_SRC_BITMAP_TO_ARR32 LIBCFS_SRC_TIMER_SETUP # 4.16 @@ -2440,12 +2466,17 @@ AC_DEFUN([LIBCFS_PROG_LINUX_SRC], [ LIBCFS_SRC_SEC_RELEASE_SECCTX # 5.10 LIBCFS_SRC_HAVE_KFREE_SENSITIVE + LIBCFS_SRC_HAVE_CRYPTO_SHA2_HEADER LIBCFS_SRC_HAVE_LIST_CMP_FUNC_T LIBCFS_SRC_NLA_STRLCPY # 5.12 LIBCFS_SRC_LINUX_FORTIFY_STRING_HEADER + LIBCFS_SRC_HAVE_CIPHER_HEADER # 5.13 LIBCFS_SRC_HAVE_TASK_IS_RUNNING + # 5.14 + LIBCFS_SRC_LINUX_STDARG_HEADER + LIBCFS_SRC_HAVE_PANIC_NOTIFIER_HEADER # 5.15 LIBCFS_SRC_PARAM_SET_UINT_MINMAX # 5.17 @@ -2508,6 +2539,7 @@ AC_DEFUN([LIBCFS_PROG_LINUX_RESULTS], [ LIBCFS_BROKEN_HASH_64 LIBCFS_STACKTRACE_OPS_ADDRESS_RETURN_INT LIBCFS_GET_USER_PAGES_6ARG + LIBCFS_STRINGHASH # 4.7 LIBCFS_RHASHTABLE_INSERT_FAST LIBCFS_RHASHTABLE_WALK_INIT_3ARG @@ -2523,12 +2555,15 @@ AC_DEFUN([LIBCFS_PROG_LINUX_RESULTS], [ # 4.11 LIBCFS_NL_EXT_ACK LIBCFS_RHASHTABLE_LOOKUP_GET_INSERT_FAST + LIBCFS_SCHED_HEADERS LIBCFS_KREF_READ LIBCFS_RHT_BUCKET_VAR # 4.12 LIBCFS_CPUS_READ_LOCK + LIBCFS_HAVE_PROCESSOR_HEADER LIBCFS_WAIT_QUEUE_TASK_LIST_RENAME LIBCFS_WAIT_BIT_QUEUE_ENTRY_EXISTS + LIBCFS_REFCOUNT_T LIBCFS_MEMALLOC_NORECLAIM # 4.13 LIBCFS_NLA_STRDUP @@ -2538,7 +2573,6 @@ AC_DEFUN([LIBCFS_PROG_LINUX_RESULTS], [ LIBCFS_NEW_KERNEL_WRITE LIBCFS_NEW_KERNEL_READ # 4.15 - LIBCFS_LOCKDEP_IS_HELD LIBCFS_BITMAP_TO_ARR32 LIBCFS_TIMER_SETUP # 4.16 @@ -2581,12 +2615,17 @@ AC_DEFUN([LIBCFS_PROG_LINUX_RESULTS], [ LIBCFS_SEC_RELEASE_SECCTX # 5.10 LIBCFS_HAVE_KFREE_SENSITIVE + LIBCFS_HAVE_CRYPTO_SHA2_HEADER LIBCFS_HAVE_LIST_CMP_FUNC_T LIBCFS_NLA_STRLCPY # 5.12 LIBCFS_LINUX_FORTIFY_STRING_HEADER + LIBCFS_HAVE_CIPHER_HEADER # 5.13 LIBCFS_HAVE_TASK_IS_RUNNING + # 5.14 + LIBCFS_LINUX_STDARG_HEADER + LIBCFS_HAVE_PANIC_NOTIFIER_HEADER # 5.15 LIBCFS_PARAM_SET_UINT_MINMAX # 5.17 @@ -2607,31 +2646,14 @@ AC_MSG_NOTICE([LibCFS kernel checks ==============================================================================]) LIBCFS_CONFIG_PANIC_DUMPLOG -# 4.6 - Header Check -LIBCFS_STRINGHASH # 4.6 - Export Check LIBCFS_EXPORT_KSET_FIND_OBJ -# 4.10 - Header Check -LIBCFS_REFCOUNT_T -# 4.11 - Header Check -LIBCFS_SCHED_HEADERS -# 4.13 - Header Checks -LIBCFS_HAVE_PROCESSOR_HEADER -LIBCFS_HAVE_WAIT_BIT_HEADER # 4.13 - Export Check LIBCFS_EXPORT_SAVE_STACK_TRACE_TSK -# 5.0 - Header Check +# 5.0 - Export Check LIBCFS_GENRADIX -# 5.7 - Export Check and Header Check +# 5.7 - Export Check LIBCFS_KALLSYMS_LOOKUP -LIBCFS_HAVE_CRYPTO_SHA2_HEADER -# 5.12 - Header Check -LIBCFS_HAVE_CIPHER_HEADER -# 5.14 - Header Checks -LIBCFS_LINUX_STDARG_HEADER -LIBCFS_HAVE_PANIC_NOTIFIER_HEADER -# 5.15 - Header Check -LIBCFS_LINUX_BLK_INTEGRITY_HEADER ]) # LIBCFS_PROG_LINUX #