Uploaded image for project: 'Lustre'
  1. Lustre
  2. LU-8322

Build issues with master (2.9), OFED 3.18-1, SLES 12

    XMLWordPrintable

Details

    • Bug
    • Resolution: Duplicate
    • Minor
    • None
    • None
    • None
    • 3
    • 9223372036854775807

    Description

      I'm unable to build today's master on SLES 12 against OFED 3.18.

      The compilation error:

      # sh ./autogen.sh; ./configure --disable-server --enable-client --enable-dlc --disable-manpages --with-o2ib=yes; make -j 4
      <snip>
      In file included from /home/build/builds/lnet/klnds/o2iblnd/o2iblnd.c:42:0:
      /home/build/builds/lnet/klnds/o2iblnd/o2iblnd.h:767:19: error: redefinition of ‘ib_inc_rkey’
       static inline u32 ib_inc_rkey(u32 rkey)
                         ^
      In file included from /usr/src/compat-rdma/include/rdma/ib_addr.h:47:0,
                       from /usr/src/compat-rdma/include/rdma/rdma_cm.h:39,
                       from /home/build/builds/lnet/klnds/o2iblnd/o2iblnd.h:74,
                       from /home/build/builds/lnet/klnds/o2iblnd/o2iblnd.c:42:
      /usr/src/compat-rdma/include/rdma/ib_verbs.h:2483:19: note: previous definition of ‘ib_inc_rkey’ was here
       static inline u32 ib_inc_rkey(u32 rkey)
      

      The config.log shows an error similar to LU-7042 which was fixed for 2.8.

      configure:16582: checking if function 'ib_inc_rkey' is defined
      configure:16618: cp conftest.c build && make -d modules LD=/usr/x86_64-suse-linux/bin/ld -m elf_x86_64 CC=gcc -f /home/build/builds/build/Makefile LUSTRE_LINUX_CONFIG=/lib/modules/3.12.28-4-default/build/.config LINUXINCLUDE= -include /usr/src/openib/include/linux/compat-2.6.h -I/usr/src/compat-rdma/include -I/lib/modules/3.12.28-4-default/source/arch/x86/include -Iinclude -Iarch/x86/include/generated -I/lib/modules/3.12.28-4-default/source/include -Iinclude2 -I/lib/modules/3.12.28-4-default/source/include/uapi -Iinclude/generated -I/lib/modules/3.12.28-4-default/source/arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I/lib/modules/3.12.28-4-default/source/include/uapi -Iinclude/generated/uapi -include /lib/modules/3.12.28-4-default/source/include/linux/kconfig.h -o tmp_include_depends -o scripts -o include/config/MARKER -C /lib/modules/3.12.28-4-default/build EXTRA_CFLAGS=-Werror-implicit-function-declaration -Werror M=/home/build/builds/build
      /home/build/builds/build/conftest.c:2:0: error: "PACKAGE_NAME" redefined [-Werror]
       #define PACKAGE_NAME "Lustre"
       ^
      In file included from /usr/src/openib/include/linux/compat-2.6.h:7:0,
                       from <command-line>:0:
      /usr/src/openib/include/linux/../../compat/config.h:398:0: note: this is the location of the previous definition
       #define PACKAGE_NAME "compat_ofa"
       ^
      <etc>
      

      I bisected this particular error to commit a0f7434 LU-8241 http://review.whamcloud.com/20644

      If I undo that change I get another error:

      iosr60-2:/home/build/builds # git diff a0f7434^..a0f7434 | patch -p1 -R
      patching file config/lustre-build-linux.m4
      patching file lnet/autoconf/lustre-lnet.m4
      Hunk #1 succeeded at 253 (offset 7 lines).
      Hunk #2 succeeded at 328 (offset 7 lines).
      Hunk #3 succeeded at 337 (offset 7 lines).
      Hunk #4 succeeded at 467 (offset 7 lines).
      Hunk #5 succeeded at 656 (offset 7 lines).
      iosr60-2:/home/build/builds # sh ./autogen.sh; ./configure --disable-server --enable-client --enable-dlc --disable-manpages --with-o2ib=yes; make -j 4
      <snip>
      /home/build/builds/lustre/llite/lloop.c: In function ‘loop_set_fd’:
      /home/build/builds/lustre/llite/lloop.c:577:2: error: implicit declaration of function ‘blk_queue_max_phys_segments’ [-Werror=implicit-function-declaration]
        blk_queue_max_segments(lo->lo_queue, LLOOP_MAX_SEGMENTS);
        ^
      /home/build/builds/lustre/llite/lloop.c:577:2: error: implicit declaration of function ‘blk_queue_max_hw_segments’ [-Werror=implicit-function-declaration]
      

      The config.log shows the error I noted in LU-7527:

      configure:18146: checking if 'blk_queue_max_segments' is defined
      configure:18173: cp conftest.c build && make -d modules LD=/usr/x86_64-suse-linux/bin/ld -m elf_x86_64 CC=gcc -f /home/build/builds/build/Makefile LUSTRE_LINUX_CONFIG=/lib/modules/3.12.28-4-default/build/.config LINUXINCLUDE= -I/usr/src/compat-rdma/include -I/lib/modules/3.12.28-4-default/source/arch/x86/include -Iinclude -Iarch/x86/include/generated -I/lib/modules/3.12.28-4-default/source/include -Iinclude2 -I/lib/modules/3.12.28-4-default/source/include/uapi -Iinclude/generated -I/lib/modules/3.12.28-4-default/source/arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I/lib/modules/3.12.28-4-default/source/include/uapi -Iinclude/generated/uapi -include /lib/modules/3.12.28-4-default/source/include/linux/kconfig.h -o tmp_include_depends -o scripts -o include/config/MARKER -C /lib/modules/3.12.28-4-default/build EXTRA_CFLAGS=-Werror-implicit-function-declaration -g -I/home/build/builds/libcfs/include -I/home/build/builds/lnet/include -I/home/build/builds/lustre/include M=/home/build/builds/build
      In file included from /lib/modules/3.12.28-4-default/source/include/linux/device.h:29:0,
                       from /lib/modules/3.12.28-4-default/source/include/linux/genhd.h:62,
                       from /lib/modules/3.12.28-4-default/source/include/linux/blkdev.h:9,
                       from /home/build/builds/build/conftest.c:58:
      /usr/src/compat-rdma/include/linux/kthread.h:23:8: error: redefinition of ‘struct kthread_worker’
       struct kthread_worker {
              ^
      In file included from /usr/src/compat-rdma/include/linux/kthread.h:16:0,
                       from /lib/modules/3.12.28-4-default/source/include/linux/device.h:29,
                       from /lib/modules/3.12.28-4-default/source/include/linux/genhd.h:62,
                       from /lib/modules/3.12.28-4-default/source/include/linux/blkdev.h:9,
                       from /home/build/builds/build/conftest.c:58:
      /lib/modules/3.12.28-4-default/source/include/linux/kthread.h:66:8: note: originally defined here
       struct kthread_worker {
              ^
      <etc>
      

      As noted in LU-7527 I can workaround this latter issue by adding the following to the autoconf tests that fail with the kthread_worker redefinition error:

      +	#ifdef HAVE_COMPAT_RDMA
      +	#undef PACKAGE_NAME
      +	#undef PACKAGE_TARNAME
      +	#undef PACKAGE_VERSION
      +	#undef PACKAGE_STRING
      +	#undef PACKAGE_BUGREPORT
      +	#undef PACKAGE_URL
      +	#include <linux/compat-2.6.h>
      +	#endif
      

      Attachments

        Issue Links

          Activity

            People

              wc-triage WC Triage
              hornc Chris Horn
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: