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