1AC_DEFUN([ZFS_AC_KERNEL_SRC_MKNOD], [
2	dnl #
3	dnl # 6.3 API change
4	dnl # The first arg is now struct mnt_idmap*
5	dnl #
6	ZFS_LINUX_TEST_SRC([mknod_mnt_idmap], [
7		#include <linux/fs.h>
8		#include <linux/sched.h>
9
10		static int tmp_mknod(struct mnt_idmap *idmap,
11		    struct inode *inode ,struct dentry *dentry,
12		    umode_t u, dev_t d) { return 0; }
13
14		static const struct inode_operations
15			iops __attribute__ ((unused)) = {
16			.mknod          = tmp_mknod,
17		};
18	],[])
19
20	dnl #
21	dnl # 5.12 API change that added the struct user_namespace* arg
22	dnl # to the front of this function type's arg list.
23	dnl #
24	ZFS_LINUX_TEST_SRC([mknod_userns], [
25		#include <linux/fs.h>
26		#include <linux/sched.h>
27
28		static int tmp_mknod(struct user_namespace *userns,
29		    struct inode *inode ,struct dentry *dentry,
30		    umode_t u, dev_t d) { return 0; }
31
32		static const struct inode_operations
33			iops __attribute__ ((unused)) = {
34			.mknod		= tmp_mknod,
35		};
36	],[])
37])
38
39AC_DEFUN([ZFS_AC_KERNEL_MKNOD], [
40	AC_MSG_CHECKING([whether iops->mknod() takes struct mnt_idmap*])
41	ZFS_LINUX_TEST_RESULT([mknod_mnt_idmap], [
42		AC_MSG_RESULT(yes)
43		AC_DEFINE(HAVE_IOPS_MKNOD_IDMAP, 1,
44		    [iops->mknod() takes struct mnt_idmap*])
45	],[
46		AC_MSG_RESULT(no)
47		AC_MSG_CHECKING([whether iops->mknod() takes struct user_namespace*])
48		ZFS_LINUX_TEST_RESULT([mknod_userns], [
49			AC_MSG_RESULT(yes)
50			AC_DEFINE(HAVE_IOPS_MKNOD_USERNS, 1,
51			    [iops->mknod() takes struct user_namespace*])
52		],[
53			AC_MSG_RESULT(no)
54		])
55	])
56])
57