dnl #
dnl # Linux 3.16 API
dnl #
AC_DEFUN([ZFS_AC_KERNEL_SRC_VFS_RW_ITERATE], [
	ZFS_LINUX_TEST_SRC([file_operations_rw], [
		#include <linux/fs.h>

		ssize_t test_read(struct kiocb *kiocb, struct iov_iter *to)
		    { return 0; }
		ssize_t test_write(struct kiocb *kiocb, struct iov_iter *from)
		    { return 0; }

		static const struct file_operations
		    fops __attribute__ ((unused)) = {
		    .read_iter = test_read,
		    .write_iter = test_write,
		};
	],[])

	ZFS_LINUX_TEST_SRC([new_sync_rw], [
		#include <linux/fs.h>
	],[
	        ssize_t ret __attribute__ ((unused));
		struct file *filp = NULL;
		char __user *rbuf = NULL;
		const char __user *wbuf = NULL;
		size_t len = 0;
		loff_t ppos;

		ret = new_sync_read(filp, rbuf, len, &ppos);
		ret = new_sync_write(filp, wbuf, len, &ppos);
	])
])

AC_DEFUN([ZFS_AC_KERNEL_VFS_RW_ITERATE], [
	AC_MSG_CHECKING([whether fops->read/write_iter() are available])
	ZFS_LINUX_TEST_RESULT([file_operations_rw], [
		AC_MSG_RESULT(yes)
		AC_DEFINE(HAVE_VFS_RW_ITERATE, 1,
		    [fops->read/write_iter() are available])

		dnl #
		dnl # Linux 4.1 API
		dnl #
		AC_MSG_CHECKING([whether new_sync_read/write() are available])
		ZFS_LINUX_TEST_RESULT([new_sync_rw], [
			AC_MSG_RESULT(yes)
			AC_DEFINE(HAVE_NEW_SYNC_READ, 1,
			    [new_sync_read()/new_sync_write() are available])
		],[
			AC_MSG_RESULT(no)
		])
	],[
		AC_MSG_RESULT(no)
	])
])

dnl #
dnl # Linux 4.1.x API
dnl #
AC_DEFUN([ZFS_AC_KERNEL_SRC_VFS_GENERIC_WRITE_CHECKS], [
	ZFS_LINUX_TEST_SRC([generic_write_checks], [
		#include <linux/fs.h>
	],[
		struct kiocb *iocb = NULL;
		struct iov_iter *iov = NULL;
		generic_write_checks(iocb, iov);
	])
])

AC_DEFUN([ZFS_AC_KERNEL_VFS_GENERIC_WRITE_CHECKS], [
	AC_MSG_CHECKING([whether generic_write_checks() takes kiocb])
	ZFS_LINUX_TEST_RESULT([generic_write_checks], [
		AC_MSG_RESULT(yes)
		AC_DEFINE(HAVE_GENERIC_WRITE_CHECKS_KIOCB, 1,
		    [generic_write_checks() takes kiocb])
	],[
		AC_MSG_RESULT(no)
	])
])
