diff options
author | youzhongyang <[email protected]> | 2023-04-10 17:15:36 -0400 |
---|---|---|
committer | GitHub <[email protected]> | 2023-04-10 14:15:36 -0700 |
commit | d4dc53dad2f6c3a2d107f1ba0e8d66228c845e00 (patch) | |
tree | c6a1946e83a1c95c622e97af6f0b4939aa7719f9 /config/kernel-inode-permission.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 <[email protected]>
Signed-off-by: Youzhong Yang <[email protected]>
Closes #14682
Diffstat (limited to 'config/kernel-inode-permission.m4')
-rw-r--r-- | config/kernel-inode-permission.m4 | 35 |
1 files changed, 30 insertions, 5 deletions
diff --git a/config/kernel-inode-permission.m4 b/config/kernel-inode-permission.m4 index ba9ff5d43..01d23635b 100644 --- a/config/kernel-inode-permission.m4 +++ b/config/kernel-inode-permission.m4 @@ -1,5 +1,23 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_PERMISSION], [ dnl # + dnl # 6.3 API change + dnl # iops->permission() now takes struct mnt_idmap* + dnl # as its first arg + dnl # + ZFS_LINUX_TEST_SRC([permission_mnt_idmap], [ + #include <linux/fs.h> + #include <linux/sched.h> + + int inode_permission(struct mnt_idmap *idmap, + struct inode *inode, int mask) { return 0; } + + static const struct inode_operations + iops __attribute__ ((unused)) = { + .permission = inode_permission, + }; + ],[]) + + 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 # @@ -18,12 +36,19 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_PERMISSION], [ ]) AC_DEFUN([ZFS_AC_KERNEL_PERMISSION], [ - AC_MSG_CHECKING([whether iops->permission() takes struct user_namespace*]) - ZFS_LINUX_TEST_RESULT([permission_userns], [ + AC_MSG_CHECKING([whether iops->permission() takes struct mnt_idmap*]) + ZFS_LINUX_TEST_RESULT([permission_mnt_idmap], [ AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_IOPS_PERMISSION_USERNS, 1, - [iops->permission() takes struct user_namespace*]) + AC_DEFINE(HAVE_IOPS_PERMISSION_IDMAP, 1, + [iops->permission() takes struct mnt_idmap*]) ],[ - AC_MSG_RESULT(no) + AC_MSG_CHECKING([whether iops->permission() takes struct user_namespace*]) + ZFS_LINUX_TEST_RESULT([permission_userns], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_IOPS_PERMISSION_USERNS, 1, + [iops->permission() takes struct user_namespace*]) + ],[ + AC_MSG_RESULT(no) + ]) ]) ]) |