]) # LIBCFS_SHRINKER_COUNT
#
+# LIBCFS_HAVE_MAPPING_AS_EXITING_FLAG
+#
+# v3.14-7405-g91b0abe36a7b added AS_EXITING flag with
+# mapping_exiting() and mapping_set_exiting()
+#
+AC_DEFUN([LIBCFS_HAVE_MAPPING_AS_EXITING_FLAG], [
+m4_pattern_allow([AS_EXITING])
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
+LB_CHECK_COMPILE([if enum mapping_flags has AS_EXITING flag],
+mapping_exiting_exists, [
+ #include <linux/pagemap.h>
+],[
+ enum mapping_flags flag = AS_EXITING;
+ (void)flag;
+],[
+ AC_DEFINE(HAVE_MAPPING_AS_EXITING_FLAG, 1,
+ [enum mapping_flags has AS_EXITING flag])
+])
+EXTRA_KCFLAGS="$tmp_flags"
+]) # LIBCFS_HAVE_MAPPING_AS_EXITING_FLAG
+
+#
# LIBCFS_IOV_ITER_HAS_TYPE
#
# kernel 3.15-rc4 commit 71d8e532b1549a478e6a6a8a44f309d050294d00
LIBCFS_KTIME_COMPARE
LIBCFS_SHRINKER_COUNT
# 3.15
+LIBCFS_HAVE_MAPPING_AS_EXITING_FLAG
LIBCFS_IOV_ITER_HAS_TYPE
# 3.16
LIBCFS_HAVE_NS_TO_TIMESPEC64
#include <linux/stat.h>
#include <linux/mount.h>
#include <linux/backing-dev.h>
+#include <linux/pagemap.h>
#ifndef HAVE_FILE_DENTRY
static inline struct dentry *file_dentry(const struct file *file)
#define proc_get_unmapped_area get_unmapped_area
#endif
+static inline void mapping_clear_exiting(struct address_space *mapping)
+{
+#ifdef HAVE_MAPPING_AS_EXITING_FLAG
+ clear_bit(AS_EXITING, &mapping->flags);
+#endif
+}
+
#endif