| dnl # |
| dnl # Supported mkdir() interfaces checked newest to oldest. |
| dnl # |
| AC_DEFUN([ZFS_AC_KERNEL_SRC_MKDIR], [ |
| dnl # |
| dnl # 6.3 API change |
| dnl # mkdir() takes struct mnt_idmap * as the first arg |
| dnl # |
| ZFS_LINUX_TEST_SRC([mkdir_mnt_idmap], [ |
| #include <linux/fs.h> |
| |
| int mkdir(struct mnt_idmap *idmap, |
| struct inode *inode, struct dentry *dentry, |
| umode_t umode) { return 0; } |
| static const struct inode_operations |
| iops __attribute__ ((unused)) = { |
| .mkdir = mkdir, |
| }; |
| ],[]) |
| |
| dnl # |
| dnl # 5.12 API change |
| dnl # The struct user_namespace arg was added as the first argument to |
| dnl # mkdir() |
| dnl # |
| ZFS_LINUX_TEST_SRC([mkdir_user_namespace], [ |
| #include <linux/fs.h> |
| |
| int mkdir(struct user_namespace *userns, |
| struct inode *inode, struct dentry *dentry, |
| umode_t umode) { return 0; } |
| |
| static const struct inode_operations |
| iops __attribute__ ((unused)) = { |
| .mkdir = mkdir, |
| }; |
| ],[]) |
| |
| dnl # |
| dnl # 3.3 API change |
| dnl # The VFS .create, .mkdir and .mknod callbacks were updated to take a |
| dnl # umode_t type rather than an int. The expectation is that any backport |
| dnl # would also change all three prototypes. However, if it turns out that |
| dnl # some distribution doesn't backport the whole thing this could be |
| dnl # broken apart into three separate checks. |
| dnl # |
| ZFS_LINUX_TEST_SRC([inode_operations_mkdir], [ |
| #include <linux/fs.h> |
| |
| int mkdir(struct inode *inode, struct dentry *dentry, |
| umode_t umode) { return 0; } |
| |
| static const struct inode_operations |
| iops __attribute__ ((unused)) = { |
| .mkdir = mkdir, |
| }; |
| ],[]) |
| ]) |
| |
| AC_DEFUN([ZFS_AC_KERNEL_MKDIR], [ |
| dnl # |
| dnl # 6.3 API change |
| dnl # mkdir() takes struct mnt_idmap * as the first arg |
| dnl # |
| AC_MSG_CHECKING([whether iops->mkdir() takes struct mnt_idmap*]) |
| ZFS_LINUX_TEST_RESULT([mkdir_mnt_idmap], [ |
| AC_MSG_RESULT(yes) |
| AC_DEFINE(HAVE_IOPS_MKDIR_IDMAP, 1, |
| [iops->mkdir() takes struct mnt_idmap*]) |
| ],[ |
| dnl # |
| dnl # 5.12 API change |
| dnl # The struct user_namespace arg was added as the first argument to |
| dnl # mkdir() of the iops structure. |
| dnl # |
| AC_MSG_CHECKING([whether iops->mkdir() takes struct user_namespace*]) |
| ZFS_LINUX_TEST_RESULT([mkdir_user_namespace], [ |
| AC_MSG_RESULT(yes) |
| AC_DEFINE(HAVE_IOPS_MKDIR_USERNS, 1, |
| [iops->mkdir() takes struct user_namespace*]) |
| ],[ |
| AC_MSG_RESULT(no) |
| |
| AC_MSG_CHECKING([whether iops->mkdir() takes umode_t]) |
| ZFS_LINUX_TEST_RESULT([inode_operations_mkdir], [ |
| AC_MSG_RESULT(yes) |
| AC_DEFINE(HAVE_MKDIR_UMODE_T, 1, |
| [iops->mkdir() takes umode_t]) |
| ],[ |
| ZFS_LINUX_TEST_ERROR([mkdir()]) |
| ]) |
| ]) |
| ]) |
| ]) |