1AC_DEFUN([ZFS_AC_KERNEL_SRC_INODE_SETATTR], [ 2 dnl # 3 dnl # Linux 6.3 API 4 dnl # The first arg of setattr I/O operations handler type 5 dnl # is changed to struct mnt_idmap* 6 dnl # 7 ZFS_LINUX_TEST_SRC([inode_operations_setattr_mnt_idmap], [ 8 #include <linux/fs.h> 9 10 int test_setattr( 11 struct mnt_idmap *idmap, 12 struct dentry *de, struct iattr *ia) 13 { return 0; } 14 15 static const struct inode_operations 16 iops __attribute__ ((unused)) = { 17 .setattr = test_setattr, 18 }; 19 ],[]) 20 21 dnl # 22 dnl # Linux 5.12 API 23 dnl # The setattr I/O operations handler type was extended to require 24 dnl # a struct user_namespace* as its first arg, to support idmapped 25 dnl # mounts. 26 dnl # 27 ZFS_LINUX_TEST_SRC([inode_operations_setattr_userns], [ 28 #include <linux/fs.h> 29 30 int test_setattr( 31 struct user_namespace *userns, 32 struct dentry *de, struct iattr *ia) 33 { return 0; } 34 35 static const struct inode_operations 36 iops __attribute__ ((unused)) = { 37 .setattr = test_setattr, 38 }; 39 ],[]) 40 41 ZFS_LINUX_TEST_SRC([inode_operations_setattr], [ 42 #include <linux/fs.h> 43 44 int test_setattr( 45 struct dentry *de, struct iattr *ia) 46 { return 0; } 47 48 static const struct inode_operations 49 iops __attribute__ ((unused)) = { 50 .setattr = test_setattr, 51 }; 52 ],[]) 53]) 54 55AC_DEFUN([ZFS_AC_KERNEL_INODE_SETATTR], [ 56 dnl # 57 dnl # Kernel 6.3 test 58 dnl # 59 AC_MSG_CHECKING([whether iops->setattr() takes mnt_idmap]) 60 ZFS_LINUX_TEST_RESULT([inode_operations_setattr_mnt_idmap], [ 61 AC_MSG_RESULT(yes) 62 AC_DEFINE(HAVE_IDMAP_IOPS_SETATTR, 1, 63 [iops->setattr() takes struct mnt_idmap*]) 64 ],[ 65 AC_MSG_RESULT(no) 66 dnl # 67 dnl # Kernel 5.12 test 68 dnl # 69 AC_MSG_CHECKING([whether iops->setattr() takes user_namespace]) 70 ZFS_LINUX_TEST_RESULT([inode_operations_setattr_userns], [ 71 AC_MSG_RESULT(yes) 72 AC_DEFINE(HAVE_USERNS_IOPS_SETATTR, 1, 73 [iops->setattr() takes struct user_namespace*]) 74 ],[ 75 AC_MSG_RESULT(no) 76 77 AC_MSG_CHECKING([whether iops->setattr() exists]) 78 ZFS_LINUX_TEST_RESULT([inode_operations_setattr], [ 79 AC_MSG_RESULT(yes) 80 AC_DEFINE(HAVE_IOPS_SETATTR, 1, 81 [iops->setattr() exists]) 82 ],[ 83 AC_MSG_RESULT(no) 84 ]) 85 ]) 86 ]) 87]) 88