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 <behlendorf1@llnl.gov>
Closes #296
This commit is contained in:
Brian Behlendorf 2011-08-05 16:55:04 -07:00
parent de0a1c099b
commit ddd052aa83
2 changed files with 9 additions and 9 deletions

View File

@ -9,9 +9,9 @@ AC_DEFUN([ZFS_AC_KERNEL_EVICT_INODE], [
#include <linux/fs.h> #include <linux/fs.h>
],[ ],[
void (*evict_inode) (struct inode *) = NULL; void (*evict_inode) (struct inode *) = NULL;
struct super_operations sops __attribute__ ((unused)); struct super_operations sops __attribute__ ((unused)) = {
.evict_inode = evict_inode,
sops.evict_inode = evict_inode; };
],[ ],[
AC_MSG_RESULT(yes) AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_EVICT_INODE, 1, [sops->evict_inode() exists]) AC_DEFINE(HAVE_EVICT_INODE, 1, [sops->evict_inode() exists])

12
configure vendored
View File

@ -14375,9 +14375,9 @@ main (void)
{ {
void (*evict_inode) (struct inode *) = NULL; void (*evict_inode) (struct inode *) = NULL;
struct super_operations sops __attribute__ ((unused)); struct super_operations sops __attribute__ ((unused)) = {
.evict_inode = evict_inode,
sops.evict_inode = evict_inode; };
; ;
return 0; return 0;
@ -18733,9 +18733,9 @@ main (void)
{ {
void (*evict_inode) (struct inode *) = NULL; void (*evict_inode) (struct inode *) = NULL;
struct super_operations sops __attribute__ ((unused)); struct super_operations sops __attribute__ ((unused)) = {
.evict_inode = evict_inode,
sops.evict_inode = evict_inode; };
; ;
return 0; return 0;