200 lines
7.8 KiB
Diff
200 lines
7.8 KiB
Diff
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|||
|
From: chrisrd <chris@onthe.net.au>
|
|||
|
Date: Fri, 16 Feb 2018 07:58:23 +1100
|
|||
|
Subject: [PATCH] Fix config issues: frame size and headers
|
|||
|
MIME-Version: 1.0
|
|||
|
Content-Type: text/plain; charset=UTF-8
|
|||
|
Content-Transfer-Encoding: 8bit
|
|||
|
|
|||
|
1. With various (debug and/or tracing?) kernel options enabled it's
|
|||
|
possible for 'struct inode' and 'struct super_block' to exceed the
|
|||
|
default frame size, leaving errors like this in config.log:
|
|||
|
|
|||
|
build/conftest.c:116:1: error: the frame size of 1048 bytes is larger
|
|||
|
than 1024 bytes [-Werror=frame-larger-than=]
|
|||
|
|
|||
|
Fix this by removing the frame size warning for config checks
|
|||
|
|
|||
|
2. Without the correct headers included, it's possible for declarations
|
|||
|
to be missed, leaving errors like this in the config.log:
|
|||
|
|
|||
|
build/conftest.c:131:14: error: ‘struct nameidata’ declared inside
|
|||
|
parameter list [-Werror]
|
|||
|
|
|||
|
Fix this by adding appropriate headers.
|
|||
|
|
|||
|
Note: Both these issues can result in silent config failures because
|
|||
|
the compile failure is taken to mean "this option is not supported by
|
|||
|
this kernel" rather than "there's something wrong with the config
|
|||
|
test". This can lead to something merely annoying (compile failures) to
|
|||
|
something potentially serious (miscompiled or misused kernel primitives
|
|||
|
or functions). E.g. the fixes included here resulted in these
|
|||
|
additional defines in zfs_config.h with linux v4.14.19:
|
|||
|
|
|||
|
Also, drive-by whitespace fixes in config/* files which don't mention
|
|||
|
"GNU" (those ones look to be imported from elsewhere so leave them
|
|||
|
alone).
|
|||
|
|
|||
|
Reviewed by: Brian Behlendorf <behlendorf1@llnl.gov>
|
|||
|
Signed-off-by: Chris Dunlop <chris@onthe.net.au>
|
|||
|
Closes #7169
|
|||
|
(cherry picked from commit 5a84c60fb95ee7ca1393efe93d9d17c80497c6b6)
|
|||
|
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
|
|||
|
---
|
|||
|
config/deb.am | 8 ++++----
|
|||
|
config/kernel-acl.m4 | 1 +
|
|||
|
config/kernel-create-nameidata.m4 | 1 +
|
|||
|
config/kernel-dentry-operations.m4 | 1 +
|
|||
|
config/kernel-get-link.m4 | 2 +-
|
|||
|
config/kernel-lookup-nameidata.m4 | 1 +
|
|||
|
config/kernel-vm_node_stat.m4 | 2 +-
|
|||
|
config/kernel.m4 | 2 +-
|
|||
|
config/tgz.am | 4 ++--
|
|||
|
config/user-libblkid.m4 | 2 +-
|
|||
|
10 files changed, 14 insertions(+), 10 deletions(-)
|
|||
|
|
|||
|
diff --git a/config/deb.am b/config/deb.am
|
|||
|
index 1b51f9316..58ab96e18 100644
|
|||
|
--- a/config/deb.am
|
|||
|
+++ b/config/deb.am
|
|||
|
@@ -2,16 +2,16 @@ deb-local:
|
|||
|
@(if test "${HAVE_DPKGBUILD}" = "no"; then \
|
|||
|
echo -e "\n" \
|
|||
|
"*** Required util ${DPKGBUILD} missing. Please install the\n" \
|
|||
|
- "*** package for your distribution which provides ${DPKGBUILD},\n" \
|
|||
|
+ "*** package for your distribution which provides ${DPKGBUILD},\n" \
|
|||
|
"*** re-run configure, and try again.\n"; \
|
|||
|
- exit 1; \
|
|||
|
+ exit 1; \
|
|||
|
fi; \
|
|||
|
if test "${HAVE_ALIEN}" = "no"; then \
|
|||
|
echo -e "\n" \
|
|||
|
"*** Required util ${ALIEN} missing. Please install the\n" \
|
|||
|
- "*** package for your distribution which provides ${ALIEN},\n" \
|
|||
|
+ "*** package for your distribution which provides ${ALIEN},\n" \
|
|||
|
"*** re-run configure, and try again.\n"; \
|
|||
|
- exit 1; \
|
|||
|
+ exit 1; \
|
|||
|
fi)
|
|||
|
|
|||
|
deb-kmod: deb-local rpm-kmod
|
|||
|
diff --git a/config/kernel-acl.m4 b/config/kernel-acl.m4
|
|||
|
index 311484349..02cc020e5 100644
|
|||
|
--- a/config/kernel-acl.m4
|
|||
|
+++ b/config/kernel-acl.m4
|
|||
|
@@ -184,6 +184,7 @@ AC_DEFUN([ZFS_AC_KERNEL_INODE_OPERATIONS_PERMISSION_WITH_NAMEIDATA], [
|
|||
|
AC_MSG_CHECKING([whether iops->permission() wants nameidata])
|
|||
|
ZFS_LINUX_TRY_COMPILE([
|
|||
|
#include <linux/fs.h>
|
|||
|
+ #include <linux/sched.h>
|
|||
|
|
|||
|
int permission_fn(struct inode *inode, int mask,
|
|||
|
struct nameidata *nd) { return 0; }
|
|||
|
diff --git a/config/kernel-create-nameidata.m4 b/config/kernel-create-nameidata.m4
|
|||
|
index a71490a00..d4c155c57 100644
|
|||
|
--- a/config/kernel-create-nameidata.m4
|
|||
|
+++ b/config/kernel-create-nameidata.m4
|
|||
|
@@ -5,6 +5,7 @@ AC_DEFUN([ZFS_AC_KERNEL_CREATE_NAMEIDATA], [
|
|||
|
AC_MSG_CHECKING([whether iops->create() passes nameidata])
|
|||
|
ZFS_LINUX_TRY_COMPILE([
|
|||
|
#include <linux/fs.h>
|
|||
|
+ #include <linux/sched.h>
|
|||
|
|
|||
|
#ifdef HAVE_MKDIR_UMODE_T
|
|||
|
int inode_create(struct inode *inode ,struct dentry *dentry,
|
|||
|
diff --git a/config/kernel-dentry-operations.m4 b/config/kernel-dentry-operations.m4
|
|||
|
index 3182490c9..61f5a27af 100644
|
|||
|
--- a/config/kernel-dentry-operations.m4
|
|||
|
+++ b/config/kernel-dentry-operations.m4
|
|||
|
@@ -5,6 +5,7 @@ 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>
|
|||
|
+ #include <linux/sched.h>
|
|||
|
|
|||
|
int revalidate (struct dentry *dentry,
|
|||
|
struct nameidata *nidata) { return 0; }
|
|||
|
diff --git a/config/kernel-get-link.m4 b/config/kernel-get-link.m4
|
|||
|
index 022c49c54..3cda08c1b 100644
|
|||
|
--- a/config/kernel-get-link.m4
|
|||
|
+++ b/config/kernel-get-link.m4
|
|||
|
@@ -41,7 +41,7 @@ AC_DEFUN([ZFS_AC_KERNEL_FOLLOW_LINK], [
|
|||
|
AC_DEFINE(HAVE_FOLLOW_LINK_NAMEIDATA, 1,
|
|||
|
[iops->follow_link() nameidata])
|
|||
|
],[
|
|||
|
- AC_MSG_ERROR(no; please file a bug report)
|
|||
|
+ AC_MSG_ERROR(no; please file a bug report)
|
|||
|
])
|
|||
|
])
|
|||
|
])
|
|||
|
diff --git a/config/kernel-lookup-nameidata.m4 b/config/kernel-lookup-nameidata.m4
|
|||
|
index 43f5fb4cb..5453be5e8 100644
|
|||
|
--- a/config/kernel-lookup-nameidata.m4
|
|||
|
+++ b/config/kernel-lookup-nameidata.m4
|
|||
|
@@ -5,6 +5,7 @@ AC_DEFUN([ZFS_AC_KERNEL_LOOKUP_NAMEIDATA], [
|
|||
|
AC_MSG_CHECKING([whether iops->lookup() passes nameidata])
|
|||
|
ZFS_LINUX_TRY_COMPILE([
|
|||
|
#include <linux/fs.h>
|
|||
|
+ #include <linux/sched.h>
|
|||
|
|
|||
|
struct dentry *inode_lookup(struct inode *inode,
|
|||
|
struct dentry *dentry, struct nameidata *nidata)
|
|||
|
diff --git a/config/kernel-vm_node_stat.m4 b/config/kernel-vm_node_stat.m4
|
|||
|
index e1c42f884..5dcd9d827 100644
|
|||
|
--- a/config/kernel-vm_node_stat.m4
|
|||
|
+++ b/config/kernel-vm_node_stat.m4
|
|||
|
@@ -7,7 +7,7 @@ AC_DEFUN([ZFS_AC_KERNEL_VM_NODE_STAT], [
|
|||
|
ZFS_LINUX_TRY_COMPILE([
|
|||
|
#include <linux/mm.h>
|
|||
|
#include <linux/vmstat.h>
|
|||
|
- ],[
|
|||
|
+ ],[
|
|||
|
int a __attribute__ ((unused)) = NR_VM_NODE_STAT_ITEMS;
|
|||
|
long x __attribute__ ((unused)) =
|
|||
|
atomic_long_read(&vm_node_stat[0]);
|
|||
|
diff --git a/config/kernel.m4 b/config/kernel.m4
|
|||
|
index b83f021e8..d4a84b2b2 100644
|
|||
|
--- a/config/kernel.m4
|
|||
|
+++ b/config/kernel.m4
|
|||
|
@@ -722,7 +722,7 @@ AC_DEFUN([ZFS_LINUX_COMPILE_IFELSE], [
|
|||
|
modpost_flag=''
|
|||
|
test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
|
|||
|
AS_IF(
|
|||
|
- [AC_TRY_COMMAND(cp conftest.c conftest.h build && make [$2] -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag) >/dev/null && AC_TRY_COMMAND([$3])],
|
|||
|
+ [AC_TRY_COMMAND(cp conftest.c conftest.h build && make [$2] -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $FRAME_LARGER_THAN $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag) >/dev/null && AC_TRY_COMMAND([$3])],
|
|||
|
[$4],
|
|||
|
[_AC_MSG_LOG_CONFTEST m4_ifvaln([$5],[$5])]
|
|||
|
)
|
|||
|
diff --git a/config/tgz.am b/config/tgz.am
|
|||
|
index 2997b1de2..0657d045d 100644
|
|||
|
--- a/config/tgz.am
|
|||
|
+++ b/config/tgz.am
|
|||
|
@@ -2,9 +2,9 @@ tgz-local:
|
|||
|
@(if test "${HAVE_ALIEN}" = "no"; then \
|
|||
|
echo -e "\n" \
|
|||
|
"*** Required util ${ALIEN} missing. Please install the\n" \
|
|||
|
- "*** package for your distribution which provides ${ALIEN},\n" \
|
|||
|
+ "*** package for your distribution which provides ${ALIEN},\n" \
|
|||
|
"*** re-run configure, and try again.\n"; \
|
|||
|
- exit 1; \
|
|||
|
+ exit 1; \
|
|||
|
fi)
|
|||
|
|
|||
|
tgz-kmod: tgz-local rpm-kmod
|
|||
|
diff --git a/config/user-libblkid.m4 b/config/user-libblkid.m4
|
|||
|
index 5bc7f466a..88e6f990b 100644
|
|||
|
--- a/config/user-libblkid.m4
|
|||
|
+++ b/config/user-libblkid.m4
|
|||
|
@@ -6,7 +6,7 @@ AC_DEFUN([ZFS_AC_CONFIG_USER_LIBBLKID], [
|
|||
|
LIBBLKID=
|
|||
|
|
|||
|
AC_CHECK_HEADER([blkid/blkid.h], [], [AC_MSG_FAILURE([
|
|||
|
- *** blkid.h missing, libblkid-devel package required])])
|
|||
|
+ *** blkid.h missing, libblkid-devel package required])])
|
|||
|
|
|||
|
AC_SUBST([LIBBLKID], ["-lblkid"])
|
|||
|
AC_DEFINE([HAVE_LIBBLKID], 1, [Define if you have libblkid])
|
|||
|
--
|
|||
|
2.14.2
|
|||
|
|