diff options
Diffstat (limited to 'config/kernel-fsync.m4')
-rw-r--r-- | config/kernel-fsync.m4 | 91 |
1 files changed, 21 insertions, 70 deletions
diff --git a/config/kernel-fsync.m4 b/config/kernel-fsync.m4 index ca00d93be..e1f2d68b9 100644 --- a/config/kernel-fsync.m4 +++ b/config/kernel-fsync.m4 @@ -4,11 +4,15 @@ dnl # AC_DEFUN([ZFS_AC_KERNEL_FSYNC_WITH_DENTRY], [ ZFS_LINUX_TRY_COMPILE([ #include <linux/fs.h> - ],[ - int (*fsync) (struct file *, struct dentry *, int) = NULL; - struct file_operations fops __attribute__ ((unused)); - fops.fsync = fsync; + int test_fsync(struct file *f, struct dentry *dentry, int x) + { return 0; } + + static const struct file_operations + fops __attribute__ ((unused)) = { + .fsync = test_fsync, + }; + ],[ ],[ AC_MSG_RESULT([dentry]) AC_DEFINE(HAVE_FSYNC_WITH_DENTRY, 1, @@ -23,11 +27,14 @@ dnl # AC_DEFUN([ZFS_AC_KERNEL_FSYNC_WITHOUT_DENTRY], [ ZFS_LINUX_TRY_COMPILE([ #include <linux/fs.h> - ],[ - int (*fsync) (struct file *, int) = NULL; - struct file_operations fops __attribute__ ((unused)); - fops.fsync = fsync; + int test_fsync(struct file *f, int x) { return 0; } + + static const struct file_operations + fops __attribute__ ((unused)) = { + .fsync = test_fsync, + }; + ],[ ],[ AC_MSG_RESULT([no dentry]) AC_DEFINE(HAVE_FSYNC_WITHOUT_DENTRY, 1, @@ -42,68 +49,15 @@ dnl # AC_DEFUN([ZFS_AC_KERNEL_FSYNC_RANGE], [ ZFS_LINUX_TRY_COMPILE([ #include <linux/fs.h> - ],[ - int (*fsync) (struct file *, loff_t, loff_t, int) = NULL; - struct file_operations fops __attribute__ ((unused)); - - fops.fsync = fsync; - ],[ - AC_MSG_RESULT([range]) - AC_DEFINE(HAVE_FSYNC_RANGE, 1, - [fops->fsync() with range]) - ],[ - ]) -]) -dnl # -dnl # PaX Linux 2.6.x - 2.6.34 API -dnl # -AC_DEFUN([ZFS_AC_PAX_KERNEL_FSYNC_WITH_DENTRY], [ - ZFS_LINUX_TRY_COMPILE([ - #include <linux/fs.h> - ],[ - int (*fsync) (struct file *, struct dentry *, int) = NULL; - file_operations_no_const fops __attribute__ ((unused)); + int test_fsync(struct file *f, loff_t a, loff_t b, int c) + { return 0; } - fops.fsync = fsync; - ],[ - AC_MSG_RESULT([dentry]) - AC_DEFINE(HAVE_FSYNC_WITH_DENTRY, 1, - [fops->fsync() with dentry]) + static const struct file_operations + fops __attribute__ ((unused)) = { + .fsync = test_fsync, + }; ],[ - ]) -]) - -dnl # -dnl # PaX Linux 2.6.35 - Linux 3.0 API -dnl # -AC_DEFUN([ZFS_AC_PAX_KERNEL_FSYNC_WITHOUT_DENTRY], [ - ZFS_LINUX_TRY_COMPILE([ - #include <linux/fs.h> - ],[ - int (*fsync) (struct file *, int) = NULL; - file_operations_no_const fops __attribute__ ((unused)); - - fops.fsync = fsync; - ],[ - AC_MSG_RESULT([no dentry]) - AC_DEFINE(HAVE_FSYNC_WITHOUT_DENTRY, 1, - [fops->fsync() without dentry]) - ],[ - ]) -]) - -dnl # -dnl # PaX Linux 3.1 - 3.x API -dnl # -AC_DEFUN([ZFS_AC_PAX_KERNEL_FSYNC_RANGE], [ - ZFS_LINUX_TRY_COMPILE([ - #include <linux/fs.h> - ],[ - int (*fsync) (struct file *, loff_t, loff_t, int) = NULL; - file_operations_no_const fops __attribute__ ((unused)); - - fops.fsync = fsync; ],[ AC_MSG_RESULT([range]) AC_DEFINE(HAVE_FSYNC_RANGE, 1, @@ -117,7 +71,4 @@ AC_DEFUN([ZFS_AC_KERNEL_FSYNC], [ ZFS_AC_KERNEL_FSYNC_WITH_DENTRY ZFS_AC_KERNEL_FSYNC_WITHOUT_DENTRY ZFS_AC_KERNEL_FSYNC_RANGE - ZFS_AC_PAX_KERNEL_FSYNC_WITH_DENTRY - ZFS_AC_PAX_KERNEL_FSYNC_WITHOUT_DENTRY - ZFS_AC_PAX_KERNEL_FSYNC_RANGE ]) |