X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=config%2Fkernel-fsync.m4;h=e1f2d68b9b1f5361e28d66bc75dea9eb49600ca8;hb=1a33036df9de8f95aea38ec0d9e483106d1abaa4;hp=2733dba33a54b2b31598c02bdf94718a1b29be13;hpb=7268e1bec8478639b7a1047e02ab931f30bc2f92;p=zfs.git diff --git a/config/kernel-fsync.m4 b/config/kernel-fsync.m4 index 2733dba..e1f2d68 100644 --- a/config/kernel-fsync.m4 +++ b/config/kernel-fsync.m4 @@ -1,20 +1,74 @@ dnl # -dnl # 2.6.35 API change -dnl # The dentry argument was deamed unused and dropped in 2.6.36. +dnl # Linux 2.6.x - 2.6.34 API dnl # -AC_DEFUN([ZFS_AC_KERNEL_FSYNC_2ARGS], [ - AC_MSG_CHECKING([whether fops->fsync() wants 2 args]) +AC_DEFUN([ZFS_AC_KERNEL_FSYNC_WITH_DENTRY], [ ZFS_LINUX_TRY_COMPILE([ #include + + 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, + [fops->fsync() with dentry]) ],[ - int (*fsync) (struct file *, int datasync) = NULL; - struct file_operations fops; + ]) +]) + +dnl # +dnl # Linux 2.6.35 - Linux 3.0 API +dnl # +AC_DEFUN([ZFS_AC_KERNEL_FSYNC_WITHOUT_DENTRY], [ + ZFS_LINUX_TRY_COMPILE([ + #include - 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(yes) - AC_DEFINE(HAVE_2ARGS_FSYNC, 1, [fops->fsync() want 2 args]) + AC_MSG_RESULT([no dentry]) + AC_DEFINE(HAVE_FSYNC_WITHOUT_DENTRY, 1, + [fops->fsync() without dentry]) ],[ - AC_MSG_RESULT(no) ]) ]) + +dnl # +dnl # Linux 3.1 - 3.x API +dnl # +AC_DEFUN([ZFS_AC_KERNEL_FSYNC_RANGE], [ + ZFS_LINUX_TRY_COMPILE([ + #include + + int test_fsync(struct file *f, loff_t a, loff_t b, int c) + { return 0; } + + static const struct file_operations + fops __attribute__ ((unused)) = { + .fsync = test_fsync, + }; + ],[ + ],[ + AC_MSG_RESULT([range]) + AC_DEFINE(HAVE_FSYNC_RANGE, 1, + [fops->fsync() with range]) + ],[ + ]) +]) + +AC_DEFUN([ZFS_AC_KERNEL_FSYNC], [ + AC_MSG_CHECKING([whether fops->fsync() wants]) + ZFS_AC_KERNEL_FSYNC_WITH_DENTRY + ZFS_AC_KERNEL_FSYNC_WITHOUT_DENTRY + ZFS_AC_KERNEL_FSYNC_RANGE +])