ZTS: Fix send_partial_dataset.ksh
[zfs.git] / config / kernel-setattr-prepare.m4
blob24245aa534484329de25407072bfae3e3ab1e9ce
1 AC_DEFUN([ZFS_AC_KERNEL_SRC_SETATTR_PREPARE], [
2         dnl #
3         dnl # 4.9 API change
4         dnl # The inode_change_ok() function has been renamed setattr_prepare()
5         dnl # and updated to take a dentry rather than an inode.
6         dnl #
7         ZFS_LINUX_TEST_SRC([setattr_prepare], [
8                 #include <linux/fs.h>
9         ], [
10                 struct dentry *dentry = NULL;
11                 struct iattr *attr = NULL;
12                 int error __attribute__ ((unused)) =
13                         setattr_prepare(dentry, attr);
14         ])
16         dnl #
17         dnl # 5.12 API change
18         dnl # The setattr_prepare() function has been changed to accept a new argument
19         dnl # for struct user_namespace*
20         dnl #
21         ZFS_LINUX_TEST_SRC([setattr_prepare_userns], [
22                 #include <linux/fs.h>
23         ], [
24                 struct dentry *dentry = NULL;
25                 struct iattr *attr = NULL;
26                 struct user_namespace *userns = NULL;
27                 int error __attribute__ ((unused)) =
28                         setattr_prepare(userns, dentry, attr);
29         ])
32 AC_DEFUN([ZFS_AC_KERNEL_SETATTR_PREPARE], [
33         AC_MSG_CHECKING([whether setattr_prepare() is available and accepts struct user_namespace*])
34         ZFS_LINUX_TEST_RESULT_SYMBOL([setattr_prepare_userns],
35             [setattr_prepare], [fs/attr.c], [
36                 AC_MSG_RESULT(yes)
37                 AC_DEFINE(HAVE_SETATTR_PREPARE_USERNS, 1,
38                     [setattr_prepare() accepts user_namespace])
39         ], [
40                 AC_MSG_RESULT(no)
42                 AC_MSG_CHECKING([whether setattr_prepare() is available, doesn't accept user_namespace])
43                 ZFS_LINUX_TEST_RESULT_SYMBOL([setattr_prepare],
44                         [setattr_prepare], [fs/attr.c], [
45                         AC_MSG_RESULT(yes)
46                         AC_DEFINE(HAVE_SETATTR_PREPARE_NO_USERNS, 1,
47                                 [setattr_prepare() is available, doesn't accept user_namespace])
48                 ], [
49                         AC_MSG_RESULT(no)
50                 ])
51         ])