dnl #
dnl # 3.5.0 API change
dnl # torvalds/linux@dbd5768f87ff6fb0a4fe09c4d7b6c4a24de99430 and
dnl # torvalds/linux@7994e6f7254354e03028a11f98a27bd67dace9f1 reworked
dnl # where inode_sync_wait() is called.
dnl #
dnl # Prior to these changes it would occur in end_writeback() but due
dnl # to various issues (described in the above commits) it has been
dnl # moved to evict().   This changes the ordering is which sync occurs
dnl # but otherwise doesn't impact the zpl implementation.
dnl #
dnl # The major impact here is the renaming of end_writeback() to
dnl # clear_inode().  However, care must be taken when detecting this
dnl # API change because as recently as 2.6.35 there was a clear_inode()
dnl # function.  However, it was made obsolete by the evict_inode() API
dnl # change at the same time.
dnl #
dnl # Therefore, to ensure we have the correct API we only allow the
dnl # clear_inode() compatibility code to be defined iff the evict_inode()
dnl # functionality is also detected.
dnl #
AC_DEFUN([ZFS_AC_KERNEL_SRC_CLEAR_INODE], [
	ZFS_LINUX_TEST_SRC([clear_inode], [
		#include <linux/fs.h>
	], [
		clear_inode(NULL);
	])
])

AC_DEFUN([ZFS_AC_KERNEL_CLEAR_INODE], [
	AC_MSG_CHECKING([whether clear_inode() is available])
	ZFS_LINUX_TEST_RESULT_SYMBOL([clear_inode],
	    [clear_inode], [fs/inode.c], [
		AC_MSG_RESULT(yes)
		AC_DEFINE(HAVE_CLEAR_INODE, 1, [clear_inode() is available])
	], [
		AC_MSG_RESULT(no)
	])
])
