]>
Commit | Line | Data |
---|---|---|
75b07eca FG |
1 | From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 |
2 | From: chrisrd <chris@onthe.net.au> | |
3 | Date: Fri, 16 Feb 2018 07:58:23 +1100 | |
4 | Subject: [PATCH] Fix config issues: frame size and headers | |
5 | MIME-Version: 1.0 | |
6 | Content-Type: text/plain; charset=UTF-8 | |
7 | Content-Transfer-Encoding: 8bit | |
8 | ||
9 | 1. With various (debug and/or tracing?) kernel options enabled it's | |
10 | possible for 'struct inode' and 'struct super_block' to exceed the | |
11 | default frame size, leaving errors like this in config.log: | |
12 | ||
13 | build/conftest.c:116:1: error: the frame size of 1048 bytes is larger | |
14 | than 1024 bytes [-Werror=frame-larger-than=] | |
15 | ||
16 | Fix this by removing the frame size warning for config checks | |
17 | ||
18 | 2. Without the correct headers included, it's possible for declarations | |
19 | to be missed, leaving errors like this in the config.log: | |
20 | ||
21 | build/conftest.c:131:14: error: ‘struct nameidata’ declared inside | |
22 | parameter list [-Werror] | |
23 | ||
24 | Fix this by adding appropriate headers. | |
25 | ||
26 | Note: Both these issues can result in silent config failures because | |
27 | the compile failure is taken to mean "this option is not supported by | |
28 | this kernel" rather than "there's something wrong with the config | |
29 | test". This can lead to something merely annoying (compile failures) to | |
30 | something potentially serious (miscompiled or misused kernel primitives | |
31 | or functions). E.g. the fixes included here resulted in these | |
32 | additional defines in zfs_config.h with linux v4.14.19: | |
33 | ||
34 | Also, drive-by whitespace fixes in config/* files which don't mention | |
35 | "GNU" (those ones look to be imported from elsewhere so leave them | |
36 | alone). | |
37 | ||
38 | Reviewed by: Brian Behlendorf <behlendorf1@llnl.gov> | |
39 | Signed-off-by: Chris Dunlop <chris@onthe.net.au> | |
40 | Closes #7169 | |
41 | (cherry picked from commit 5a84c60fb95ee7ca1393efe93d9d17c80497c6b6) | |
42 | Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com> | |
43 | --- | |
44 | config/deb.am | 8 ++++---- | |
45 | config/kernel-acl.m4 | 1 + | |
46 | config/kernel-create-nameidata.m4 | 1 + | |
47 | config/kernel-dentry-operations.m4 | 1 + | |
48 | config/kernel-get-link.m4 | 2 +- | |
49 | config/kernel-lookup-nameidata.m4 | 1 + | |
50 | config/kernel-vm_node_stat.m4 | 2 +- | |
51 | config/kernel.m4 | 2 +- | |
52 | config/tgz.am | 4 ++-- | |
53 | config/user-libblkid.m4 | 2 +- | |
54 | 10 files changed, 14 insertions(+), 10 deletions(-) | |
55 | ||
56 | diff --git a/config/deb.am b/config/deb.am | |
57 | index 1b51f9316..58ab96e18 100644 | |
58 | --- a/config/deb.am | |
59 | +++ b/config/deb.am | |
60 | @@ -2,16 +2,16 @@ deb-local: | |
61 | @(if test "${HAVE_DPKGBUILD}" = "no"; then \ | |
62 | echo -e "\n" \ | |
63 | "*** Required util ${DPKGBUILD} missing. Please install the\n" \ | |
64 | - "*** package for your distribution which provides ${DPKGBUILD},\n" \ | |
65 | + "*** package for your distribution which provides ${DPKGBUILD},\n" \ | |
66 | "*** re-run configure, and try again.\n"; \ | |
67 | - exit 1; \ | |
68 | + exit 1; \ | |
69 | fi; \ | |
70 | if test "${HAVE_ALIEN}" = "no"; then \ | |
71 | echo -e "\n" \ | |
72 | "*** Required util ${ALIEN} missing. Please install the\n" \ | |
73 | - "*** package for your distribution which provides ${ALIEN},\n" \ | |
74 | + "*** package for your distribution which provides ${ALIEN},\n" \ | |
75 | "*** re-run configure, and try again.\n"; \ | |
76 | - exit 1; \ | |
77 | + exit 1; \ | |
78 | fi) | |
79 | ||
80 | deb-kmod: deb-local rpm-kmod | |
81 | diff --git a/config/kernel-acl.m4 b/config/kernel-acl.m4 | |
82 | index 311484349..02cc020e5 100644 | |
83 | --- a/config/kernel-acl.m4 | |
84 | +++ b/config/kernel-acl.m4 | |
85 | @@ -184,6 +184,7 @@ AC_DEFUN([ZFS_AC_KERNEL_INODE_OPERATIONS_PERMISSION_WITH_NAMEIDATA], [ | |
86 | AC_MSG_CHECKING([whether iops->permission() wants nameidata]) | |
87 | ZFS_LINUX_TRY_COMPILE([ | |
88 | #include <linux/fs.h> | |
89 | + #include <linux/sched.h> | |
90 | ||
91 | int permission_fn(struct inode *inode, int mask, | |
92 | struct nameidata *nd) { return 0; } | |
93 | diff --git a/config/kernel-create-nameidata.m4 b/config/kernel-create-nameidata.m4 | |
94 | index a71490a00..d4c155c57 100644 | |
95 | --- a/config/kernel-create-nameidata.m4 | |
96 | +++ b/config/kernel-create-nameidata.m4 | |
97 | @@ -5,6 +5,7 @@ AC_DEFUN([ZFS_AC_KERNEL_CREATE_NAMEIDATA], [ | |
98 | AC_MSG_CHECKING([whether iops->create() passes nameidata]) | |
99 | ZFS_LINUX_TRY_COMPILE([ | |
100 | #include <linux/fs.h> | |
101 | + #include <linux/sched.h> | |
102 | ||
103 | #ifdef HAVE_MKDIR_UMODE_T | |
104 | int inode_create(struct inode *inode ,struct dentry *dentry, | |
105 | diff --git a/config/kernel-dentry-operations.m4 b/config/kernel-dentry-operations.m4 | |
106 | index 3182490c9..61f5a27af 100644 | |
107 | --- a/config/kernel-dentry-operations.m4 | |
108 | +++ b/config/kernel-dentry-operations.m4 | |
109 | @@ -5,6 +5,7 @@ AC_DEFUN([ZFS_AC_KERNEL_D_REVALIDATE_NAMEIDATA], [ | |
110 | AC_MSG_CHECKING([whether dops->d_revalidate() takes struct nameidata]) | |
111 | ZFS_LINUX_TRY_COMPILE([ | |
112 | #include <linux/dcache.h> | |
113 | + #include <linux/sched.h> | |
114 | ||
115 | int revalidate (struct dentry *dentry, | |
116 | struct nameidata *nidata) { return 0; } | |
117 | diff --git a/config/kernel-get-link.m4 b/config/kernel-get-link.m4 | |
118 | index 022c49c54..3cda08c1b 100644 | |
119 | --- a/config/kernel-get-link.m4 | |
120 | +++ b/config/kernel-get-link.m4 | |
121 | @@ -41,7 +41,7 @@ AC_DEFUN([ZFS_AC_KERNEL_FOLLOW_LINK], [ | |
122 | AC_DEFINE(HAVE_FOLLOW_LINK_NAMEIDATA, 1, | |
123 | [iops->follow_link() nameidata]) | |
124 | ],[ | |
125 | - AC_MSG_ERROR(no; please file a bug report) | |
126 | + AC_MSG_ERROR(no; please file a bug report) | |
127 | ]) | |
128 | ]) | |
129 | ]) | |
130 | diff --git a/config/kernel-lookup-nameidata.m4 b/config/kernel-lookup-nameidata.m4 | |
131 | index 43f5fb4cb..5453be5e8 100644 | |
132 | --- a/config/kernel-lookup-nameidata.m4 | |
133 | +++ b/config/kernel-lookup-nameidata.m4 | |
134 | @@ -5,6 +5,7 @@ AC_DEFUN([ZFS_AC_KERNEL_LOOKUP_NAMEIDATA], [ | |
135 | AC_MSG_CHECKING([whether iops->lookup() passes nameidata]) | |
136 | ZFS_LINUX_TRY_COMPILE([ | |
137 | #include <linux/fs.h> | |
138 | + #include <linux/sched.h> | |
139 | ||
140 | struct dentry *inode_lookup(struct inode *inode, | |
141 | struct dentry *dentry, struct nameidata *nidata) | |
142 | diff --git a/config/kernel-vm_node_stat.m4 b/config/kernel-vm_node_stat.m4 | |
143 | index e1c42f884..5dcd9d827 100644 | |
144 | --- a/config/kernel-vm_node_stat.m4 | |
145 | +++ b/config/kernel-vm_node_stat.m4 | |
146 | @@ -7,7 +7,7 @@ AC_DEFUN([ZFS_AC_KERNEL_VM_NODE_STAT], [ | |
147 | ZFS_LINUX_TRY_COMPILE([ | |
148 | #include <linux/mm.h> | |
149 | #include <linux/vmstat.h> | |
150 | - ],[ | |
151 | + ],[ | |
152 | int a __attribute__ ((unused)) = NR_VM_NODE_STAT_ITEMS; | |
153 | long x __attribute__ ((unused)) = | |
154 | atomic_long_read(&vm_node_stat[0]); | |
155 | diff --git a/config/kernel.m4 b/config/kernel.m4 | |
156 | index b83f021e8..d4a84b2b2 100644 | |
157 | --- a/config/kernel.m4 | |
158 | +++ b/config/kernel.m4 | |
159 | @@ -722,7 +722,7 @@ AC_DEFUN([ZFS_LINUX_COMPILE_IFELSE], [ | |
160 | modpost_flag='' | |
161 | test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage | |
162 | AS_IF( | |
163 | - [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])], | |
164 | + [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])], | |
165 | [$4], | |
166 | [_AC_MSG_LOG_CONFTEST m4_ifvaln([$5],[$5])] | |
167 | ) | |
168 | diff --git a/config/tgz.am b/config/tgz.am | |
169 | index 2997b1de2..0657d045d 100644 | |
170 | --- a/config/tgz.am | |
171 | +++ b/config/tgz.am | |
172 | @@ -2,9 +2,9 @@ tgz-local: | |
173 | @(if test "${HAVE_ALIEN}" = "no"; then \ | |
174 | echo -e "\n" \ | |
175 | "*** Required util ${ALIEN} missing. Please install the\n" \ | |
176 | - "*** package for your distribution which provides ${ALIEN},\n" \ | |
177 | + "*** package for your distribution which provides ${ALIEN},\n" \ | |
178 | "*** re-run configure, and try again.\n"; \ | |
179 | - exit 1; \ | |
180 | + exit 1; \ | |
181 | fi) | |
182 | ||
183 | tgz-kmod: tgz-local rpm-kmod | |
184 | diff --git a/config/user-libblkid.m4 b/config/user-libblkid.m4 | |
185 | index 5bc7f466a..88e6f990b 100644 | |
186 | --- a/config/user-libblkid.m4 | |
187 | +++ b/config/user-libblkid.m4 | |
188 | @@ -6,7 +6,7 @@ AC_DEFUN([ZFS_AC_CONFIG_USER_LIBBLKID], [ | |
189 | LIBBLKID= | |
190 | ||
191 | AC_CHECK_HEADER([blkid/blkid.h], [], [AC_MSG_FAILURE([ | |
192 | - *** blkid.h missing, libblkid-devel package required])]) | |
193 | + *** blkid.h missing, libblkid-devel package required])]) | |
194 | ||
195 | AC_SUBST([LIBBLKID], ["-lblkid"]) | |
196 | AC_DEFINE([HAVE_LIBBLKID], 1, [Define if you have libblkid]) | |
197 | -- | |
198 | 2.14.2 | |
199 |