aboutsummaryrefslogtreecommitdiffstats
path: root/config/kernel-put-link.m4
diff options
context:
space:
mode:
Diffstat (limited to 'config/kernel-put-link.m4')
-rw-r--r--config/kernel-put-link.m457
1 files changed, 29 insertions, 28 deletions
diff --git a/config/kernel-put-link.m4 b/config/kernel-put-link.m4
index a0bb36ef2..f03df9e99 100644
--- a/config/kernel-put-link.m4
+++ b/config/kernel-put-link.m4
@@ -1,17 +1,35 @@
dnl #
dnl # Supported symlink APIs
dnl #
+AC_DEFUN([ZFS_AC_KERNEL_SRC_PUT_LINK], [
+ ZFS_LINUX_TEST_SRC([put_link_cookie], [
+ #include <linux/fs.h>
+ void put_link(struct inode *ip, void *cookie)
+ { return; }
+ static struct inode_operations
+ iops __attribute__ ((unused)) = {
+ .put_link = put_link,
+ };
+ ],[])
+
+ ZFS_LINUX_TEST_SRC([put_link_nameidata], [
+ #include <linux/fs.h>
+ void put_link(struct dentry *de, struct
+ nameidata *nd, void *ptr) { return; }
+ static struct inode_operations
+ iops __attribute__ ((unused)) = {
+ .put_link = put_link,
+ };
+ ],[])
+])
+
AC_DEFUN([ZFS_AC_KERNEL_PUT_LINK], [
dnl #
dnl # 4.5 API change
dnl # get_link() uses delayed done, there is no put_link() interface.
+ dnl # This check intially uses the inode_operations_get_link result
dnl #
- ZFS_LINUX_TRY_COMPILE([
- #if !defined(HAVE_GET_LINK_DELAYED)
- #error "Expecting get_link() delayed done"
- #endif
- ],[
- ],[
+ ZFS_LINUX_TEST_RESULT([inode_operations_get_link], [
AC_DEFINE(HAVE_PUT_LINK_DELAYED, 1, [iops->put_link() delayed])
],[
dnl #
@@ -19,41 +37,24 @@ AC_DEFUN([ZFS_AC_KERNEL_PUT_LINK], [
dnl # This kernel retired the nameidata structure.
dnl #
AC_MSG_CHECKING([whether iops->put_link() passes cookie])
- ZFS_LINUX_TRY_COMPILE([
- #include <linux/fs.h>
- void put_link(struct inode *ip, void *cookie)
- { return; }
- static struct inode_operations
- iops __attribute__ ((unused)) = {
- .put_link = put_link,
- };
- ],[
- ],[
+ ZFS_LINUX_TEST_RESULT([put_link_cookie], [
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_PUT_LINK_COOKIE, 1,
[iops->put_link() cookie])
],[
+ AC_MSG_RESULT(no)
+
dnl #
dnl # 2.6.32 API
dnl #
- AC_MSG_RESULT(no)
AC_MSG_CHECKING(
[whether iops->put_link() passes nameidata])
- ZFS_LINUX_TRY_COMPILE([
- #include <linux/fs.h>
- void put_link(struct dentry *de, struct
- nameidata *nd, void *ptr) { return; }
- static struct inode_operations
- iops __attribute__ ((unused)) = {
- .put_link = put_link,
- };
- ],[
- ],[
+ ZFS_LINUX_TEST_RESULT([put_link_nameidata], [
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_PUT_LINK_NAMEIDATA, 1,
[iops->put_link() nameidata])
],[
- AC_MSG_ERROR(no; please file a bug report)
+ ZFS_LINUX_TEST_ERROR([put_link])
])
])
])