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