1f9693befSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_CREATE], [ 2f9693befSMartin Matuska dnl # 3d411c1d6SMartin Matuska dnl # 6.3 API change 4d411c1d6SMartin Matuska dnl # The first arg is changed to struct mnt_idmap * 5d411c1d6SMartin Matuska dnl # 6d411c1d6SMartin Matuska ZFS_LINUX_TEST_SRC([create_mnt_idmap], [ 7d411c1d6SMartin Matuska #include <linux/fs.h> 8d411c1d6SMartin Matuska #include <linux/sched.h> 9d411c1d6SMartin Matuska 10*fd45b686SMartin Matuska static int inode_create(struct mnt_idmap *idmap, 11d411c1d6SMartin Matuska struct inode *inode ,struct dentry *dentry, 12d411c1d6SMartin Matuska umode_t umode, bool flag) { return 0; } 13d411c1d6SMartin Matuska 14d411c1d6SMartin Matuska static const struct inode_operations 15d411c1d6SMartin Matuska iops __attribute__ ((unused)) = { 16d411c1d6SMartin Matuska .create = inode_create, 17d411c1d6SMartin Matuska }; 18d411c1d6SMartin Matuska ],[]) 19d411c1d6SMartin Matuska 20d411c1d6SMartin Matuska dnl # 21f9693befSMartin Matuska dnl # 5.12 API change that added the struct user_namespace* arg 22f9693befSMartin Matuska dnl # to the front of this function type's arg list. 23f9693befSMartin Matuska dnl # 24f9693befSMartin Matuska ZFS_LINUX_TEST_SRC([create_userns], [ 25f9693befSMartin Matuska #include <linux/fs.h> 26f9693befSMartin Matuska #include <linux/sched.h> 27f9693befSMartin Matuska 28*fd45b686SMartin Matuska static int inode_create(struct user_namespace *userns, 29f9693befSMartin Matuska struct inode *inode ,struct dentry *dentry, 30f9693befSMartin Matuska umode_t umode, bool flag) { return 0; } 31f9693befSMartin Matuska 32f9693befSMartin Matuska static const struct inode_operations 33f9693befSMartin Matuska iops __attribute__ ((unused)) = { 34f9693befSMartin Matuska .create = inode_create, 35f9693befSMartin Matuska }; 36f9693befSMartin Matuska ],[]) 37f9693befSMartin Matuska 38eda14cbcSMatt Macy dnl # 39eda14cbcSMatt Macy dnl # 3.6 API change 40eda14cbcSMatt Macy dnl # 41eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([create_flags], [ 42eda14cbcSMatt Macy #include <linux/fs.h> 43eda14cbcSMatt Macy #include <linux/sched.h> 44eda14cbcSMatt Macy 45*fd45b686SMartin Matuska static int inode_create(struct inode *inode ,struct dentry *dentry, 46eda14cbcSMatt Macy umode_t umode, bool flag) { return 0; } 47eda14cbcSMatt Macy 48eda14cbcSMatt Macy static const struct inode_operations 49eda14cbcSMatt Macy iops __attribute__ ((unused)) = { 50eda14cbcSMatt Macy .create = inode_create, 51eda14cbcSMatt Macy }; 52eda14cbcSMatt Macy ],[]) 53eda14cbcSMatt Macy]) 54eda14cbcSMatt Macy 55f9693befSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_CREATE], [ 56d411c1d6SMartin Matuska AC_MSG_CHECKING([whether iops->create() takes struct mnt_idmap*]) 57d411c1d6SMartin Matuska ZFS_LINUX_TEST_RESULT([create_mnt_idmap], [ 58d411c1d6SMartin Matuska AC_MSG_RESULT(yes) 59d411c1d6SMartin Matuska AC_DEFINE(HAVE_IOPS_CREATE_IDMAP, 1, 60d411c1d6SMartin Matuska [iops->create() takes struct mnt_idmap*]) 61d411c1d6SMartin Matuska ],[ 62d411c1d6SMartin Matuska AC_MSG_RESULT(no) 63d411c1d6SMartin Matuska 64f9693befSMartin Matuska AC_MSG_CHECKING([whether iops->create() takes struct user_namespace*]) 65f9693befSMartin Matuska ZFS_LINUX_TEST_RESULT([create_userns], [ 66f9693befSMartin Matuska AC_MSG_RESULT(yes) 67f9693befSMartin Matuska AC_DEFINE(HAVE_IOPS_CREATE_USERNS, 1, 68f9693befSMartin Matuska [iops->create() takes struct user_namespace*]) 69f9693befSMartin Matuska ],[ 70f9693befSMartin Matuska AC_MSG_RESULT(no) 71f9693befSMartin Matuska 72eda14cbcSMatt Macy AC_MSG_CHECKING([whether iops->create() passes flags]) 73eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([create_flags], [ 74eda14cbcSMatt Macy AC_MSG_RESULT(yes) 75eda14cbcSMatt Macy ],[ 76eda14cbcSMatt Macy ZFS_LINUX_TEST_ERROR([iops->create()]) 77eda14cbcSMatt Macy ]) 78eda14cbcSMatt Macy ]) 79f9693befSMartin Matuska ]) 80d411c1d6SMartin Matuska]) 81