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 ], [ 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 ], [ 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 ], [ 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_RESULT(no) 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) ]) ]) ]) ])