summaryrefslogtreecommitdiffstats
path: root/config
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
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')
-rw-r--r--config/kernel-xattr-handler.m432
-rw-r--r--config/kernel.m41
2 files changed, 33 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])
+ ])
+])
diff --git a/config/kernel.m4 b/config/kernel.m4
index 2c83dc590..d1ed54fba 100644
--- a/config/kernel.m4
+++ b/config/kernel.m4
@@ -28,6 +28,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
ZFS_AC_KERNEL_GET_DISK_RO
ZFS_AC_KERNEL_RQ_IS_SYNC
ZFS_AC_KERNEL_RQ_FOR_EACH_SEGMENT
+ ZFS_AC_KERNEL_CONST_XATTR_HANDLER
if test "$LINUX_OBJ" != "$LINUX"; then
KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ"