X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=libcfs%2Fautoconf%2Flustre-libcfs.m4;h=82a4ebc791e853f86d4457a353e7a377a7d327d2;hp=2df490adc643c1937ef03a677bc5587058c4a4a4;hb=604c266a175b72500ef99793652b64ed4f842b2c;hpb=457e36a2993fcefe18c571ff5b798e3ab4aec81a diff --git a/libcfs/autoconf/lustre-libcfs.m4 b/libcfs/autoconf/lustre-libcfs.m4 index 2df490a..82a4ebc 100644 --- a/libcfs/autoconf/lustre-libcfs.m4 +++ b/libcfs/autoconf/lustre-libcfs.m4 @@ -85,22 +85,6 @@ stacktrace_ops_warning, [ ]) # LIBCFS_STACKTRACE_WARNING # -# LIBCFS_REINIT_COMPLETION -# -AC_DEFUN([LIBCFS_REINIT_COMPLETION], [ -LB_CHECK_COMPILE([if 'reinit_completion' exists], -reinit_completion, [ - #include -],[ - struct completion x; - reinit_completion(&x); -],[ - AC_DEFINE(HAVE_REINIT_COMPLETION, 1, - [reinit_completion is exist]) -]) -]) # LIBCFS_REINIT_COMPLETION - -# # LC_SHRINKER_WANT_SHRINK_PTR # # RHEL6/2.6.32 want to have pointer to shrinker self pointer in handler function @@ -239,30 +223,6 @@ i_uid_read, [ ]) # LIBCFS_I_UID_READ # -# LIBCFS_SOCK_ALLOC_FILE -# -# FC18 3.7.2-201 unexport sock_map_fd() change to -# use sock_alloc_file(). -# upstream commit 56b31d1c9f1e6a3ad92e7bfe252721e05d92b285 -# -AC_DEFUN([LIBCFS_SOCK_ALLOC_FILE], [ -LB_CHECK_EXPORT([sock_alloc_file], [net/socket.c], [ - LB_CHECK_COMPILE([if 'sock_alloc_file' takes 3 arguments], - sock_alloc_file_3args, [ - #include - ],[ - sock_alloc_file(NULL, 0, NULL); - ],[ - AC_DEFINE(HAVE_SOCK_ALLOC_FILE_3ARGS, 1, - [sock_alloc_file takes 3 arguments]) - ],[ - AC_DEFINE(HAVE_SOCK_ALLOC_FILE, 1, - [sock_alloc_file is exported]) - ]) -]) -]) # LIBCFS_SOCK_ALLOC_FILE - -# # LIBCFS_HAVE_CRC32 # AC_DEFUN([LIBCFS_HAVE_CRC32], [ @@ -542,8 +502,8 @@ ktime_to_timespec64, [ #include #include ],[ + ktime_t now = ktime_set(0, 0); struct timespec64 ts; - ktime_t now = { }; ts = ktime_to_timespec64(now); ],[ @@ -605,27 +565,6 @@ ktime_get_seconds, [ ]) # LIBCFS_KTIME_GET_SECONDS # -# Kernel version 3.19 commit 5aaba36318e5995e8c95d077a46d9a4d00fcc1cd -# This patch creates a new helper function cpumap_print_to_pagebuf in -# cpumask.h using newly added bitmap_print_to_pagebuf and consolidates -# most of those sysfs functions using the new helper function. -# -AC_DEFUN([LIBCFS_HAVE_CPUMASK_PRINT_TO_PAGEBUF],[ -LB_CHECK_COMPILE([does function 'cpumap_print_to_pagebuf' exist], -cpumap_print_to_pagebuf, [ - #include -],[ - int n; - char *buf = NULL; - const struct cpumask *mask = NULL; - n = cpumap_print_to_pagebuf(true, buf, mask); -],[ - AC_DEFINE(HAVE_CPUMASK_PRINT_TO_PAGEBUF, 1, - [cpumap_print_to_pagebuf is available]) -]) -]) # LIBCFS_HAVE_CPUMASK_PRINT_TO_PAGEBUF - -# # Kernel version 4.0 commit 41fbf3b39d5eca01527338b4d0ee15ee1ae1023c # introduced the helper function ktime_ms_delta. # @@ -736,6 +675,22 @@ LB_CHECK_EXPORT([kset_find_obj], [lib/kobject.c], ]) # LIBCFS_EXPORT_KSET_FIND_OBJ # +# Kernel version 4.6+ commit ef703f49a6c5b909a85149bb6625c4ed0d697186 +# fixed the brokenness of hash_64(). The fix removed GOLDEN_RATIO_PRIME_64 +# since it was a poor prime value. +# +AC_DEFUN([LIBCFS_BROKEN_HASH_64], [ +LB_CHECK_COMPILE([kernel has fixed hash_64()], +broken_hash_64, [ + #include +],[ + int tmp = GOLDEN_RATIO_PRIME_64; +],[ + AC_DEFINE(HAVE_BROKEN_HASH_64, 1, [kernel hash_64() is broken]) +]) +]) # LIBCFS_BROKEN_HASH_64 + +# # LIBCFS_STACKTRACE_OPS_ADDRESS_RETURN_INT # # linux 4.6 kernel changed stacktrace_ops address to return an int @@ -773,6 +728,82 @@ get_user_pages_6arg, [ ]) # LIBCFS_GET_USER_PAGES_6ARG # +# LIBCFS_STRINGHASH +# +# 4.6 kernel created stringhash.h which moved stuff out of dcache.h +# commit f4bcbe792b8f434e32487cff9d9e30ab45a3ce02 +# +AC_DEFUN([LIBCFS_STRINGHASH], [ +LB_CHECK_LINUX_HEADER([linux/stringhash.h], [ + AC_DEFINE(HAVE_STRINGHASH, 1, + [stringhash.h is present])]) +]) # LIBCFS_STRINGHASH + +# +# LIBCFS_RHASHTABLE_INSERT_FAST +# +# 4.7+ kernel commit 5ca8cc5bf11faed257c762018aea9106d529232f +# changed __rhashtable_insert_fast to support the new function +# rhashtable_lookup_get_insert_key(). +# +AC_DEFUN([LIBCFS_RHASHTABLE_INSERT_FAST], [ +tmp_flags="$EXTRA_KCFLAGS" +EXTRA_KCFLAGS="-Werror" +LB_CHECK_COMPILE([if internal '__rhashtable_insert_fast()' returns int], +rhashtable_insert_fast, [ + #include +],[ + const struct rhashtable_params params = { 0 }; + int rc; + + rc = __rhashtable_insert_fast(NULL, NULL, NULL, params); +],[ + AC_DEFINE(HAVE_HASHTABLE_INSERT_FAST_RETURN_INT, 1, + ['__rhashtable_insert_fast()' returns int]) +]) +EXTRA_KCFLAGS="$tmp_flags" +]) # LIBCFS_RHASHTABLE_INSERT_FAST + +# +# Kernel version 4.8-rc6 commit ca26893f05e86497a86732768ec53cd38c0819ca +# introduced rhashtable_lookup +# +AC_DEFUN([LIBCFS_RHASHTABLE_LOOKUP], [ +LB_CHECK_COMPILE([if 'rhashtable_lookup' exist], +rhashtable_lookup, [ + #include +],[ + const struct rhashtable_params params = { 0 }; + void *ret; + + ret = rhashtable_lookup(NULL, NULL, params); +],[ + AC_DEFINE(HAVE_RHASHTABLE_LOOKUP, 1, + [rhashtable_lookup() is available]) +]) +]) # LIBCFS_RHASHTABLE_LOOKUP + +# +# LIBCFS_RHLTABLE +# Kernel version 4.8-rc6 commit ca26893f05e86497a86732768ec53cd38c0819ca +# created the rhlist interface to allow inserting duplicate objects +# into the same table. +# +AC_DEFUN([LIBCFS_RHLTABLE], [ +LB_CHECK_COMPILE([does 'struct rhltable' exist], +rhtable, [ + #include +],[ + struct rhltable *hlt; + + rhltable_destroy(hlt); +],[ + AC_DEFINE(HAVE_RHLTABLE, 1, + [struct rhltable exist]) +]) +]) # LIBCFS_RHLTABLE + +# # LIBCFS_STACKTRACE_OPS # # Kernel version 4.8 commit c8fe4609827aedc9c4b45de80e7cdc8ccfa8541b @@ -838,6 +869,42 @@ LB_CHECK_LINUX_HEADER([linux/sched/signal.h], [ ]) # LIBCFS_SCHED_HEADERS # +# Kernel version 4.11 commit f9fe1c12d126f9887441fa5bb165046f30ddd4b5 +# introduced rhashtable_lookup_get_insert_fast +# +AC_DEFUN([LIBCFS_RHASHTABLE_LOOKUP_GET_INSERT_FAST], [ +LB_CHECK_COMPILE([if 'rhashtable_lookup_get_insert_fast' exist], +rhashtable_lookup_get_insert_fast, [ + #include +],[ + const struct rhashtable_params params = { 0 }; + void *ret; + + ret = rhashtable_lookup_get_insert_fast(NULL, NULL, params); +],[ + AC_DEFINE(HAVE_RHASHTABLE_LOOKUP_GET_INSERT_FAST, 1, + [rhashtable_lookup_get_insert_fast() is available]) +]) +]) # LIBCFS_RHASHTABLE_LOOKUP_GET_INSERT_FAST + +# +# Kernel version 4.12-rc3 f9727a17db9bab71ddae91f74f11a8a2f9a0ece6 +# renamed uuid_be to uuid_t +# +AC_DEFUN([LIBCFS_UUID_T], [ +LB_CHECK_COMPILE([if 'uuid_t' exist], +uuid_t, [ + #include +],[ + uuid_t uuid; + + memset(uuid.b, 0, 16); +],[ + AC_DEFINE(HAVE_UUID_T, 1, ['uuid_t' exist]) +]) +]) # LIBCFS_UUID_T + +# # LIBCFS_WAIT_QUEUE_ENTRY # # Kernel version 4.13 ac6424b981bce1c4bc55675c6ce11bfe1bbfa64f @@ -882,6 +949,44 @@ EXTRA_KCFLAGS="$tmp_flags" ]) # LIBCFS_NEW_KERNEL_WRITE # +# LIBCFS_DEFINE_TIMER +# +# Kernel version 4.14 commit 1d27e3e2252ba9d949ca82fbdb73cde102cb2067 +# remove expires and data arguments from DEFINE_TIMER. Also the callback +# when from using unsigned long argument to using struct timer_list pointer. +# +AC_DEFUN([LIBCFS_DEFINE_TIMER], [ +LB_CHECK_COMPILE([if DEFINE_TIMER takes only 2 arguments], +define_timer, [ + #include +],[ + static DEFINE_TIMER(my_timer, NULL); +],[ + AC_DEFINE(HAVE_NEW_DEFINE_TIMER, 1, + [DEFINE_TIMER uses only 2 arguements]) +]) +]) # LIBCFS_DEFINE_TIMER + +# +# LIBCFS_TIMER_SETUP +# +# Kernel version 4.15 commit e99e88a9d2b067465adaa9c111ada99a041bef9a +# setup_timer() was replaced by timer_setup(), where the callback +# argument is the structure already holding the struct timer_list. +# +AC_DEFUN([LIBCFS_TIMER_SETUP], [ +LB_CHECK_COMPILE([if setup_timer has been replaced with timer_setup], +timer_setup, [ + #include +],[ + timer_setup(NULL, NULL, 0); +],[ + AC_DEFINE(HAVE_TIMER_SETUP, 1, + [timer_setup has replaced setup_timer]) +]) +]) # LIBCFS_TIMER_SETUP + +# # LIBCFS_PROG_LINUX # # LibCFS linux kernel checks @@ -906,12 +1011,9 @@ LIBCFS_DUMP_TRACE_ADDRESS LC_SHRINK_CONTROL # 3.0 LIBCFS_STACKTRACE_WARNING -LIBCFS_REINIT_COMPLETION # 3.5 LIBCFS_PROCESS_NAMESPACE LIBCFS_I_UID_READ -# 3.7 -LIBCFS_SOCK_ALLOC_FILE # 3.8 LIBCFS_HAVE_CRC32 LIBCFS_ENABLE_CRC32_ACCEL @@ -938,7 +1040,6 @@ LIBCFS_TIMESPEC64_SUB LIBCFS_TIMESPEC64_TO_KTIME # 3.19 LIBCFS_KTIME_GET_SECONDS -LIBCFS_HAVE_CPUMASK_PRINT_TO_PAGEBUF # 4.0 LIBCFS_KTIME_MS_DELTA # 4.1 @@ -952,20 +1053,32 @@ LIBCFS_KSTRTOBOOL_FROM_USER LIBCFS_CRYPTO_HASH_HELPERS LIBCFS_EXPORT_KSET_FIND_OBJ # 4.6 +LIBCFS_BROKEN_HASH_64 LIBCFS_STACKTRACE_OPS_ADDRESS_RETURN_INT LIBCFS_GET_USER_PAGES_6ARG +LIBCFS_STRINGHASH +# 4.7 +LIBCFS_RHASHTABLE_INSERT_FAST # 4.8 +LIBCFS_RHASHTABLE_LOOKUP +LIBCFS_RHLTABLE LIBCFS_STACKTRACE_OPS # 4.9 LIBCFS_GET_USER_PAGES_GUP_FLAGS # 4.10 LIBCFS_HOTPLUG_STATE_MACHINE # 4.11 +LIBCFS_RHASHTABLE_LOOKUP_GET_INSERT_FAST LIBCFS_SCHED_HEADERS +# 4.12 +LIBCFS_UUID_T # 4.13 LIBCFS_WAIT_QUEUE_ENTRY # 4.14 +LIBCFS_DEFINE_TIMER LIBCFS_NEW_KERNEL_WRITE +# 4.15 +LIBCFS_TIMER_SETUP ]) # LIBCFS_PROG_LINUX #