diff options
author | youzhongyang <youzhong@gmail.com> | 2023-04-10 17:15:36 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-10 14:15:36 -0700 |
commit | d4dc53dad2f6c3a2d107f1ba0e8d66228c845e00 (patch) | |
tree | c6a1946e83a1c95c622e97af6f0b4939aa7719f9 /config/kernel-mknod.m4 | |
parent | d0cbd9feaf5b82130f2e679256c71e0c7413aae9 (diff) |
Linux 6.3 compat: idmapped mount API changes
Linux kernel 6.3 changed a bunch of APIs to use the dedicated idmap
type for mounts (struct mnt_idmap), we need to detect these changes
and make zfs work with the new APIs.
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Youzhong Yang <yyang@mathworks.com>
Closes #14682
Diffstat (limited to 'config/kernel-mknod.m4')
-rw-r--r-- | config/kernel-mknod.m4 | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/config/kernel-mknod.m4 b/config/kernel-mknod.m4 index ffe451060..1494ec1ae 100644 --- a/config/kernel-mknod.m4 +++ b/config/kernel-mknod.m4 @@ -1,5 +1,23 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_MKNOD], [ dnl # + dnl # 6.3 API change + dnl # The first arg is now struct mnt_idmap* + dnl # + ZFS_LINUX_TEST_SRC([mknod_mnt_idmap], [ + #include <linux/fs.h> + #include <linux/sched.h> + + int tmp_mknod(struct mnt_idmap *idmap, + struct inode *inode ,struct dentry *dentry, + umode_t u, dev_t d) { return 0; } + + static const struct inode_operations + iops __attribute__ ((unused)) = { + .mknod = tmp_mknod, + }; + ],[]) + + dnl # dnl # 5.12 API change that added the struct user_namespace* arg dnl # to the front of this function type's arg list. dnl # @@ -19,12 +37,20 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_MKNOD], [ ]) AC_DEFUN([ZFS_AC_KERNEL_MKNOD], [ - AC_MSG_CHECKING([whether iops->mknod() takes struct user_namespace*]) - ZFS_LINUX_TEST_RESULT([mknod_userns], [ + AC_MSG_CHECKING([whether iops->mknod() takes struct mnt_idmap*]) + ZFS_LINUX_TEST_RESULT([mknod_mnt_idmap], [ AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_IOPS_MKNOD_USERNS, 1, - [iops->mknod() takes struct user_namespace*]) + AC_DEFINE(HAVE_IOPS_MKNOD_IDMAP, 1, + [iops->mknod() takes struct mnt_idmap*]) ],[ AC_MSG_RESULT(no) + AC_MSG_CHECKING([whether iops->mknod() takes struct user_namespace*]) + ZFS_LINUX_TEST_RESULT([mknod_userns], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_IOPS_MKNOD_USERNS, 1, + [iops->mknod() takes struct user_namespace*]) + ],[ + AC_MSG_RESULT(no) + ]) ]) ]) |