summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config/kernel-bdev-block-device-operations.m425
-rw-r--r--config/kernel-bio-end-io-t-args.m48
-rw-r--r--config/kernel-create-nameidata.m415
-rw-r--r--config/kernel-dentry-operations.m412
-rw-r--r--config/kernel-dirty-inode.m411
-rw-r--r--config/kernel-fallocate.m445
-rw-r--r--config/kernel-fsync.m491
-rw-r--r--config/kernel-lookup-nameidata.m414
-rw-r--r--config/kernel-mkdir-umode-t.m410
-rw-r--r--config/kernel-shrink.m432
10 files changed, 113 insertions, 150 deletions
diff --git a/config/kernel-bdev-block-device-operations.m4 b/config/kernel-bdev-block-device-operations.m4
index 28c3032aa..8b5e0a32b 100644
--- a/config/kernel-bdev-block-device-operations.m4
+++ b/config/kernel-bdev-block-device-operations.m4
@@ -7,24 +7,23 @@ AC_DEFUN([ZFS_AC_KERNEL_BDEV_BLOCK_DEVICE_OPERATIONS], [
EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}"
ZFS_LINUX_TRY_COMPILE([
#include <linux/blkdev.h>
- ],[
- int (*blk_open) (struct block_device *, fmode_t) = NULL;
- int (*blk_release) (struct gendisk *, fmode_t) = NULL;
- int (*blk_ioctl) (struct block_device *, fmode_t,
- unsigned, unsigned long) = NULL;
- int (*blk_compat_ioctl) (struct block_device *, fmode_t,
- unsigned, unsigned long) = NULL;
- struct block_device_operations blk_ops = {
+
+ int blk_open(struct block_device *bdev, fmode_t mode)
+ { return 0; }
+ int blk_release(struct gendisk *g, fmode_t mode) { return 0; }
+ int blk_ioctl(struct block_device *bdev, fmode_t mode,
+ unsigned x, unsigned long y) { return 0; }
+ int blk_compat_ioctl(struct block_device * bdev, fmode_t mode,
+ unsigned x, unsigned long y) { return 0; }
+
+ static const struct block_device_operations
+ bops __attribute__ ((unused)) = {
.open = blk_open,
.release = blk_release,
.ioctl = blk_ioctl,
.compat_ioctl = blk_compat_ioctl,
};
-
- blk_ops.open(NULL, 0);
- blk_ops.release(NULL, 0);
- blk_ops.ioctl(NULL, 0, 0, 0);
- blk_ops.compat_ioctl(NULL, 0, 0, 0);
+ ],[
],[
AC_MSG_RESULT(struct block_device)
AC_DEFINE(HAVE_BDEV_BLOCK_DEVICE_OPERATIONS, 1,
diff --git a/config/kernel-bio-end-io-t-args.m4 b/config/kernel-bio-end-io-t-args.m4
index 44e4826bf..407e55cd0 100644
--- a/config/kernel-bio-end-io-t-args.m4
+++ b/config/kernel-bio-end-io-t-args.m4
@@ -11,11 +11,11 @@ AC_DEFUN([ZFS_AC_KERNEL_BIO_END_IO_T_ARGS], [
AC_MSG_CHECKING([whether bio_end_io_t wants 2 args])
ZFS_LINUX_TRY_COMPILE([
#include <linux/bio.h>
- ],[
- void (*wanted_end_io)(struct bio *, int) = NULL;
- bio_end_io_t *local_end_io __attribute__ ((unused));
- local_end_io = wanted_end_io;
+ void wanted_end_io(struct bio *bio, int x) { return; }
+
+ bio_end_io_t *end_io __attribute__ ((unused)) = wanted_end_io;
+ ],[
],[
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_2ARGS_BIO_END_IO_T, 1,
diff --git a/config/kernel-create-nameidata.m4 b/config/kernel-create-nameidata.m4
index 100f07761..9aad46fec 100644
--- a/config/kernel-create-nameidata.m4
+++ b/config/kernel-create-nameidata.m4
@@ -5,18 +5,21 @@ AC_DEFUN([ZFS_AC_KERNEL_CREATE_NAMEIDATA], [
AC_MSG_CHECKING([whether iops->create() takes struct nameidata])
ZFS_LINUX_TRY_COMPILE([
#include <linux/fs.h>
- ],[
+
#ifdef HAVE_MKDIR_UMODE_T
- int (*inode_create) (struct inode *,struct dentry *,
- umode_t, struct nameidata *) = NULL;
+ int inode_create(struct inode *inode ,struct dentry *dentry,
+ umode_t umode, struct nameidata *nidata) { return 0; }
#else
- int (*inode_create) (struct inode *,struct dentry *,
- int, struct nameidata *) = NULL;
+ int inode_create(struct inode *inode,struct dentry *dentry,
+ int umode, struct nameidata * nidata) { return 0; }
#endif
- struct inode_operations iops __attribute__ ((unused)) = {
+
+ static const struct inode_operations
+ iops __attribute__ ((unused)) = {
.create = inode_create,
};
],[
+ ],[
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_CREATE_NAMEIDATA, 1,
[iops->create() operation takes nameidata])
diff --git a/config/kernel-dentry-operations.m4 b/config/kernel-dentry-operations.m4
index dfbea7dfd..3182490c9 100644
--- a/config/kernel-dentry-operations.m4
+++ b/config/kernel-dentry-operations.m4
@@ -5,12 +5,16 @@ AC_DEFUN([ZFS_AC_KERNEL_D_REVALIDATE_NAMEIDATA], [
AC_MSG_CHECKING([whether dops->d_revalidate() takes struct nameidata])
ZFS_LINUX_TRY_COMPILE([
#include <linux/dcache.h>
- ],[
- int (*revalidate) (struct dentry *, struct nameidata *) = NULL;
- struct dentry_operations dops __attribute__ ((unused)) = {
- .d_revalidate = revalidate,
+
+ int revalidate (struct dentry *dentry,
+ struct nameidata *nidata) { return 0; }
+
+ static const struct dentry_operations
+ dops __attribute__ ((unused)) = {
+ .d_revalidate = revalidate,
};
],[
+ ],[
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_D_REVALIDATE_NAMEIDATA, 1,
[dops->d_revalidate() operation takes nameidata])
diff --git a/config/kernel-dirty-inode.m4 b/config/kernel-dirty-inode.m4
index 2ededf154..ffd87bb14 100644
--- a/config/kernel-dirty-inode.m4
+++ b/config/kernel-dirty-inode.m4
@@ -8,11 +8,14 @@ AC_DEFUN([ZFS_AC_KERNEL_DIRTY_INODE_WITH_FLAGS], [
AC_MSG_CHECKING([whether sops->dirty_inode() wants flags])
ZFS_LINUX_TRY_COMPILE([
#include <linux/fs.h>
- ],[
- void (*dirty_inode) (struct inode *, int) = NULL;
- struct super_operations sops __attribute__ ((unused));
- sops.dirty_inode = dirty_inode;
+ void dirty_inode(struct inode *a, int b) { return; }
+
+ static const struct super_operations
+ sops __attribute__ ((unused)) = {
+ .dirty_inode = dirty_inode,
+ };
+ ],[
],[
AC_MSG_RESULT([yes])
AC_DEFINE(HAVE_DIRTY_INODE_WITH_FLAGS, 1,
diff --git a/config/kernel-fallocate.m4 b/config/kernel-fallocate.m4
index 6ac5ae65c..550906472 100644
--- a/config/kernel-fallocate.m4
+++ b/config/kernel-fallocate.m4
@@ -5,12 +5,16 @@ AC_DEFUN([ZFS_AC_KERNEL_FILE_FALLOCATE], [
AC_MSG_CHECKING([whether fops->fallocate() exists])
ZFS_LINUX_TRY_COMPILE([
#include <linux/fs.h>
- ],[
- long (*fallocate) (struct file *, int, loff_t, loff_t) = NULL;
- struct file_operations fops __attribute__ ((unused)) = {
- .fallocate = fallocate,
+
+ long test_fallocate(struct file *file, int mode,
+ loff_t offset, loff_t len) { return 0; }
+
+ static const struct file_operations
+ fops __attribute__ ((unused)) = {
+ .fallocate = test_fallocate,
};
],[
+ ],[
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_FILE_FALLOCATE, 1, [fops->fallocate() exists])
],[
@@ -25,34 +29,18 @@ AC_DEFUN([ZFS_AC_KERNEL_INODE_FALLOCATE], [
AC_MSG_CHECKING([whether iops->fallocate() exists])
ZFS_LINUX_TRY_COMPILE([
#include <linux/fs.h>
- ],[
- long (*fallocate) (struct inode *, int, loff_t, loff_t) = NULL;
- struct inode_operations fops __attribute__ ((unused)) = {
- .fallocate = fallocate,
- };
- ],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_INODE_FALLOCATE, 1, [fops->fallocate() exists])
- ],[
- AC_MSG_RESULT(no)
- ])
-])
-dnl #
-dnl # PaX Linux 2.6.38 - 3.x API
-dnl #
-AC_DEFUN([ZFS_AC_PAX_KERNEL_FILE_FALLOCATE], [
- AC_MSG_CHECKING([whether fops->fallocate() exists])
- ZFS_LINUX_TRY_COMPILE([
- #include <linux/fs.h>
- ],[
- long (*fallocate) (struct file *, int, loff_t, loff_t) = NULL;
- struct file_operations_no_const fops __attribute__ ((unused)) = {
- .fallocate = fallocate,
+ long test_fallocate(struct inode *inode, int mode,
+ loff_t offset, loff_t len) { return 0; }
+
+ static const struct inode_operations
+ fops __attribute__ ((unused)) = {
+ .fallocate = test_fallocate,
};
],[
+ ],[
AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_FILE_FALLOCATE, 1, [fops->fallocate() exists])
+ AC_DEFINE(HAVE_INODE_FALLOCATE, 1, [fops->fallocate() exists])
],[
AC_MSG_RESULT(no)
])
@@ -65,5 +53,4 @@ dnl #
AC_DEFUN([ZFS_AC_KERNEL_FALLOCATE], [
ZFS_AC_KERNEL_FILE_FALLOCATE
ZFS_AC_KERNEL_INODE_FALLOCATE
- ZFS_AC_PAX_KERNEL_FILE_FALLOCATE
])
diff --git a/config/kernel-fsync.m4 b/config/kernel-fsync.m4
index ca00d93be..e1f2d68b9 100644
--- a/config/kernel-fsync.m4
+++ b/config/kernel-fsync.m4
@@ -4,11 +4,15 @@ dnl #
AC_DEFUN([ZFS_AC_KERNEL_FSYNC_WITH_DENTRY], [
ZFS_LINUX_TRY_COMPILE([
#include <linux/fs.h>
- ],[
- int (*fsync) (struct file *, struct dentry *, int) = NULL;
- struct file_operations fops __attribute__ ((unused));
- fops.fsync = fsync;
+ int test_fsync(struct file *f, struct dentry *dentry, int x)
+ { return 0; }
+
+ static const struct file_operations
+ fops __attribute__ ((unused)) = {
+ .fsync = test_fsync,
+ };
+ ],[
],[
AC_MSG_RESULT([dentry])
AC_DEFINE(HAVE_FSYNC_WITH_DENTRY, 1,
@@ -23,11 +27,14 @@ dnl #
AC_DEFUN([ZFS_AC_KERNEL_FSYNC_WITHOUT_DENTRY], [
ZFS_LINUX_TRY_COMPILE([
#include <linux/fs.h>
- ],[
- int (*fsync) (struct file *, int) = NULL;
- struct file_operations fops __attribute__ ((unused));
- fops.fsync = fsync;
+ int test_fsync(struct file *f, int x) { return 0; }
+
+ static const struct file_operations
+ fops __attribute__ ((unused)) = {
+ .fsync = test_fsync,
+ };
+ ],[
],[
AC_MSG_RESULT([no dentry])
AC_DEFINE(HAVE_FSYNC_WITHOUT_DENTRY, 1,
@@ -42,68 +49,15 @@ dnl #
AC_DEFUN([ZFS_AC_KERNEL_FSYNC_RANGE], [
ZFS_LINUX_TRY_COMPILE([
#include <linux/fs.h>
- ],[
- int (*fsync) (struct file *, loff_t, loff_t, int) = NULL;
- struct file_operations fops __attribute__ ((unused));
-
- fops.fsync = fsync;
- ],[
- AC_MSG_RESULT([range])
- AC_DEFINE(HAVE_FSYNC_RANGE, 1,
- [fops->fsync() with range])
- ],[
- ])
-])
-dnl #
-dnl # PaX Linux 2.6.x - 2.6.34 API
-dnl #
-AC_DEFUN([ZFS_AC_PAX_KERNEL_FSYNC_WITH_DENTRY], [
- ZFS_LINUX_TRY_COMPILE([
- #include <linux/fs.h>
- ],[
- int (*fsync) (struct file *, struct dentry *, int) = NULL;
- file_operations_no_const fops __attribute__ ((unused));
+ int test_fsync(struct file *f, loff_t a, loff_t b, int c)
+ { return 0; }
- fops.fsync = fsync;
- ],[
- AC_MSG_RESULT([dentry])
- AC_DEFINE(HAVE_FSYNC_WITH_DENTRY, 1,
- [fops->fsync() with dentry])
+ static const struct file_operations
+ fops __attribute__ ((unused)) = {
+ .fsync = test_fsync,
+ };
],[
- ])
-])
-
-dnl #
-dnl # PaX Linux 2.6.35 - Linux 3.0 API
-dnl #
-AC_DEFUN([ZFS_AC_PAX_KERNEL_FSYNC_WITHOUT_DENTRY], [
- ZFS_LINUX_TRY_COMPILE([
- #include <linux/fs.h>
- ],[
- int (*fsync) (struct file *, int) = NULL;
- file_operations_no_const fops __attribute__ ((unused));
-
- fops.fsync = fsync;
- ],[
- AC_MSG_RESULT([no dentry])
- AC_DEFINE(HAVE_FSYNC_WITHOUT_DENTRY, 1,
- [fops->fsync() without dentry])
- ],[
- ])
-])
-
-dnl #
-dnl # PaX Linux 3.1 - 3.x API
-dnl #
-AC_DEFUN([ZFS_AC_PAX_KERNEL_FSYNC_RANGE], [
- ZFS_LINUX_TRY_COMPILE([
- #include <linux/fs.h>
- ],[
- int (*fsync) (struct file *, loff_t, loff_t, int) = NULL;
- file_operations_no_const fops __attribute__ ((unused));
-
- fops.fsync = fsync;
],[
AC_MSG_RESULT([range])
AC_DEFINE(HAVE_FSYNC_RANGE, 1,
@@ -117,7 +71,4 @@ AC_DEFUN([ZFS_AC_KERNEL_FSYNC], [
ZFS_AC_KERNEL_FSYNC_WITH_DENTRY
ZFS_AC_KERNEL_FSYNC_WITHOUT_DENTRY
ZFS_AC_KERNEL_FSYNC_RANGE
- ZFS_AC_PAX_KERNEL_FSYNC_WITH_DENTRY
- ZFS_AC_PAX_KERNEL_FSYNC_WITHOUT_DENTRY
- ZFS_AC_PAX_KERNEL_FSYNC_RANGE
])
diff --git a/config/kernel-lookup-nameidata.m4 b/config/kernel-lookup-nameidata.m4
index 5e30be433..645560398 100644
--- a/config/kernel-lookup-nameidata.m4
+++ b/config/kernel-lookup-nameidata.m4
@@ -5,13 +5,17 @@ AC_DEFUN([ZFS_AC_KERNEL_LOOKUP_NAMEIDATA], [
AC_MSG_CHECKING([whether iops->lookup() takes struct nameidata])
ZFS_LINUX_TRY_COMPILE([
#include <linux/fs.h>
- ],[
- struct dentry * (*inode_lookup) (struct inode *,struct dentry *,
- struct nameidata *) = NULL;
- struct inode_operations iops __attribute__ ((unused)) = {
- .lookup = inode_lookup,
+
+ struct dentry *inode_lookup(struct inode *inode,
+ struct dentry *dentry, struct nameidata *nidata)
+ { return NULL; }
+
+ static const struct inode_operations iops
+ __attribute__ ((unused)) = {
+ .lookup = inode_lookup,
};
],[
+ ],[
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_LOOKUP_NAMEIDATA, 1,
[iops->lookup() operation takes nameidata])
diff --git a/config/kernel-mkdir-umode-t.m4 b/config/kernel-mkdir-umode-t.m4
index dd5d94ba9..634260b3c 100644
--- a/config/kernel-mkdir-umode-t.m4
+++ b/config/kernel-mkdir-umode-t.m4
@@ -10,12 +10,16 @@ AC_DEFUN([ZFS_AC_KERNEL_MKDIR_UMODE_T], [
AC_MSG_CHECKING([whether iops->create()/mkdir()/mknod() take umode_t])
ZFS_LINUX_TRY_COMPILE([
#include <linux/fs.h>
- ],[
- int (*mkdir) (struct inode *,struct dentry *,umode_t) = NULL;
- struct inode_operations iops __attribute__ ((unused)) = {
+
+ int mkdir(struct inode *inode, struct dentry *dentry,
+ umode_t umode) { return 0; }
+
+ static const struct inode_operations
+ iops __attribute__ ((unused)) = {
.mkdir = mkdir,
};
],[
+ ],[
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_MKDIR_UMODE_T, 1,
[iops->create()/mkdir()/mknod() take umode_t])
diff --git a/config/kernel-shrink.m4 b/config/kernel-shrink.m4
index ea748c974..479fb3a6e 100644
--- a/config/kernel-shrink.m4
+++ b/config/kernel-shrink.m4
@@ -8,15 +8,18 @@ AC_DEFUN([ZFS_AC_KERNEL_SHRINK], [
AC_MSG_CHECKING([whether super_block has s_shrink])
ZFS_LINUX_TRY_COMPILE([
#include <linux/fs.h>
- ],[
- int (*shrink)(struct shrinker *, struct shrink_control *sc)
- __attribute__ ((unused)) = NULL;
- struct super_block sb __attribute__ ((unused)) = {
+
+ int shrink(struct shrinker *s, struct shrink_control *sc)
+ { return 0; }
+
+ static const struct super_block
+ sb __attribute__ ((unused)) = {
.s_shrink.shrink = shrink,
.s_shrink.seeks = DEFAULT_SEEKS,
.s_shrink.batch = 0,
};
],[
+ ],[
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_SHRINK, 1, [struct super_block has s_shrink])
@@ -29,13 +32,15 @@ AC_DEFUN([ZFS_AC_KERNEL_NR_CACHED_OBJECTS], [
AC_MSG_CHECKING([whether sops->nr_cached_objects() exists])
ZFS_LINUX_TRY_COMPILE([
#include <linux/fs.h>
- ],[
- int (*nr_cached_objects)(struct super_block *)
- __attribute__ ((unused)) = NULL;
- struct super_operations sops __attribute__ ((unused)) = {
+
+ int nr_cached_objects(struct super_block *sb) { return 0; }
+
+ static const struct super_operations
+ sops __attribute__ ((unused)) = {
.nr_cached_objects = nr_cached_objects,
};
],[
+ ],[
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_NR_CACHED_OBJECTS, 1,
[sops->nr_cached_objects() exists])
@@ -48,13 +53,16 @@ AC_DEFUN([ZFS_AC_KERNEL_FREE_CACHED_OBJECTS], [
AC_MSG_CHECKING([whether sops->free_cached_objects() exists])
ZFS_LINUX_TRY_COMPILE([
#include <linux/fs.h>
- ],[
- void (*free_cached_objects)(struct super_block *, int)
- __attribute__ ((unused)) = NULL;
- struct super_operations sops __attribute__ ((unused)) = {
+
+ void free_cached_objects(struct super_block *sb, int x)
+ { return; }
+
+ static const struct super_operations
+ sops __attribute__ ((unused)) = {
.free_cached_objects = free_cached_objects,
};
],[
+ ],[
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_FREE_CACHED_OBJECTS, 1,
[sops->free_cached_objects() exists])