# # We try to detect the specific api incompatibilities with simple tests # because distros regularly backport features without changing the # version. # ccflags-y += -include $(src)/kernelcompat.h # # v3.10-rc6-21-gbb6f619b3a49 # # _readdir changes from fop->readdir() to fop->iterate() and from # filldir(dirent) to dir_emit(ctx). # ifneq (,$(shell grep 'iterate.*dir_context' include/linux/fs.h)) ccflags-y += -DKC_ITERATE_DIR_CONTEXT endif # # v3.10-rc6-23-g5f99f4e79abc # # Helpers including dir_emit_dots() are added in the process of # switching dcache_readdir() from fop->readdir() to fop->iterate() # ifneq (,$(shell grep 'dir_emit_dots' include/linux/fs.h)) ccflags-y += -DKC_DIR_EMIT_DOTS endif # # v3.18-rc2-19-gb5ae6b15bd73 # # Folds d_materialise_unique into d_splice_alias. Note reversal # of arguments (Also note Documentation/filesystems/porting.rst) # ifneq (,$(shell grep 'd_materialise_unique' include/linux/dcache.h)) ccflags-y += -DKC_D_MATERIALISE_UNIQUE=1 endif # # RHEL extended the fop struct so to use it we have to set # a flag to indicate that the struct is large enough and # contains the pointer. # ifneq (,$(shell grep 'FMODE_KABI_ITERATE' include/linux/fs.h)) ccflags-y += -DKC_FMODE_KABI_ITERATE endif # # v4.7-rc2-23-g0d4d717f2583 # # Added user_ns argument to posix_acl_valid # ifneq (,$(shell grep 'posix_acl_valid.*user_namespace' include/linux/posix_acl.h)) ccflags-y += -DKC_POSIX_ACL_VALID_USER_NS endif # # v5.3-12296-g6d2052d188d9 # # The RBCOMPUTE function is now passed an extra flag, and should return a bool # to indicate whether the propagated callback should stop or not. # ifneq (,$(shell grep 'static inline bool RBNAME.*_compute_max' include/linux/rbtree_augmented.h)) ccflags-y += -DKC_RB_TREE_AUGMENTED_COMPUTE_MAX endif # # v3.13-25-g37bc15392a23 # # Renames posix_acl_create to __posix_acl_create and provide some # new interfaces for creating ACLs # ifneq (,$(shell grep '__posix_acl_create' include/linux/posix_acl.h)) ccflags-y += -DKC___POSIX_ACL_CREATE endif # # v4.8-rc1-29-g31051c85b5e2 # # inode_change_ok() removed - replace with setattr_prepare() # ifneq (,$(shell grep 'extern int setattr_prepare' include/linux/fs.h)) ccflags-y += -DKC_SETATTR_PREPARE endif # # v4.15-rc3-4-gae5e165d855d # # linux/iversion.h needs to manually be included for code that # manipulates this field. # ifneq (,$(shell grep -s 'define _LINUX_IVERSION_H' include/linux/iversion.h)) ccflags-y += -DKC_NEED_LINUX_IVERSION_H=1 endif