xref: /freebsd/sys/contrib/openzfs/config/kernel-rename.m4 (revision 7a7741af18d6c8a804cc643cb7ecda9d730c6aa6)
1f9693befSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_RENAME], [
2eda14cbcSMatt Macy	dnl #
3eda14cbcSMatt Macy	dnl # 4.9 API change,
4dbd5678dSMartin Matuska	dnl #
5dbd5678dSMartin Matuska	dnl # iops->rename2() merged into iops->rename(), and iops->rename() now
6dbd5678dSMartin Matuska	dnl # wants flags.
7eda14cbcSMatt Macy	dnl #
8f9693befSMartin Matuska	ZFS_LINUX_TEST_SRC([inode_operations_rename_flags], [
9eda14cbcSMatt Macy		#include <linux/fs.h>
10fd45b686SMartin Matuska		static int rename_fn(struct inode *sip, struct dentry *sdp,
11eda14cbcSMatt Macy			struct inode *tip, struct dentry *tdp,
12eda14cbcSMatt Macy			unsigned int flags) { return 0; }
13eda14cbcSMatt Macy
14eda14cbcSMatt Macy		static const struct inode_operations
15eda14cbcSMatt Macy		    iops __attribute__ ((unused)) = {
16eda14cbcSMatt Macy			.rename = rename_fn,
17eda14cbcSMatt Macy		};
18eda14cbcSMatt Macy	],[])
19f9693befSMartin Matuska
20f9693befSMartin Matuska	dnl #
21f9693befSMartin Matuska	dnl # 5.12 API change,
22f9693befSMartin Matuska	dnl #
23dbd5678dSMartin Matuska	dnl # Linux 5.12 introduced passing struct user_namespace* as the first
24dbd5678dSMartin Matuska	dnl # argument of the rename() and other inode_operations members.
25f9693befSMartin Matuska	dnl #
26f9693befSMartin Matuska	ZFS_LINUX_TEST_SRC([inode_operations_rename_userns], [
27f9693befSMartin Matuska		#include <linux/fs.h>
28fd45b686SMartin Matuska		static int rename_fn(struct user_namespace *user_ns, struct inode *sip,
29f9693befSMartin Matuska			struct dentry *sdp, struct inode *tip, struct dentry *tdp,
30f9693befSMartin Matuska			unsigned int flags) { return 0; }
31f9693befSMartin Matuska
32f9693befSMartin Matuska		static const struct inode_operations
33f9693befSMartin Matuska		    iops __attribute__ ((unused)) = {
34f9693befSMartin Matuska			.rename = rename_fn,
35f9693befSMartin Matuska		};
36f9693befSMartin Matuska	],[])
37d411c1d6SMartin Matuska
38d411c1d6SMartin Matuska	dnl #
39d411c1d6SMartin Matuska	dnl # 6.3 API change - the first arg is now struct mnt_idmap*
40d411c1d6SMartin Matuska	dnl #
41d411c1d6SMartin Matuska	ZFS_LINUX_TEST_SRC([inode_operations_rename_mnt_idmap], [
42d411c1d6SMartin Matuska		#include <linux/fs.h>
43fd45b686SMartin Matuska		static int rename_fn(struct mnt_idmap *idmap, struct inode *sip,
44d411c1d6SMartin Matuska			struct dentry *sdp, struct inode *tip, struct dentry *tdp,
45d411c1d6SMartin Matuska			unsigned int flags) { return 0; }
46d411c1d6SMartin Matuska
47d411c1d6SMartin Matuska		static const struct inode_operations
48d411c1d6SMartin Matuska		    iops __attribute__ ((unused)) = {
49d411c1d6SMartin Matuska			.rename = rename_fn,
50d411c1d6SMartin Matuska		};
51d411c1d6SMartin Matuska	],[])
52eda14cbcSMatt Macy])
53eda14cbcSMatt Macy
54f9693befSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_RENAME], [
55d411c1d6SMartin Matuska	AC_MSG_CHECKING([whether iops->rename() takes struct mnt_idmap*])
56d411c1d6SMartin Matuska	ZFS_LINUX_TEST_RESULT([inode_operations_rename_mnt_idmap], [
57d411c1d6SMartin Matuska		AC_MSG_RESULT(yes)
58d411c1d6SMartin Matuska		AC_DEFINE(HAVE_IOPS_RENAME_IDMAP, 1,
59d411c1d6SMartin Matuska		    [iops->rename() takes struct mnt_idmap*])
60d411c1d6SMartin Matuska	],[
61*7a7741afSMartin Matuska		AC_MSG_RESULT(no)
62*7a7741afSMartin Matuska
63f9693befSMartin Matuska		AC_MSG_CHECKING([whether iops->rename() takes struct user_namespace*])
64f9693befSMartin Matuska		ZFS_LINUX_TEST_RESULT([inode_operations_rename_userns], [
65f9693befSMartin Matuska			AC_MSG_RESULT(yes)
66f9693befSMartin Matuska			AC_DEFINE(HAVE_IOPS_RENAME_USERNS, 1,
67f9693befSMartin Matuska			    [iops->rename() takes struct user_namespace*])
68f9693befSMartin Matuska		],[
69f9693befSMartin Matuska			AC_MSG_RESULT(no)
70f9693befSMartin Matuska
71dbd5678dSMartin Matuska			AC_MSG_CHECKING([whether iops->rename() wants flags])
72f9693befSMartin Matuska			ZFS_LINUX_TEST_RESULT([inode_operations_rename_flags], [
73eda14cbcSMatt Macy				AC_MSG_RESULT(yes)
74eda14cbcSMatt Macy				AC_DEFINE(HAVE_RENAME_WANTS_FLAGS, 1,
75eda14cbcSMatt Macy					[iops->rename() wants flags])
76eda14cbcSMatt Macy			],[
77eda14cbcSMatt Macy				AC_MSG_RESULT(no)
78eda14cbcSMatt Macy			])
79eda14cbcSMatt Macy		])
80f9693befSMartin Matuska	])
81d411c1d6SMartin Matuska])
82