Linux 2.6.35 compat, fops->fsync()

The fsync() callback in the file_operations structure used to take
3 arguments.  The callback now only takes 2 arguments because the
dentry argument was determined to be unused by all consumers.  To
handle this a compatibility prototype was added to ensure the right
prototype is used.  Our implementation never used the dentry argument
either so it's just a matter of using the right prototype.
This commit is contained in:
Brian Behlendorf
2011-02-11 08:58:55 -08:00
parent 777d4af891
commit 7268e1bec8
52 changed files with 257 additions and 7 deletions
+20
View File
@@ -0,0 +1,20 @@
dnl #
dnl # 2.6.35 API change
dnl # The dentry argument was deamed unused and dropped in 2.6.36.
dnl #
AC_DEFUN([ZFS_AC_KERNEL_FSYNC_2ARGS], [
AC_MSG_CHECKING([whether fops->fsync() wants 2 args])
ZFS_LINUX_TRY_COMPILE([
#include <linux/fs.h>
],[
int (*fsync) (struct file *, int datasync) = NULL;
struct file_operations fops;
fops.fsync = fsync;
],[
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_2ARGS_FSYNC, 1, [fops->fsync() want 2 args])
],[
AC_MSG_RESULT(no)
])
])
+1
View File
@@ -29,6 +29,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
ZFS_AC_KERNEL_RQ_IS_SYNC
ZFS_AC_KERNEL_RQ_FOR_EACH_SEGMENT
ZFS_AC_KERNEL_CONST_XATTR_HANDLER
ZFS_AC_KERNEL_FSYNC_2ARGS
if test "$LINUX_OBJ" != "$LINUX"; then
KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ"