aboutsummaryrefslogtreecommitdiffstats
path: root/config/kernel-vfs-iterate.m4
diff options
context:
space:
mode:
Diffstat (limited to 'config/kernel-vfs-iterate.m4')
-rw-r--r--config/kernel-vfs-iterate.m484
1 files changed, 46 insertions, 38 deletions
diff --git a/config/kernel-vfs-iterate.m4 b/config/kernel-vfs-iterate.m4
index 5de901d44..172118eac 100644
--- a/config/kernel-vfs-iterate.m4
+++ b/config/kernel-vfs-iterate.m4
@@ -1,9 +1,5 @@
-AC_DEFUN([ZFS_AC_KERNEL_VFS_ITERATE], [
- dnl #
- dnl # 4.7 API change
- dnl #
- AC_MSG_CHECKING([whether fops->iterate_shared() is available])
- ZFS_LINUX_TRY_COMPILE([
+AC_DEFUN([ZFS_AC_KERNEL_SRC_VFS_ITERATE], [
+ ZFS_LINUX_TEST_SRC([file_operations_iterate_shared], [
#include <linux/fs.h>
int iterate(struct file *filp, struct dir_context * context)
{ return 0; }
@@ -12,11 +8,44 @@ AC_DEFUN([ZFS_AC_KERNEL_VFS_ITERATE], [
__attribute__ ((unused)) = {
.iterate_shared = iterate,
};
- ],[
- ],[
+ ],[])
+
+ ZFS_LINUX_TEST_SRC([file_operations_iterate], [
+ #include <linux/fs.h>
+ int iterate(struct file *filp,
+ struct dir_context *context) { return 0; }
+
+ static const struct file_operations fops
+ __attribute__ ((unused)) = {
+ .iterate = iterate,
+ };
+
+ #if defined(FMODE_KABI_ITERATE)
+ #error "RHEL 7.5, FMODE_KABI_ITERATE interface"
+ #endif
+ ],[])
+
+ ZFS_LINUX_TEST_SRC([file_operations_readdir], [
+ #include <linux/fs.h>
+ int readdir(struct file *filp, void *entry,
+ filldir_t func) { return 0; }
+
+ static const struct file_operations fops
+ __attribute__ ((unused)) = {
+ .readdir = readdir,
+ };
+ ],[])
+])
+
+AC_DEFUN([ZFS_AC_KERNEL_VFS_ITERATE], [
+ dnl #
+ dnl # 4.7 API change
+ dnl #
+ AC_MSG_CHECKING([whether fops->iterate_shared() is available])
+ ZFS_LINUX_TEST_RESULT([file_operations_iterate_shared], [
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_VFS_ITERATE_SHARED, 1,
- [fops->iterate_shared() is available])
+ [fops->iterate_shared() is available])
],[
AC_MSG_RESULT(no)
@@ -31,44 +60,23 @@ AC_DEFUN([ZFS_AC_KERNEL_VFS_ITERATE], [
dnl # to using fops.readdir() to retain KABI compatibility.
dnl #
AC_MSG_CHECKING([whether fops->iterate() is available])
- ZFS_LINUX_TRY_COMPILE([
- #include <linux/fs.h>
- int iterate(struct file *filp,
- struct dir_context *context) { return 0; }
-
- static const struct file_operations fops
- __attribute__ ((unused)) = {
- .iterate = iterate,
- };
-
- #if defined(FMODE_KABI_ITERATE)
- #error "RHEL 7.5, FMODE_KABI_ITERATE interface"
- #endif
- ],[
- ],[
+ ZFS_LINUX_TEST_RESULT([file_operations_iterate], [
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_VFS_ITERATE, 1,
- [fops->iterate() is available])
+ [fops->iterate() is available])
],[
AC_MSG_RESULT(no)
+ dnl #
+ dnl # readdir interface introduced
+ dnl #
AC_MSG_CHECKING([whether fops->readdir() is available])
- ZFS_LINUX_TRY_COMPILE([
- #include <linux/fs.h>
- int readdir(struct file *filp, void *entry,
- filldir_t func) { return 0; }
-
- static const struct file_operations fops
- __attribute__ ((unused)) = {
- .readdir = readdir,
- };
- ],[
- ],[
+ ZFS_LINUX_TEST_RESULT([file_operations_readdir], [
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_VFS_READDIR, 1,
- [fops->readdir() is available])
+ [fops->readdir() is available])
],[
- AC_MSG_ERROR(no; file a bug report with ZoL)
+ ZFS_LINUX_TEST_ERROR([vfs_iterate])
])
])
])