aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2011-08-05 16:55:04 -0700
committerBrian Behlendorf <[email protected]>2011-08-08 16:42:09 -0700
commitddd052aa8311f846e3d3f7a9ddf1a21d317fb04a (patch)
treebfbfeabb2d13f1d1f9b057e4c45ce86da85b61a4
parentde0a1c099b7dc6722eb428838e893a4d9490a21e (diff)
Improve HAVE_EVICT_INODE check
The hardened gentoo kernel defines all of the super block operation callbacks as const. This prevents the autoconf test from assigning the callback and results in a false negative. By moving the assignment in to the declaration we can avoid this issue and get a correct result for this patched kernel. Signed-off-by: Brian Behlendorf <[email protected]> Closes #296
-rw-r--r--config/kernel-evict-inode.m46
-rwxr-xr-xconfigure12
2 files changed, 9 insertions, 9 deletions
diff --git a/config/kernel-evict-inode.m4 b/config/kernel-evict-inode.m4
index f748898c3..0700792f9 100644
--- a/config/kernel-evict-inode.m4
+++ b/config/kernel-evict-inode.m4
@@ -9,9 +9,9 @@ AC_DEFUN([ZFS_AC_KERNEL_EVICT_INODE], [
#include <linux/fs.h>
],[
void (*evict_inode) (struct inode *) = NULL;
- struct super_operations sops __attribute__ ((unused));
-
- sops.evict_inode = evict_inode;
+ struct super_operations sops __attribute__ ((unused)) = {
+ .evict_inode = evict_inode,
+ };
],[
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_EVICT_INODE, 1, [sops->evict_inode() exists])
diff --git a/configure b/configure
index 3b136d7c8..864024253 100755
--- a/configure
+++ b/configure
@@ -14375,9 +14375,9 @@ main (void)
{
void (*evict_inode) (struct inode *) = NULL;
- struct super_operations sops __attribute__ ((unused));
-
- sops.evict_inode = evict_inode;
+ struct super_operations sops __attribute__ ((unused)) = {
+ .evict_inode = evict_inode,
+ };
;
return 0;
@@ -18733,9 +18733,9 @@ main (void)
{
void (*evict_inode) (struct inode *) = NULL;
- struct super_operations sops __attribute__ ((unused));
-
- sops.evict_inode = evict_inode;
+ struct super_operations sops __attribute__ ((unused)) = {
+ .evict_inode = evict_inode,
+ };
;
return 0;