From 3b4f425a5a321c02f6cf10e2ffba891ff79b80c6 Mon Sep 17 00:00:00 2001 From: Richard Yao Date: Tue, 29 Apr 2014 22:42:09 -0400 Subject: [PATCH] Refactor inode_owner_or_capable() autotools check We need inode_owner_or_capable() for ZFS file attributes in addition to xattrs, so it should go into its own file. This moves it into its own file and changes it to be more comprehensive. It will now fail if no known good API is detected. Signed-off-by: Richard Yao Signed-off-by: Brian Behlendorf Issue #1691 --- config/kernel-is_owner_or_cap.m4 | 36 ++++++++++++++++++++++++++++++++ config/kernel-xattr-handler.m4 | 19 ----------------- 2 files changed, 36 insertions(+), 19 deletions(-) create mode 100644 config/kernel-is_owner_or_cap.m4 diff --git a/config/kernel-is_owner_or_cap.m4 b/config/kernel-is_owner_or_cap.m4 new file mode 100644 index 0000000000..da07e58dda --- /dev/null +++ b/config/kernel-is_owner_or_cap.m4 @@ -0,0 +1,36 @@ +dnl # +dnl # 2.6.39 API change, +dnl # The is_owner_or_cap() macro was renamed to inode_owner_or_capable(), +dnl # This is used for permission checks in the xattr and file attribute call +dnl # paths. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_INODE_OWNER_OR_CAPABLE], [ + AC_MSG_CHECKING([whether inode_owner_or_capable() exists]) + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + struct inode *ip = NULL; + (void) inode_owner_or_capable(ip); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_INODE_OWNER_OR_CAPABLE, 1, + [inode_owner_or_capable() exists]) + ],[ + AC_MSG_RESULT(no) + AC_MSG_CHECKING([whether is_owner_or_cap() exists]) + ZFS_LINUX_TRY_COMPILE([ + #include + #include + ],[ + struct inode *ip = NULL; + (void) is_owner_or_cap(ip); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_IS_OWNER_OR_CAP, 1, + [is_owner_or_cap() exists]) + ],[ + AC_MSG_ERROR(no - Please file a bug report at + https://github.com/zfsonlinux/zfs/issues/new) + ]) + ]) +]) diff --git a/config/kernel-xattr-handler.m4 b/config/kernel-xattr-handler.m4 index 2ba2fcbcd2..1374f79170 100644 --- a/config/kernel-xattr-handler.m4 +++ b/config/kernel-xattr-handler.m4 @@ -134,22 +134,3 @@ AC_DEFUN([ZFS_AC_KERNEL_POSIX_ACL_FROM_XATTR_USERNS], [ ]) ]) -dnl # -dnl # 2.6.39 API change, -dnl # The is_owner_or_cap() macro was replaced by inode_owner_or_capable(), -dnl # this is used for permission checks in the xattr call paths. -dnl # -AC_DEFUN([ZFS_AC_KERNEL_INODE_OWNER_OR_CAPABLE], [ - AC_MSG_CHECKING([whether inode_owner_or_capable() exists]) - ZFS_LINUX_TRY_COMPILE([ - #include - ],[ - inode_owner_or_capable(NULL); - ],[ - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_INODE_OWNER_OR_CAPABLE, 1, - [inode_owner_or_capable() exists]) - ],[ - AC_MSG_RESULT(no) - ]) -])