From: Brian Behlendorf Date: Fri, 5 Aug 2011 23:55:04 +0000 (-0700) Subject: Improve HAVE_EVICT_INODE check X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=commitdiff_plain;h=ddd052aa8311f846e3d3f7a9ddf1a21d317fb04a;p=zfs.git 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 Closes #296 --- diff --git a/config/kernel-evict-inode.m4 b/config/kernel-evict-inode.m4 index f748898..0700792 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 ],[ 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 3b136d7..8640242 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;