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