xref: /freebsd-src/sys/contrib/openzfs/config/kernel-inode-create.m4 (revision fd45b686f9d92f583366c75b22c04c7ee49709c0)
1f9693befSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_CREATE], [
2f9693befSMartin Matuska	dnl #
3d411c1d6SMartin Matuska	dnl # 6.3 API change
4d411c1d6SMartin Matuska	dnl # The first arg is changed to struct mnt_idmap *
5d411c1d6SMartin Matuska	dnl #
6d411c1d6SMartin Matuska	ZFS_LINUX_TEST_SRC([create_mnt_idmap], [
7d411c1d6SMartin Matuska		#include <linux/fs.h>
8d411c1d6SMartin Matuska		#include <linux/sched.h>
9d411c1d6SMartin Matuska
10*fd45b686SMartin Matuska		static int inode_create(struct mnt_idmap *idmap,
11d411c1d6SMartin Matuska		    struct inode *inode ,struct dentry *dentry,
12d411c1d6SMartin Matuska		    umode_t umode, bool flag) { return 0; }
13d411c1d6SMartin Matuska
14d411c1d6SMartin Matuska		static const struct inode_operations
15d411c1d6SMartin Matuska			iops __attribute__ ((unused)) = {
16d411c1d6SMartin Matuska			.create         = inode_create,
17d411c1d6SMartin Matuska		};
18d411c1d6SMartin Matuska	],[])
19d411c1d6SMartin Matuska
20d411c1d6SMartin Matuska	dnl #
21f9693befSMartin Matuska	dnl # 5.12 API change that added the struct user_namespace* arg
22f9693befSMartin Matuska	dnl # to the front of this function type's arg list.
23f9693befSMartin Matuska	dnl #
24f9693befSMartin Matuska	ZFS_LINUX_TEST_SRC([create_userns], [
25f9693befSMartin Matuska		#include <linux/fs.h>
26f9693befSMartin Matuska		#include <linux/sched.h>
27f9693befSMartin Matuska
28*fd45b686SMartin Matuska		static int inode_create(struct user_namespace *userns,
29f9693befSMartin Matuska		    struct inode *inode ,struct dentry *dentry,
30f9693befSMartin Matuska		    umode_t umode, bool flag) { return 0; }
31f9693befSMartin Matuska
32f9693befSMartin Matuska		static const struct inode_operations
33f9693befSMartin Matuska			iops __attribute__ ((unused)) = {
34f9693befSMartin Matuska			.create		= inode_create,
35f9693befSMartin Matuska		};
36f9693befSMartin Matuska	],[])
37f9693befSMartin Matuska
38eda14cbcSMatt Macy	dnl #
39eda14cbcSMatt Macy	dnl # 3.6 API change
40eda14cbcSMatt Macy	dnl #
41eda14cbcSMatt Macy	ZFS_LINUX_TEST_SRC([create_flags], [
42eda14cbcSMatt Macy		#include <linux/fs.h>
43eda14cbcSMatt Macy		#include <linux/sched.h>
44eda14cbcSMatt Macy
45*fd45b686SMartin Matuska		static int inode_create(struct inode *inode ,struct dentry *dentry,
46eda14cbcSMatt Macy		    umode_t umode, bool flag) { return 0; }
47eda14cbcSMatt Macy
48eda14cbcSMatt Macy		static const struct inode_operations
49eda14cbcSMatt Macy		    iops __attribute__ ((unused)) = {
50eda14cbcSMatt Macy			.create		= inode_create,
51eda14cbcSMatt Macy		};
52eda14cbcSMatt Macy	],[])
53eda14cbcSMatt Macy])
54eda14cbcSMatt Macy
55f9693befSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_CREATE], [
56d411c1d6SMartin Matuska	AC_MSG_CHECKING([whether iops->create() takes struct mnt_idmap*])
57d411c1d6SMartin Matuska	ZFS_LINUX_TEST_RESULT([create_mnt_idmap], [
58d411c1d6SMartin Matuska		AC_MSG_RESULT(yes)
59d411c1d6SMartin Matuska		AC_DEFINE(HAVE_IOPS_CREATE_IDMAP, 1,
60d411c1d6SMartin Matuska		   [iops->create() takes struct mnt_idmap*])
61d411c1d6SMartin Matuska	],[
62d411c1d6SMartin Matuska		AC_MSG_RESULT(no)
63d411c1d6SMartin Matuska
64f9693befSMartin Matuska		AC_MSG_CHECKING([whether iops->create() takes struct user_namespace*])
65f9693befSMartin Matuska		ZFS_LINUX_TEST_RESULT([create_userns], [
66f9693befSMartin Matuska			AC_MSG_RESULT(yes)
67f9693befSMartin Matuska			AC_DEFINE(HAVE_IOPS_CREATE_USERNS, 1,
68f9693befSMartin Matuska			   [iops->create() takes struct user_namespace*])
69f9693befSMartin Matuska		],[
70f9693befSMartin Matuska			AC_MSG_RESULT(no)
71f9693befSMartin Matuska
72eda14cbcSMatt Macy			AC_MSG_CHECKING([whether iops->create() passes flags])
73eda14cbcSMatt Macy			ZFS_LINUX_TEST_RESULT([create_flags], [
74eda14cbcSMatt Macy				AC_MSG_RESULT(yes)
75eda14cbcSMatt Macy			],[
76eda14cbcSMatt Macy				ZFS_LINUX_TEST_ERROR([iops->create()])
77eda14cbcSMatt Macy			])
78eda14cbcSMatt Macy		])
79f9693befSMartin Matuska	])
80d411c1d6SMartin Matuska])
81