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