1eda14cbcSMatt Macydnl # 2eda14cbcSMatt Macydnl # 2.6.39 API change, 3eda14cbcSMatt Macydnl # The is_owner_or_cap() macro was renamed to inode_owner_or_capable(), 4eda14cbcSMatt Macydnl # This is used for permission checks in the xattr and file attribute call 5eda14cbcSMatt Macydnl # paths. 6eda14cbcSMatt Macydnl # 716038816SMartin Matuskadnl # 5.12 API change, 816038816SMartin Matuskadnl # inode_owner_or_capable() now takes struct user_namespace * 916038816SMartin Matuskadnl # to support idmapped mounts 1016038816SMartin Matuskadnl # 11eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_INODE_OWNER_OR_CAPABLE], [ 12eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([inode_owner_or_capable], [ 13eda14cbcSMatt Macy #include <linux/fs.h> 14eda14cbcSMatt Macy ],[ 15eda14cbcSMatt Macy struct inode *ip = NULL; 16eda14cbcSMatt Macy (void) inode_owner_or_capable(ip); 17eda14cbcSMatt Macy ]) 18f9693befSMartin Matuska 19*d411c1d6SMartin Matuska ZFS_LINUX_TEST_SRC([inode_owner_or_capable_userns], [ 20f9693befSMartin Matuska #include <linux/fs.h> 21f9693befSMartin Matuska ],[ 22f9693befSMartin Matuska struct inode *ip = NULL; 23f9693befSMartin Matuska (void) inode_owner_or_capable(&init_user_ns, ip); 24f9693befSMartin Matuska ]) 25*d411c1d6SMartin Matuska 26*d411c1d6SMartin Matuska ZFS_LINUX_TEST_SRC([inode_owner_or_capable_mnt_idmap], [ 27*d411c1d6SMartin Matuska #include <linux/fs.h> 28*d411c1d6SMartin Matuska #include <linux/mnt_idmapping.h> 29*d411c1d6SMartin Matuska ],[ 30*d411c1d6SMartin Matuska struct inode *ip = NULL; 31*d411c1d6SMartin Matuska (void) inode_owner_or_capable(&nop_mnt_idmap, ip); 32*d411c1d6SMartin Matuska ]) 33eda14cbcSMatt Macy]) 34eda14cbcSMatt Macy 35eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_INODE_OWNER_OR_CAPABLE], [ 36eda14cbcSMatt Macy AC_MSG_CHECKING([whether inode_owner_or_capable() exists]) 37eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([inode_owner_or_capable], [ 38eda14cbcSMatt Macy AC_MSG_RESULT(yes) 39f9693befSMartin Matuska AC_DEFINE(HAVE_INODE_OWNER_OR_CAPABLE, 1, 40f9693befSMartin Matuska [inode_owner_or_capable() exists]) 41f9693befSMartin Matuska ], [ 42f9693befSMartin Matuska AC_MSG_RESULT(no) 43f9693befSMartin Matuska 44f9693befSMartin Matuska AC_MSG_CHECKING( 45f9693befSMartin Matuska [whether inode_owner_or_capable() takes user_ns]) 46*d411c1d6SMartin Matuska ZFS_LINUX_TEST_RESULT([inode_owner_or_capable_userns], [ 47f9693befSMartin Matuska AC_MSG_RESULT(yes) 48*d411c1d6SMartin Matuska AC_DEFINE(HAVE_INODE_OWNER_OR_CAPABLE_USERNS, 1, 49f9693befSMartin Matuska [inode_owner_or_capable() takes user_ns]) 50eda14cbcSMatt Macy ],[ 51*d411c1d6SMartin Matuska AC_MSG_RESULT(no) 52*d411c1d6SMartin Matuska AC_MSG_CHECKING( 53*d411c1d6SMartin Matuska [whether inode_owner_or_capable() takes mnt_idmap]) 54*d411c1d6SMartin Matuska ZFS_LINUX_TEST_RESULT([inode_owner_or_capable_mnt_idmap], [ 55*d411c1d6SMartin Matuska AC_MSG_RESULT(yes) 56*d411c1d6SMartin Matuska AC_DEFINE(HAVE_INODE_OWNER_OR_CAPABLE_IDMAP, 1, 57*d411c1d6SMartin Matuska [inode_owner_or_capable() takes mnt_idmap]) 58*d411c1d6SMartin Matuska ], [ 59eda14cbcSMatt Macy ZFS_LINUX_TEST_ERROR([capability]) 60eda14cbcSMatt Macy ]) 61eda14cbcSMatt Macy ]) 62f9693befSMartin Matuska ]) 63*d411c1d6SMartin Matuska]) 64