aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2011-02-11 08:58:55 -0800
committerBrian Behlendorf <[email protected]>2011-02-11 09:05:51 -0800
commit7268e1bec8478639b7a1047e02ab931f30bc2f92 (patch)
treef3351407cbadd80f457d2d363541135865d82ebe /include/linux
parent777d4af89137907adc91377327505f40c296035d (diff)
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.
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/Makefile.am5
-rw-r--r--include/linux/Makefile.in10
-rw-r--r--include/linux/vfs_compat.h42
3 files changed, 52 insertions, 5 deletions
diff --git a/include/linux/Makefile.am b/include/linux/Makefile.am
index 67b56f83d..0ea6cfeda 100644
--- a/include/linux/Makefile.am
+++ b/include/linux/Makefile.am
@@ -1,8 +1,9 @@
COMMON_H =
KERNEL_H = \
- $(top_srcdir)/include/linux/dcache_compat.h
- $(top_srcdir)/include/linux/xattr_compat.h
+ $(top_srcdir)/include/linux/dcache_compat.h \
+ $(top_srcdir)/include/linux/xattr_compat.h \
+ $(top_srcdir)/include/linux/vfs_compat.h
USER_H =
diff --git a/include/linux/Makefile.in b/include/linux/Makefile.in
index bd6db6f53..cdb09c67e 100644
--- a/include/linux/Makefile.in
+++ b/include/linux/Makefile.in
@@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
$(top_srcdir)/config/kernel-fmode-t.m4 \
+ $(top_srcdir)/config/kernel-fsync.m4 \
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
$(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
$(top_srcdir)/config/kernel-kobj-name-len.m4 \
@@ -85,7 +86,9 @@ am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
am__v_at_0 = @
SOURCES =
DIST_SOURCES =
-am__kernel_HEADERS_DIST = $(top_srcdir)/include/linux/dcache_compat.h
+am__kernel_HEADERS_DIST = $(top_srcdir)/include/linux/dcache_compat.h \
+ $(top_srcdir)/include/linux/xattr_compat.h \
+ $(top_srcdir)/include/linux/vfs_compat.h
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@@ -279,7 +282,9 @@ top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
COMMON_H =
KERNEL_H = \
- $(top_srcdir)/include/linux/dcache_compat.h
+ $(top_srcdir)/include/linux/dcache_compat.h \
+ $(top_srcdir)/include/linux/xattr_compat.h \
+ $(top_srcdir)/include/linux/vfs_compat.h
USER_H =
EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H)
@@ -563,7 +568,6 @@ uninstall-am: uninstall-kernelHEADERS uninstall-libzfsHEADERS
ps ps-am tags uninstall uninstall-am uninstall-kernelHEADERS \
uninstall-libzfsHEADERS
- $(top_srcdir)/include/linux/xattr_compat.h
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/include/linux/vfs_compat.h b/include/linux/vfs_compat.h
new file mode 100644
index 000000000..bbc23a962
--- /dev/null
+++ b/include/linux/vfs_compat.h
@@ -0,0 +1,42 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright (C) 2011 Lawrence Livermore National Security, LLC.
+ */
+
+#ifndef _ZFS_VFS_H
+#define _ZFS_VFS_H
+
+/*
+ * 2.6.35 API change,
+ * The dentry argument to the .fsync() vfs hook was deemed unused by
+ * all filesystem consumers and dropped. Add a compatibility prototype
+ * to ensure correct usage when defining this callback.
+ */
+#ifdef HAVE_2ARGS_FSYNC
+#define ZPL_FSYNC_PROTO(fn, x, y, z) static int fn(struct file *x, int z)
+#else
+#define ZPL_FSYNC_PROTO(fn, x, y, z) static int fn(struct file *x, \
+ struct dentry *y, int z)
+#endif
+
+#endif /* _ZFS_VFS_H */