summaryrefslogtreecommitdiffstats
path: root/config/kernel-xattr-handler.m4
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2011-02-10 16:16:52 -0800
committerBrian Behlendorf <[email protected]>2011-02-10 16:29:00 -0800
commit777d4af89137907adc91377327505f40c296035d (patch)
tree08dd869e748991b1a82b95c7044acc004d6dc6ad /config/kernel-xattr-handler.m4
parent1b94c25ceb12649b4b2ffb9a016e4f51cfa91736 (diff)
Linux 2.6.35 compat, const struct xattr_handler
The const keyword was added to the 'struct xattr_handler' in the generic Linux super_block structure. To handle this we define an appropriate xattr_handler_t typedef which can be used. This was the preferred solution because it keeps the code clean and readable.
Diffstat (limited to 'config/kernel-xattr-handler.m4')
-rw-r--r--config/kernel-xattr-handler.m432
1 files changed, 32 insertions, 0 deletions
diff --git a/config/kernel-xattr-handler.m4 b/config/kernel-xattr-handler.m4
new file mode 100644
index 000000000..fa7294597
--- /dev/null
+++ b/config/kernel-xattr-handler.m4
@@ -0,0 +1,32 @@
+dnl #
+dnl # 2.6.35 API change,
+dnl # The 'struct xattr_handler' was constified in the generic
+dnl # super_block structure.
+dnl #
+AC_DEFUN([ZFS_AC_KERNEL_CONST_XATTR_HANDLER],
+ [AC_MSG_CHECKING([whether super_block uses const struct xattr_hander])
+ ZFS_LINUX_TRY_COMPILE([
+ #include <linux/fs.h>
+ #include <linux/xattr.h>
+
+ const struct xattr_handler xattr_test_handler = {
+ .prefix = "test",
+ .get = NULL,
+ .set = NULL,
+ };
+
+ const struct xattr_handler *xattr_handlers[] = {
+ &xattr_test_handler,
+ };
+ ],[
+ struct super_block sb;
+
+ sb.s_xattr = xattr_handlers;
+ ],[
+ AC_MSG_RESULT([yes])
+ AC_DEFINE(HAVE_CONST_XATTR_HANDLER, 1,
+ [super_block uses const struct xattr_hander])
+ ],[
+ AC_MSG_RESULT([no])
+ ])
+])