AC_DEFUN([ZFS_AC_KERNEL_SRC_SETATTR_PREPARE], [
	dnl #
	dnl # 4.9 API change
	dnl # The inode_change_ok() function has been renamed setattr_prepare()
	dnl # and updated to take a dentry rather than an inode.
	dnl #
	ZFS_LINUX_TEST_SRC([setattr_prepare], [
		#include <linux/fs.h>
	], [
		struct dentry *dentry = NULL;
		struct iattr *attr = NULL;
		int error __attribute__ ((unused)) =
			setattr_prepare(dentry, attr);
	])

	dnl #
	dnl # 5.12 API change
	dnl # The setattr_prepare() function has been changed to accept a new argument
	dnl # for struct user_namespace*
	dnl #
	ZFS_LINUX_TEST_SRC([setattr_prepare_userns], [
		#include <linux/fs.h>
	], [
		struct dentry *dentry = NULL;
		struct iattr *attr = NULL;
		struct user_namespace *userns = NULL;
		int error __attribute__ ((unused)) =
			setattr_prepare(userns, dentry, attr);
	])

	dnl #
	dnl # 6.3 API change
	dnl # The first arg of setattr_prepare() is changed to struct mnt_idmap*
	dnl #
	ZFS_LINUX_TEST_SRC([setattr_prepare_mnt_idmap], [
		#include <linux/fs.h>
	], [
		struct dentry *dentry = NULL;
		struct iattr *attr = NULL;
		struct mnt_idmap *idmap = NULL;
		int error __attribute__ ((unused)) =
			setattr_prepare(idmap, dentry, attr);
	])
])

AC_DEFUN([ZFS_AC_KERNEL_SETATTR_PREPARE], [
	AC_MSG_CHECKING([whether setattr_prepare() is available and accepts struct mnt_idmap*])
	ZFS_LINUX_TEST_RESULT_SYMBOL([setattr_prepare_mnt_idmap],
	    [setattr_prepare], [fs/attr.c], [
		AC_MSG_RESULT(yes)
		AC_DEFINE(HAVE_SETATTR_PREPARE_IDMAP, 1,
		    [setattr_prepare() accepts mnt_idmap])
	], [
		AC_MSG_CHECKING([whether setattr_prepare() is available and accepts struct user_namespace*])
		ZFS_LINUX_TEST_RESULT_SYMBOL([setattr_prepare_userns],
		    [setattr_prepare], [fs/attr.c], [
			AC_MSG_RESULT(yes)
			AC_DEFINE(HAVE_SETATTR_PREPARE_USERNS, 1,
			    [setattr_prepare() accepts user_namespace])
		], [
			AC_MSG_RESULT(no)

			AC_MSG_CHECKING([whether setattr_prepare() is available, doesn't accept user_namespace])
			ZFS_LINUX_TEST_RESULT_SYMBOL([setattr_prepare],
				[setattr_prepare], [fs/attr.c], [
				AC_MSG_RESULT(yes)
				AC_DEFINE(HAVE_SETATTR_PREPARE_NO_USERNS, 1,
					[setattr_prepare() is available, doesn't accept user_namespace])
			], [
				AC_MSG_RESULT(no)
			])
		])
	])
])
