1dnl #
2dnl # 2.6.39 API change,
3dnl # The is_owner_or_cap() macro was renamed to inode_owner_or_capable(),
4dnl # This is used for permission checks in the xattr and file attribute call
5dnl # paths.
6dnl #
7dnl # 5.12 API change,
8dnl # inode_owner_or_capable() now takes struct user_namespace *
9dnl # to support idmapped mounts
10dnl #
11AC_DEFUN([ZFS_AC_KERNEL_SRC_INODE_OWNER_OR_CAPABLE], [
12	ZFS_LINUX_TEST_SRC([inode_owner_or_capable], [
13		#include <linux/fs.h>
14	],[
15		struct inode *ip = NULL;
16		(void) inode_owner_or_capable(ip);
17	])
18
19	ZFS_LINUX_TEST_SRC([inode_owner_or_capable_idmapped], [
20		#include <linux/fs.h>
21	],[
22		struct inode *ip = NULL;
23		(void) inode_owner_or_capable(&init_user_ns, ip);
24	])
25])
26
27AC_DEFUN([ZFS_AC_KERNEL_INODE_OWNER_OR_CAPABLE], [
28	AC_MSG_CHECKING([whether inode_owner_or_capable() exists])
29	ZFS_LINUX_TEST_RESULT([inode_owner_or_capable], [
30		AC_MSG_RESULT(yes)
31		AC_DEFINE(HAVE_INODE_OWNER_OR_CAPABLE, 1,
32		    [inode_owner_or_capable() exists])
33	], [
34		AC_MSG_RESULT(no)
35
36		AC_MSG_CHECKING(
37		    [whether inode_owner_or_capable() takes user_ns])
38		ZFS_LINUX_TEST_RESULT([inode_owner_or_capable_idmapped], [
39			AC_MSG_RESULT(yes)
40			AC_DEFINE(HAVE_INODE_OWNER_OR_CAPABLE_IDMAPPED, 1,
41			    [inode_owner_or_capable() takes user_ns])
42		],[
43			ZFS_LINUX_TEST_ERROR([capability])
44		])
45	])
46])
47