]) # LC_HAVE_AIO_COMPLETE
#
+# LC_HAVE_IS_ROOT_INODE
+#
+# 3.19 kernel adds is_root_inode()
+# Commit a7400222e3eb ("new helper: is_root_inode()")
+#
+AC_DEFUN([LC_HAVE_IS_ROOT_INODE], [
+LB_CHECK_COMPILE([if kernel has is_root_inode() ],
+is_root_inode, [
+ #include <linux/fs.h>
+],[
+ is_root_inode(NULL);
+],[
+ AC_DEFINE(HAVE_IS_ROOT_INODE, 1, [is_root_inode defined])
+])
+]) # LC_HAVE_IS_ROOT_INODE
+
+#
# LC_BACKING_DEV_INFO_REMOVAL
#
# 3.20 kernel removed backing_dev_info from address_space
]) # LC_BI_BDEV
#
+# LC_INTERVAL_TREE_CACHED
+#
+# 4.14 f808c13fd3738948e10196496959871130612b61
+# switched INTERVAL_TREE_DEFINE to use cached RB_Trees.
+#
+AC_DEFUN([LC_INTERVAL_TREE_CACHED], [
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
+LB_CHECK_COMPILE([if interval_trees use rb_tree_cached],
+itree_cached, [
+ #include <linux/interval_tree_generic.h>
+ struct foo { struct rb_node rb; int last; int a,b;};
+ #define START(n) ((n)->a)
+ #define LAST(n) ((n)->b)
+ struct rb_root_cached tree;
+ INTERVAL_TREE_DEFINE(struct foo, rb, int, last,
+ START, LAST, , foo);
+],[
+ foo_insert(NULL, &tree);
+],[
+ AC_DEFINE(HAVE_INTERVAL_TREE_CACHED, 1,
+ [interval trees use rb_tree_cached])
+])
+EXTRA_KCFLAGS="$tmp_flags"
+]) # LC_INTERVAL_TREE_CACHED
+
+#
# LC_IS_ENCRYPTED
#
# 4.14 introduced IS_ENCRYPTED and S_ENCRYPTED
LC_KIOCB_HAS_NBYTES
LC_HAVE_DQUOT_QC_DQBLK
LC_HAVE_AIO_COMPLETE
+ LC_HAVE_IS_ROOT_INODE
# 3.20
LC_BACKING_DEV_INFO_REMOVAL
# 4.14
LC_PAGEVEC_INIT_ONE_PARAM
LC_BI_BDEV
+ LC_INTERVAL_TREE_CACHED
# 4.17
LC_VM_FAULT_T