7fdf8cc174
until investigation of upstream issue[1] is completed. 1: https://github.com/zfsonlinux/zfs/issues/7401
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
|
||
|