# # 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 # v4.11-12447-g104b4e5139fe # # Renamed __percpu_counter_add to percpu_counter_add_batch to clarify # that the __ wasn't less safe, just took an extra parameter. # ifneq (,$(shell grep 'percpu_counter_add_batch' include/linux/percpu_counter.h)) ccflags-y += -DKC_PERCPU_COUNTER_ADD_BATCH endif # # v4.11-4550-g7dea19f9ee63 # # Introduced memalloc_nofs_{save,restore} preferred instead of _noio_. # ifneq (,$(shell grep 'memalloc_nofs_save' include/linux/sched/mm.h)) ccflags-y += -DKC_MEMALLOC_NOFS_SAVE endif # # v4.7-12414-g1eff9d322a44 # # Renamed bi_rw to bi_opf to force old code to catch up. We use it as a # single switch between old and new bio structures. # ifneq (,$(shell grep 'bi_opf' include/linux/blk_types.h)) ccflags-y += -DKC_BIO_BI_OPF endif # # v4.12-rc2-201-g4e4cbee93d56 # # Moves to bi_status BLK_STS_ API instead of having a mix of error # end_io args or bi_error. # ifneq (,$(shell grep 'bi_status' include/linux/blk_types.h)) ccflags-y += -DKC_BIO_BI_STATUS endif # # v3.11-8765-ga0b02131c5fc # # Remove the old ->shrink() API, ->{scan,count}_objects is preferred. # ifneq (,$(shell grep '(*shrink)' include/linux/shrinker.h)) ccflags-y += -DKC_SHRINKER_SHRINK endif # # v3.19-4777-g6bec00352861 # # backing_dev_info is removed from address_space. Instead we need to use # inode_to_bdi() inline from . # ifneq (,$(shell grep 'struct backing_dev_info.*backing_dev_info' include/linux/fs.h)) ccflags-y += -DKC_LINUX_BACKING_DEV_INFO=1 endif # # v4.3-9290-ge409de992e3e # # xattr handlers are now passed a struct that contains `flags` # ifneq (,$(shell grep 'int...get..const struct xattr_handler.*struct dentry.*dentry,' include/linux/xattr.h)) ccflags-y += -DKC_XATTR_STRUCT_XATTR_HANDLER=1 endif