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