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 # 7*d411c1d6SMartin Matuska dnl # 6.3 API change 8*d411c1d6SMartin Matuska dnl # The first arg is now struct mnt_idmap * 9*d411c1d6SMartin Matuska dnl # 10*d411c1d6SMartin Matuska ZFS_LINUX_TEST_SRC([inode_operations_tmpfile_mnt_idmap], [ 11*d411c1d6SMartin Matuska #include <linux/fs.h> 12*d411c1d6SMartin Matuska int tmpfile(struct mnt_idmap *idmap, 13*d411c1d6SMartin Matuska struct inode *inode, struct file *file, 14*d411c1d6SMartin Matuska umode_t mode) { return 0; } 15*d411c1d6SMartin Matuska static struct inode_operations 16*d411c1d6SMartin Matuska iops __attribute__ ((unused)) = { 17*d411c1d6SMartin Matuska .tmpfile = tmpfile, 18*d411c1d6SMartin Matuska }; 19*d411c1d6SMartin 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> 2515f0b8c3SMartin Matuska 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> 3916038816SMartin Matuska 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> 49eda14cbcSMatt Macy 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]) 60*d411c1d6SMartin Matuska ZFS_LINUX_TEST_RESULT([inode_operations_tmpfile_mnt_idmap], [ 61*d411c1d6SMartin Matuska AC_MSG_RESULT(yes) 62*d411c1d6SMartin Matuska AC_DEFINE(HAVE_TMPFILE, 1, [i_op->tmpfile() exists]) 63*d411c1d6SMartin Matuska AC_DEFINE(HAVE_TMPFILE_IDMAP, 1, [i_op->tmpfile() has mnt_idmap]) 64*d411c1d6SMartin Matuska ], [ 6515f0b8c3SMartin Matuska ZFS_LINUX_TEST_RESULT([inode_operations_tmpfile], [ 6616038816SMartin Matuska AC_MSG_RESULT(yes) 6716038816SMartin Matuska AC_DEFINE(HAVE_TMPFILE, 1, [i_op->tmpfile() exists]) 6816038816SMartin Matuska AC_DEFINE(HAVE_TMPFILE_USERNS, 1, [i_op->tmpfile() has userns]) 6916038816SMartin Matuska ],[ 7015f0b8c3SMartin Matuska ZFS_LINUX_TEST_RESULT([inode_operations_tmpfile_dentry_userns], [ 71eda14cbcSMatt Macy AC_MSG_RESULT(yes) 72eda14cbcSMatt Macy AC_DEFINE(HAVE_TMPFILE, 1, [i_op->tmpfile() exists]) 7315f0b8c3SMartin Matuska AC_DEFINE(HAVE_TMPFILE_USERNS, 1, [i_op->tmpfile() has userns]) 7415f0b8c3SMartin Matuska AC_DEFINE(HAVE_TMPFILE_DENTRY, 1, [i_op->tmpfile() uses old dentry signature]) 75eda14cbcSMatt Macy ],[ 7615f0b8c3SMartin Matuska ZFS_LINUX_TEST_RESULT([inode_operations_tmpfile_dentry], [ 7715f0b8c3SMartin Matuska AC_MSG_RESULT(yes) 7815f0b8c3SMartin Matuska AC_DEFINE(HAVE_TMPFILE, 1, [i_op->tmpfile() exists]) 7915f0b8c3SMartin Matuska AC_DEFINE(HAVE_TMPFILE_DENTRY, 1, [i_op->tmpfile() uses old dentry signature]) 8015f0b8c3SMartin Matuska ],[ 8115f0b8c3SMartin Matuska ZFS_LINUX_REQUIRE_API([i_op->tmpfile()], [3.11]) 8215f0b8c3SMartin Matuska ]) 83eda14cbcSMatt Macy ]) 84eda14cbcSMatt Macy ]) 8516038816SMartin Matuska ]) 86*d411c1d6SMartin Matuska]) 87