])
]) # LC_HAVE_PROJECT_QUOTA
+AC_DEFUN([LC_HAVE_GET_INODE_USAGE], [
+LB_CHECK_COMPILE([if get_inode_usage exists],
+get_inode_usage, [
+ struct inode;
+ #include <linux/quota.h>
+],[
+ struct dquot_operations ops = { };
+
+ ops.get_inode_usage(NULL, NULL);
+],[
+ AC_DEFINE(HAVE_GET_INODE_USAGE, 1,
+ [get_inode_usage function exists])
+])
+]) # LC_HAVE_GET_INODE_USAGE
+
#
# LC_INVALIDATE_RANGE
#
])
]) # LC_BIO_INTEGRITY_PREP_FN
+# LC_BIO_INTEGRITY_PREP_FN_RETURNS_BOOL
+#
+# 13 kernel integrity API has changed and in 4.13+
+# (as well as in rhel 8.4) bio_integrity_prep() returns boolean true
+# on success.
+#
+AC_DEFUN([LC_BIO_INTEGRITY_PREP_FN_RETURNS_BOOL], [
+LB_CHECK_COMPILE([if 'bio_integrity_prep_fn' returns bool],
+bio_integrity_prep, [
+ #include <linux/bio.h>
+ #include <linux/typecheck.h>
+],[
+ #pragma GCC diagnostic warning "-Werror"
+ typedef bool (*bio_integrity_prep_type)(struct bio *bio) ;
+
+ typecheck_fn(bio_integrity_prep_type, bio_integrity_prep);
+],[
+ AC_DEFINE(HAVE_BIO_INTEGRITY_PREP_FN_RETURNS_BOOL, 1,
+ [bio_integrity_prep_fn returns bool])
+])
+]) # LC_BIO_INTEGRITY_PREP_FN_RETURNS_BOOL
+
#
# LC_HAVE_BI_OPF
#
vm_fault_address, [
#include <linux/mm.h>
],[
- struct vm_fault vmf;
- vmf.address = NULL;
+ unsigned long vaddr = ((struct vm_fault *)0)->address;
+ (void)vaddr;
],[
AC_DEFINE(HAVE_VM_FAULT_ADDRESS, 1,
[virtual_address has been replaced by address field])
]) # LC_VM_FAULT_RETRY
#
+# LC_ALLOC_FILE_PSEUDO
+#
+# kernel 4.18-rc1 commit d93aa9d82aea80b80f225dbf9c7986df444d8106
+# new wrapper: alloc_file_pseudo()
+#
+AC_DEFUN([LC_ALLOC_FILE_PSEUDO], [
+LB_CHECK_COMPILE([if 'alloc_file_pseudo' is defined],
+alloc_file_pseudo, [
+ #include <linux/file.h>
+],[
+ struct file *file;
+ file = alloc_file_pseudo(NULL, NULL, "[test]",
+ 00000002, NULL);
+],[
+ AC_DEFINE(HAVE_ALLOC_FILE_PSEUDO, 1,
+ ['alloc_file_pseudo' exist])
+])
+]) # LC_ALLOC_FILE_PSEUDO
+
+#
# LC_INODE_TIMESPEC64
#
# kernel 4.17-rc7 commit 8efd6894ff089adeeac7cb9f32125b85d963d1bc
EXTRA_KCFLAGS="$tmp_flags"
]) # LC_LM_COMPARE_OWNER_EXISTS
-AC_DEFUN([LC_PROG_LINUX_SRC], [])
-AC_DEFUN([LC_PROG_LINUX_RESULTS], [])
-
#
# LC_FSCRYPT_SUPPORT
#
]) # LC_FSCRYPT_SUPPORT
#
+# LC_HAVE_USER_NAMESPACE_ARG
+#
+# kernel 5.12 commit 549c7297717c32ee53f156cd949e055e601f67bb
+# fs: make helpers idmap mount aware
+# Extend some inode methods with an additional user namespace argument.
+#
+AC_DEFUN([LC_HAVE_USER_NAMESPACE_ARG], [
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
+LB_CHECK_COMPILE([if 'inode_operations' members have user namespace argument],
+user_namespace_argument, [
+ #include <linux/fs.h>
+],[
+ ((struct inode_operations *)1)->getattr((struct user_namespace *)NULL,
+ NULL, NULL, 0, 0);
+],[
+ AC_DEFINE(HAVE_USER_NAMESPACE_ARG, 1,
+ ['inode_operations' members have user namespace argument])
+])
+EXTRA_KCFLAGS="$tmp_flags"
+]) # LC_HAVE_USER_NAMESPACE_ARG
+
+AC_DEFUN([LC_PROG_LINUX_SRC], [])
+AC_DEFUN([LC_PROG_LINUX_RESULTS], [])
+
+#
# LC_PROG_LINUX
#
# Lustre linux kernel checks
# 4.13
LC_BIO_INTEGRITY_ENABLED
+ LC_BIO_INTEGRITY_PREP_FN_RETURNS_BOOL
+ LC_HAVE_GET_INODE_USAGE
# 4.14
LC_PAGEVEC_INIT_ONE_PARAM
LC_I_PAGES
# 4.18
+ LC_ALLOC_FILE_PSEUDO
LC_INODE_TIMESPEC64
# 4.20
LC_BIO_BI_PHYS_SEGMENTS
LC_LM_COMPARE_OWNER_EXISTS
+ # 5.12
+ LC_HAVE_USER_NAMESPACE_ARG
+
# kernel patch to extend integrity interface
LC_BIO_INTEGRITY_PREP_FN
lustre/include/Makefile
lustre/include/lustre/Makefile
lustre/include/uapi/linux/lustre/Makefile
+lustre/kernel_patches/targets/4.18-rhel8.5.target
lustre/kernel_patches/targets/4.18-rhel8.4.target
lustre/kernel_patches/targets/4.18-rhel8.3.target
lustre/kernel_patches/targets/4.18-rhel8.2.target
lustre/kernel_patches/targets/4.12-sles12sp4.target
lustre/kernel_patches/targets/4.12-sles12sp5.target
lustre/kernel_patches/targets/4.12-sles15sp1.target
-lustre/kernel_patches/targets/4.12-sles15sp2.target
+lustre/kernel_patches/targets/5.3-sles15sp2.target
lustre/kernel_patches/targets/5.3-sles15sp3.target
lustre/kernel_patches/targets/3.x-fc18.target
lustre/ldlm/Makefile