xref: /freebsd/sys/contrib/openzfs/config/kernel-tmpfile.m4 (revision 7a7741af18d6c8a804cc643cb7ecda9d730c6aa6)
1eda14cbcSMatt Macydnl #
2eda14cbcSMatt Macydnl # 3.11 API change
3eda14cbcSMatt Macydnl # Add support for i_op->tmpfile
4eda14cbcSMatt Macydnl #
5eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_TMPFILE], [
616038816SMartin Matuska	dnl #
7d411c1d6SMartin Matuska	dnl # 6.3 API change
8d411c1d6SMartin Matuska	dnl # The first arg is now struct mnt_idmap *
9d411c1d6SMartin Matuska	dnl #
10d411c1d6SMartin Matuska	ZFS_LINUX_TEST_SRC([inode_operations_tmpfile_mnt_idmap], [
11d411c1d6SMartin Matuska		#include <linux/fs.h>
12*fd45b686SMartin Matuska		static int tmpfile(struct mnt_idmap *idmap,
13d411c1d6SMartin Matuska		    struct inode *inode, struct file *file,
14d411c1d6SMartin Matuska		    umode_t mode) { return 0; }
15d411c1d6SMartin Matuska		static struct inode_operations
16d411c1d6SMartin Matuska		    iops __attribute__ ((unused)) = {
17d411c1d6SMartin Matuska			.tmpfile = tmpfile,
18d411c1d6SMartin Matuska		};
19d411c1d6SMartin Matuska	],[])
2015f0b8c3SMartin Matuska	dnl # 6.1 API change
2115f0b8c3SMartin Matuska	dnl # use struct file instead of struct dentry
2215f0b8c3SMartin Matuska	dnl #
2315f0b8c3SMartin Matuska	ZFS_LINUX_TEST_SRC([inode_operations_tmpfile], [
2415f0b8c3SMartin Matuska		#include <linux/fs.h>
25*fd45b686SMartin Matuska		static int tmpfile(struct user_namespace *userns,
2615f0b8c3SMartin Matuska		    struct inode *inode, struct file *file,
2715f0b8c3SMartin Matuska		    umode_t mode) { return 0; }
2815f0b8c3SMartin Matuska		static struct inode_operations
2915f0b8c3SMartin Matuska		    iops __attribute__ ((unused)) = {
3015f0b8c3SMartin Matuska			.tmpfile = tmpfile,
3115f0b8c3SMartin Matuska		};
3215f0b8c3SMartin Matuska	],[])
3315f0b8c3SMartin Matuska	dnl #
3416038816SMartin Matuska	dnl # 5.11 API change
3516038816SMartin Matuska	dnl # add support for userns parameter to tmpfile
3616038816SMartin Matuska	dnl #
3715f0b8c3SMartin Matuska	ZFS_LINUX_TEST_SRC([inode_operations_tmpfile_dentry_userns], [
3816038816SMartin Matuska		#include <linux/fs.h>
39*fd45b686SMartin Matuska		static int tmpfile(struct user_namespace *userns,
4016038816SMartin Matuska		    struct inode *inode, struct dentry *dentry,
4116038816SMartin Matuska		    umode_t mode) { return 0; }
4216038816SMartin Matuska		static struct inode_operations
4316038816SMartin Matuska		    iops __attribute__ ((unused)) = {
4416038816SMartin Matuska			.tmpfile = tmpfile,
4516038816SMartin Matuska		};
4616038816SMartin Matuska	],[])
4715f0b8c3SMartin Matuska	ZFS_LINUX_TEST_SRC([inode_operations_tmpfile_dentry], [
48eda14cbcSMatt Macy			#include <linux/fs.h>
49*fd45b686SMartin Matuska			static int tmpfile(struct inode *inode, struct dentry *dentry,
50eda14cbcSMatt Macy			    umode_t mode) { return 0; }
51eda14cbcSMatt Macy			static struct inode_operations
52eda14cbcSMatt Macy			    iops __attribute__ ((unused)) = {
53eda14cbcSMatt Macy				.tmpfile = tmpfile,
54eda14cbcSMatt Macy			};
55eda14cbcSMatt Macy	],[])
56eda14cbcSMatt Macy])
57eda14cbcSMatt Macy
58eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_TMPFILE], [
59eda14cbcSMatt Macy	AC_MSG_CHECKING([whether i_op->tmpfile() exists])
60d411c1d6SMartin Matuska	ZFS_LINUX_TEST_RESULT([inode_operations_tmpfile_mnt_idmap], [
61d411c1d6SMartin Matuska		AC_MSG_RESULT(yes)
62d411c1d6SMartin Matuska		AC_DEFINE(HAVE_TMPFILE_IDMAP, 1, [i_op->tmpfile() has mnt_idmap])
63d411c1d6SMartin Matuska	], [
6415f0b8c3SMartin Matuska		ZFS_LINUX_TEST_RESULT([inode_operations_tmpfile], [
6516038816SMartin Matuska			AC_MSG_RESULT(yes)
6616038816SMartin Matuska			AC_DEFINE(HAVE_TMPFILE_USERNS, 1, [i_op->tmpfile() has userns])
6716038816SMartin Matuska		],[
6815f0b8c3SMartin Matuska			ZFS_LINUX_TEST_RESULT([inode_operations_tmpfile_dentry_userns], [
69eda14cbcSMatt Macy				AC_MSG_RESULT(yes)
7015f0b8c3SMartin Matuska				AC_DEFINE(HAVE_TMPFILE_USERNS, 1, [i_op->tmpfile() has userns])
7115f0b8c3SMartin Matuska				AC_DEFINE(HAVE_TMPFILE_DENTRY, 1, [i_op->tmpfile() uses old dentry signature])
72eda14cbcSMatt Macy			],[
7315f0b8c3SMartin Matuska				ZFS_LINUX_TEST_RESULT([inode_operations_tmpfile_dentry], [
7415f0b8c3SMartin Matuska					AC_MSG_RESULT(yes)
7515f0b8c3SMartin Matuska					AC_DEFINE(HAVE_TMPFILE_DENTRY, 1, [i_op->tmpfile() uses old dentry signature])
7615f0b8c3SMartin Matuska				],[
7715f0b8c3SMartin Matuska					ZFS_LINUX_REQUIRE_API([i_op->tmpfile()], [3.11])
7815f0b8c3SMartin Matuska				])
79eda14cbcSMatt Macy			])
80eda14cbcSMatt Macy		])
8116038816SMartin Matuska	])
82d411c1d6SMartin Matuska])
83