mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-26 19:19:32 +03:00
556ed09537
Currently, if API tests fail, we either ignore the failures, or unconditionally halt the kernel build. This leads to situations where incompatibilities with existing APIs may develop, but not trip the configure compatibility checks. This introduces a new mechanism to require APIs for kernels above a particular version. While not perfect, this at least guarantees mainline kernels do not break existing APIs without at least providing some warning. Reviewed-by: Richard Yao <richard.yao@alumni.stonybrook.edu> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Antonio Russo <aerusso@aerusso.net> Closes #14343
68 lines
2.0 KiB
Plaintext
68 lines
2.0 KiB
Plaintext
dnl #
|
|
dnl # 3.11 API change
|
|
dnl # Add support for i_op->tmpfile
|
|
dnl #
|
|
AC_DEFUN([ZFS_AC_KERNEL_SRC_TMPFILE], [
|
|
dnl #
|
|
dnl # 6.1 API change
|
|
dnl # use struct file instead of struct dentry
|
|
dnl #
|
|
ZFS_LINUX_TEST_SRC([inode_operations_tmpfile], [
|
|
#include <linux/fs.h>
|
|
int tmpfile(struct user_namespace *userns,
|
|
struct inode *inode, struct file *file,
|
|
umode_t mode) { return 0; }
|
|
static struct inode_operations
|
|
iops __attribute__ ((unused)) = {
|
|
.tmpfile = tmpfile,
|
|
};
|
|
],[])
|
|
dnl #
|
|
dnl # 5.11 API change
|
|
dnl # add support for userns parameter to tmpfile
|
|
dnl #
|
|
ZFS_LINUX_TEST_SRC([inode_operations_tmpfile_dentry_userns], [
|
|
#include <linux/fs.h>
|
|
int tmpfile(struct user_namespace *userns,
|
|
struct inode *inode, struct dentry *dentry,
|
|
umode_t mode) { return 0; }
|
|
static struct inode_operations
|
|
iops __attribute__ ((unused)) = {
|
|
.tmpfile = tmpfile,
|
|
};
|
|
],[])
|
|
ZFS_LINUX_TEST_SRC([inode_operations_tmpfile_dentry], [
|
|
#include <linux/fs.h>
|
|
int tmpfile(struct inode *inode, struct dentry *dentry,
|
|
umode_t mode) { return 0; }
|
|
static struct inode_operations
|
|
iops __attribute__ ((unused)) = {
|
|
.tmpfile = tmpfile,
|
|
};
|
|
],[])
|
|
])
|
|
|
|
AC_DEFUN([ZFS_AC_KERNEL_TMPFILE], [
|
|
AC_MSG_CHECKING([whether i_op->tmpfile() exists])
|
|
ZFS_LINUX_TEST_RESULT([inode_operations_tmpfile], [
|
|
AC_MSG_RESULT(yes)
|
|
AC_DEFINE(HAVE_TMPFILE, 1, [i_op->tmpfile() exists])
|
|
AC_DEFINE(HAVE_TMPFILE_USERNS, 1, [i_op->tmpfile() has userns])
|
|
],[
|
|
ZFS_LINUX_TEST_RESULT([inode_operations_tmpfile_dentry_userns], [
|
|
AC_MSG_RESULT(yes)
|
|
AC_DEFINE(HAVE_TMPFILE, 1, [i_op->tmpfile() exists])
|
|
AC_DEFINE(HAVE_TMPFILE_USERNS, 1, [i_op->tmpfile() has userns])
|
|
AC_DEFINE(HAVE_TMPFILE_DENTRY, 1, [i_op->tmpfile() uses old dentry signature])
|
|
],[
|
|
ZFS_LINUX_TEST_RESULT([inode_operations_tmpfile_dentry], [
|
|
AC_MSG_RESULT(yes)
|
|
AC_DEFINE(HAVE_TMPFILE, 1, [i_op->tmpfile() exists])
|
|
AC_DEFINE(HAVE_TMPFILE_DENTRY, 1, [i_op->tmpfile() uses old dentry signature])
|
|
],[
|
|
ZFS_LINUX_REQUIRE_API([i_op->tmpfile()], [3.11])
|
|
])
|
|
])
|
|
])
|
|
])
|