How can one teach lustre-1.8.9 about linux/kconfig.h, a header backported from 3.x kernels
to the EL6.6 kernel?
Following up myself: I did get lustre-client and lustre-client-modules RPMs produced by
compiling while the target kernel was running, applying this patch:
http://review.whamcloud.com/8607 , and swapping args for __attribute__((packed,
__may_alias__)) at lustre/include/lustre/lustre_user.h:192 .
Trouble is, the ko2iblnd.ko (OFED) kernel module is missing from lustre-client-modules.
This seems to be related to linux/kconfig.h, which defines an IS_ENABLED() macro which is
referenced but missing when OpenIB support is being tested in the Lustre configure step:
configure:8240: checking whether to enable OpenIB gen2 support
configure:8351: cp conftest.c build && make -d modules CC=gcc -f
/home/share/soft/rpm/BUILD/lustre-1.8.9/build/Makefile
LUSTRE_LINUX_CONFIG=/usr/src/kernels/2.6.32-504.el6.x86_64/.config LINUXINCLUDE=
-I/usr/src/kernels/2.6.32-504.el6.x86_64/include
-I/usr/src/kernels/2.6.32-504.el6.x86_64/arch/x86/include -I/usr/sr
c/kernels/2.6.32-504.el6.x86_64/include -I/usr/src/kernels/2.6.32-504.el6.x86_64/include
-I/usr/src/kernels/2.6.32-504.el6.x86_64/include2 -include include/linux/autoconf.h -o
tmp_include_depends -o scripts -o include/config/MARKER -C
/usr/src/kernels/2.6.32-504.el6.x86_64 EXTRA_CFLAGS=-Werror-implicit-function-decla
ration -g -I/home/share/soft/rpm/BUILD/lustre-1.8.9/lnet/include
-I/home/share/soft/rpm/BUILD/lustre-1.8.9/lnet/include
-I/home/share/soft/rpm/BUILD/lustre-1.8.9/lustre/include
-I/usr/src/kernels/2.6.32-504.el6.x86_64/include
M=/home/share/soft/rpm/BUILD/lustre-1.8.9/build
In file included from /usr/src/kernels/2.6.32-504.el6.x86_64/include/rdma/ib_addr.h:44,
from /usr/src/kernels/2.6.32-504.el6.x86_64/include/rdma/rdma_cm.h:39,
from /home/share/soft/rpm/BUILD/lustre-1.8.9/build/conftest.c:40:
/usr/src/kernels/2.6.32-504.el6.x86_64/include/net/ipv6.h:271:5: warning:
"IS_ENABLED" is not defined
/usr/src/kernels/2.6.32-504.el6.x86_64/include/net/ipv6.h:271:15: error: missing binary
operator before token "("
/home/share/soft/rpm/BUILD/lustre-1.8.9/build/conftest.c: In function 'main':
/home/share/soft/rpm/BUILD/lustre-1.8.9/build/conftest.c:54: warning: unused variable
'rej_reason'
/home/share/soft/rpm/BUILD/lustre-1.8.9/build/conftest.c:53: warning: unused variable
'pool_fmr'
/home/share/soft/rpm/BUILD/lustre-1.8.9/build/conftest.c:52: warning: unused variable
'qp_attr'
/home/share/soft/rpm/BUILD/lustre-1.8.9/build/conftest.c:51: warning: unused variable
'device_attr'
/home/share/soft/rpm/BUILD/lustre-1.8.9/build/conftest.c:50: warning: unused variable
'conn_param'
/home/share/soft/rpm/BUILD/lustre-1.8.9/build/conftest.c:49: warning: unused variable
'cm_id'
make[1]: *** [/home/share/soft/rpm/BUILD/lustre-1.8.9/build/conftest.o] Error 1
make: *** [_module_/home/share/soft/rpm/BUILD/lustre-1.8.9/build] Error 2
Best wishes,
Michael
On Nov 19, 2014, at 17:14 , Sternberg, Michael G.
<sternberg(a)anl.gov> wrote:
Could you disclose how you managed to compile? - This would be quite interesting for my
system here (Lustre-1.8.9, EL5 servers, EL6 client).
…
I have kernel-devel, kernel-headers, and rpm-build duly installed.
$ rpm -qa | grep kernel | sort
abrt-addon-kerneloops-2.0.8-26.el6.centos.x86_64
dracut-kernel-004-356.el6.noarch
kernel-2.6.32-279.19.1.el6.x86_64
kernel-2.6.32-504.el6.x86_64
kernel-devel-2.6.32-504.el6.x86_64
kernel-firmware-2.6.32-504.el6.noarch
kernel-headers-2.6.32-504.el6.x86_64
libreport-plugin-kerneloops-2.0.9-21.el6.centos.x86_64