1f9693befSMartin Matuskadnl # 2f9693befSMartin Matuskadnl # Supported mkdir() interfaces checked newest to oldest. 3f9693befSMartin Matuskadnl # 4f9693befSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_MKDIR], [ 5f9693befSMartin Matuska dnl # 6d411c1d6SMartin Matuska dnl # 6.3 API change 7d411c1d6SMartin Matuska dnl # mkdir() takes struct mnt_idmap * as the first arg 8d411c1d6SMartin Matuska dnl # 9d411c1d6SMartin Matuska ZFS_LINUX_TEST_SRC([mkdir_mnt_idmap], [ 10d411c1d6SMartin Matuska #include <linux/fs.h> 11d411c1d6SMartin Matuska 12*fd45b686SMartin Matuska static int mkdir(struct mnt_idmap *idmap, 13d411c1d6SMartin Matuska struct inode *inode, struct dentry *dentry, 14d411c1d6SMartin Matuska umode_t umode) { return 0; } 15d411c1d6SMartin Matuska static const struct inode_operations 16d411c1d6SMartin Matuska iops __attribute__ ((unused)) = { 17d411c1d6SMartin Matuska .mkdir = mkdir, 18d411c1d6SMartin Matuska }; 19d411c1d6SMartin Matuska ],[]) 20d411c1d6SMartin Matuska 21d411c1d6SMartin Matuska dnl # 22f9693befSMartin Matuska dnl # 5.12 API change 23f9693befSMartin Matuska dnl # The struct user_namespace arg was added as the first argument to 24f9693befSMartin Matuska dnl # mkdir() 25f9693befSMartin Matuska dnl # 26f9693befSMartin Matuska ZFS_LINUX_TEST_SRC([mkdir_user_namespace], [ 27f9693befSMartin Matuska #include <linux/fs.h> 28f9693befSMartin Matuska 29*fd45b686SMartin Matuska static int mkdir(struct user_namespace *userns, 30f9693befSMartin Matuska struct inode *inode, struct dentry *dentry, 31f9693befSMartin Matuska umode_t umode) { return 0; } 32f9693befSMartin Matuska 33f9693befSMartin Matuska static const struct inode_operations 34f9693befSMartin Matuska iops __attribute__ ((unused)) = { 35f9693befSMartin Matuska .mkdir = mkdir, 36f9693befSMartin Matuska }; 37f9693befSMartin Matuska ],[]) 38f9693befSMartin Matuska 39f9693befSMartin Matuska dnl # 40f9693befSMartin Matuska dnl # 3.3 API change 41f9693befSMartin Matuska dnl # The VFS .create, .mkdir and .mknod callbacks were updated to take a 42f9693befSMartin Matuska dnl # umode_t type rather than an int. The expectation is that any backport 43f9693befSMartin Matuska dnl # would also change all three prototypes. However, if it turns out that 44f9693befSMartin Matuska dnl # some distribution doesn't backport the whole thing this could be 45f9693befSMartin Matuska dnl # broken apart into three separate checks. 46f9693befSMartin Matuska dnl # 47f9693befSMartin Matuska ZFS_LINUX_TEST_SRC([inode_operations_mkdir], [ 48f9693befSMartin Matuska #include <linux/fs.h> 49f9693befSMartin Matuska 50*fd45b686SMartin Matuska static int mkdir(struct inode *inode, struct dentry *dentry, 51f9693befSMartin Matuska umode_t umode) { return 0; } 52f9693befSMartin Matuska 53f9693befSMartin Matuska static const struct inode_operations 54f9693befSMartin Matuska iops __attribute__ ((unused)) = { 55f9693befSMartin Matuska .mkdir = mkdir, 56f9693befSMartin Matuska }; 57f9693befSMartin Matuska ],[]) 58f9693befSMartin Matuska]) 59f9693befSMartin Matuska 60f9693befSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_MKDIR], [ 61f9693befSMartin Matuska dnl # 62d411c1d6SMartin Matuska dnl # 6.3 API change 63d411c1d6SMartin Matuska dnl # mkdir() takes struct mnt_idmap * as the first arg 64d411c1d6SMartin Matuska dnl # 65d411c1d6SMartin Matuska AC_MSG_CHECKING([whether iops->mkdir() takes struct mnt_idmap*]) 66d411c1d6SMartin Matuska ZFS_LINUX_TEST_RESULT([mkdir_mnt_idmap], [ 67d411c1d6SMartin Matuska AC_MSG_RESULT(yes) 68d411c1d6SMartin Matuska AC_DEFINE(HAVE_IOPS_MKDIR_IDMAP, 1, 69d411c1d6SMartin Matuska [iops->mkdir() takes struct mnt_idmap*]) 70d411c1d6SMartin Matuska ],[ 71d411c1d6SMartin Matuska dnl # 72f9693befSMartin Matuska dnl # 5.12 API change 73f9693befSMartin Matuska dnl # The struct user_namespace arg was added as the first argument to 74f9693befSMartin Matuska dnl # mkdir() of the iops structure. 75f9693befSMartin Matuska dnl # 76f9693befSMartin Matuska AC_MSG_CHECKING([whether iops->mkdir() takes struct user_namespace*]) 77f9693befSMartin Matuska ZFS_LINUX_TEST_RESULT([mkdir_user_namespace], [ 78f9693befSMartin Matuska AC_MSG_RESULT(yes) 79f9693befSMartin Matuska AC_DEFINE(HAVE_IOPS_MKDIR_USERNS, 1, 80f9693befSMartin Matuska [iops->mkdir() takes struct user_namespace*]) 81f9693befSMartin Matuska ],[ 82716fd348SMartin Matuska AC_MSG_RESULT(no) 83716fd348SMartin Matuska 84f9693befSMartin Matuska AC_MSG_CHECKING([whether iops->mkdir() takes umode_t]) 85f9693befSMartin Matuska ZFS_LINUX_TEST_RESULT([inode_operations_mkdir], [ 86f9693befSMartin Matuska AC_MSG_RESULT(yes) 87f9693befSMartin Matuska AC_DEFINE(HAVE_MKDIR_UMODE_T, 1, 88f9693befSMartin Matuska [iops->mkdir() takes umode_t]) 89f9693befSMartin Matuska ],[ 90f9693befSMartin Matuska ZFS_LINUX_TEST_ERROR([mkdir()]) 91f9693befSMartin Matuska ]) 92f9693befSMartin Matuska ]) 93f9693befSMartin Matuska ]) 94d411c1d6SMartin Matuska]) 95