xref: /freebsd/sys/contrib/openzfs/config/kernel-idmap.m4 (revision 22649d4dba730d46244fd2dff4fd174903c8379f)
1dnl # SPDX-License-Identifier: CDDL-1.0
2AC_DEFUN([ZFS_AC_KERNEL_SRC_IDMAP], [
3	dnl #
4	dnl # 6.3 API change
5	dnl # The first arg is changed to struct mnt_idmap *
6	dnl #
7	ZFS_LINUX_TEST_SRC([generic_permission_idmap_mntidmap], [
8		#include <linux/fs.h>
9	], [
10		struct mnt_idmap *idmap = NULL;
11		struct inode *inode = NULL;
12		int mask = 0;
13		int ret = generic_permission(idmap, inode, mask);
14		(void) ret;
15	])
16
17	dnl #
18	dnl # 5.12 API change that added the struct user_namespace* arg
19	dnl # to the front of this function type's arg list.
20	dnl #
21	ZFS_LINUX_TEST_SRC([generic_permission_idmap_userns], [
22		#include <linux/fs.h>
23	], [
24		struct user_namespace *userns = NULL;
25		struct inode *inode = NULL;
26		int mask = 0;
27		int ret = generic_permission(userns, inode, mask);
28		(void) ret;
29	])
30
31	dnl #
32	dnl # Before 5.12 user namespace was part of kcred
33	dnl #
34	ZFS_LINUX_TEST_SRC([generic_permission_idmap_none], [
35		#include <linux/fs.h>
36	], [
37		struct inode *inode = NULL;
38		int mask = 0;
39		int ret = generic_permission(inode, mask);
40		(void) ret;
41	])
42])
43
44AC_DEFUN([ZFS_AC_KERNEL_IDMAP], [
45	AC_MSG_CHECKING([for id mapping mechanism])
46	ZFS_LINUX_TEST_RESULT([generic_permission_idmap_mntidmap], [
47		AC_MSG_RESULT([mnt_idmap])
48		AC_DEFINE(HAVE_IDMAP_MNTIDMAP, 1,
49		    [id mapping mechanism is mnt_idmap])
50	],[
51		ZFS_LINUX_TEST_RESULT([generic_permission_idmap_userns], [
52			AC_MSG_RESULT([user_namespace])
53			AC_DEFINE(HAVE_IDMAP_USERNS, 1,
54			    [id mapping mechanism is user_namespace])
55		],[
56			ZFS_LINUX_TEST_RESULT([generic_permission_idmap_none], [
57				AC_MSG_RESULT([none])
58			],[
59				AC_MSG_RESULT([unknown])
60				ZFS_LINUX_TEST_ERROR([generic_permission])
61			])
62		])
63	])
64])
65