openzfs/spl

SPL fails to build with gcc 7.1.0 (linux 4.9.30)

RJVB opened this issue · 19 comments

RJVB commented

As already mentioned elsewhere, I am getting a build failure when running dkms install spl/0.6.5.9 on an Ubuntu derivative running Linux 4.9.30 when I use GCC 7.1.0 .

In file included from ./include/linux/seqlock.h:35:0,
                 from ./include/linux/time.h:5,
                 from ./include/linux/stat.h:18,
                 from ./include/linux/module.h:10,
                 from /var/lib/dkms/spl/0.6.5.9/build/include/sys/sysmacros.h:28,
                 from /var/lib/dkms/spl/0.6.5.9/build/include/sys/types.h:29,
                 from /var/lib/dkms/spl/0.6.5.9/build/include/sys/rwlock.h:28,
                 from /var/lib/dkms/spl/0.6.5.9/build/module/spl/spl-rwlock.c:27:
/var/lib/dkms/spl/0.6.5.9/build/include/sys/rwlock.h: In function ‘spl_rw_set_owner’:
/var/lib/dkms/spl/0.6.5.9/build/include/sys/rwlock.h:55:32: error: passing argument 1 of ‘spinlock_check’ from incompatible pointer type [-Werror=incompatible-pointer-types]
         spl_rwsem_lock_irqsave(&SEM(rwp)->wait_lock, flags);
                                ^
./include/linux/spinlock.h:208:34: note: in definition of macro ‘raw_spin_lock_irqsave’
   flags = _raw_spin_lock_irqsave(lock); \
                                  ^~~~
/var/lib/dkms/spl/0.6.5.9/build/include/linux/rwsem_compat.h:55:46: note: in expansion of macro ‘spin_lock_irqsave’
 #define spl_rwsem_lock_irqsave(lk, fl)       spin_lock_irqsave(lk, fl)
                                              ^~~~~~~~~~~~~~~~~
/var/lib/dkms/spl/0.6.5.9/build/include/sys/rwlock.h:55:9: note: in expansion of macro ‘spl_rwsem_lock_irqsave’
         spl_rwsem_lock_irqsave(&SEM(rwp)->wait_lock, flags);
         ^~~~~~~~~~~~~~~~~~~~~~

This failure disappears when I use GCC 6.3.0 (/usr/bin/gcc is a symlink to either the one or the other compiler version); ZFS builds fine with GCC 7.1.0 .

I'm attaching the config.log and make.log files:
config.log.txt
make.log.txt

RJVB commented

FWIW, initial testing suggests that GCC 7.1 is just being overly pedantic and that the reported error isn't one in practice. I'd like confirmation of that, though. Is it indeed safe to use an SPL kext built with GCC 6.3?

I can confirm that using GCC 7.1 series has issues with spl. Also #619 seems to be linked to this one. This happens with Kernel v4.9, v4.11, v4.12-rc4, however I was able to build spl with gcc v7.1.1 against Kernel v4.4.71. So it seems to be a combination of kernel version and gcc version. The failed build.log can be found here. See also here: archzfs/archzfs#121

Build-Log of linux44 can be found here: linux44-4.4.71-gcc-7.1.1-build.txt

Seems with version higher than v4.4 series the following warning is an error:

/home/phil/dev/git/manjaro/repositories/extra/linux44-extramodules/spl_zfs/src/spl-spl-0.6.5.9/include/sys/rwlock.h:55:32: warning: passing argument 1 of 'spinlock_check' from incompatible pointer type [-Wincompatible-pointer-types]
         spl_rwsem_lock_irqsave(&SEM(rwp)->wait_lock, flags);
                                ^
include/linux/spinlock.h:208:34: note: in definition of macro 'raw_spin_lock_irqsave'
   flags = _raw_spin_lock_irqsave(lock); \
                                  ^~~~
/home/phil/dev/git/manjaro/repositories/extra/linux44-extramodules/spl_zfs/src/spl-spl-0.6.5.9/include/linux/rwsem_compat.h:55:46: note: in expansion of macro 'spin_lock_irqsave'
 #define spl_rwsem_lock_irqsave(lk, fl)       spin_lock_irqsave(lk, fl)
                                              ^~~~~~~~~~~~~~~~~
/home/phil/dev/git/manjaro/repositories/extra/linux44-extramodules/spl_zfs/src/spl-spl-0.6.5.9/include/sys/rwlock.h:55:9: note: in expansion of macro 'spl_rwsem_lock_irqsave'
         spl_rwsem_lock_irqsave(&SEM(rwp)->wait_lock, flags);
         ^~~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/seqlock.h:35:0,
                 from include/linux/time.h:5,
                 from include/linux/stat.h:18,
                 from include/linux/module.h:10,
                 from /home/phil/dev/git/manjaro/repositories/extra/linux44-extramodules/spl_zfs/src/spl-spl-0.6.5.9/include/sys/sysmacros.h:28,
                 from /home/phil/dev/git/manjaro/repositories/extra/linux44-extramodules/spl_zfs/src/spl-spl-0.6.5.9/include/sys/types.h:29,
                 from /home/phil/dev/git/manjaro/repositories/extra/linux44-extramodules/spl_zfs/src/spl-spl-0.6.5.9/include/sys/rwlock.h:28,
                 from /home/phil/dev/git/manjaro/repositories/extra/linux44-extramodules/spl_zfs/src/spl-spl-0.6.5.9/module/spl/spl-rwlock.c:27:
include/linux/spinlock.h:289:40: note: expected 'spinlock_t * {aka struct spinlock *}' but argument is of type 'raw_spinlock_t * {aka struct raw_spinlock *}'
 static __always_inline raw_spinlock_t *spinlock_check(spinlock_t *lock)

Also seeing SPL build failure on slackware64-current: gcc-7.1.0, linux-4.9.30

correction: linux-4.9.31

update: I was able to successfully build spl-solaris-0.7.0-rc4 and zfs-0.7.0-rc4 packages for slackware using gcc-7.1.0 without issue.

DOWNLOAD="http://github.com/zfsonlinux/zfs/releases/download/zfs-0.7.0-rc4/spl-0.7.0-rc4.tar.gz"
MD5SUM="3e3bf1f98621a3d47a4b3d2f1bb68a2d"

DOWNLOAD="https://github.com/zfsonlinux/zfs/releases/download/zfs-0.7.0-rc4/zfs-0.7.0-rc4.tar.gz"
MD5SUM="f8dbc4d8aa8f7e9afc5afe28d3939e14"

Just released OpenZFS version 0.6.5.10 does not fix this problem in Arch Linux with gcc 7.1.1 and kernel 4.9.31. Also tried building with kernel 4.11.4 and had the same results.

Another GCC 7.1.1 issue here: openzfs/zfs#6221

@demizer: it is logical that v0.6.5.10 fails the same way. It only adds compatibility up to kernel v4.12 to spl but no gcc7 fixes. Seems it is not yet widely used so far ...

RJVB commented

For what it's worth, 0.6.5.10 fails to compile with GCC 7, but the current master branch checkout compiles with no trouble.

OK, this brings us one step closer. Seems we have to apply those:

692ae8d - Add new lock types MUTEX_NOLOCKDEP, and RW_NOLOCKDEP
066b89e - Don't use tq->tq_lock_flags

RJVB commented

@behlendorf - can we just apply those 2 patches to 0.6.5.10 without any potential side-effects?

@RJVB yes both of these if they apply cleanly shouldn't introduce any side effects if you rebuild both the spl and zfs code.

As @PaddyMac indicated, building from master works on gcc 7.1 without issue. I don't really like importing patches into stable builds for archzfs. Is there going to be another stable release soon that addresses this issue?

RJVB commented

@RJVB: I'm currently doing some backports ...

Ok, I took the wrong commit. Sorry. Applying this will help: 4f8e643 - Don't take spin lock on rwlock owner

config.status: creating spl_config.h
config.status: executing depfiles commands
config.status: executing libtool commands
make  all-recursive
make[1]: Entering directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9'
Making all in include
make[2]: Entering directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/include'
Making all in fs
make[3]: Entering directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/include/fs'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/include/fs'
Making all in linux
make[3]: Entering directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/include/linux'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/include/linux'
Making all in rpc
make[3]: Entering directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/include/rpc'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/include/rpc'
Making all in sharefs
make[3]: Entering directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/include/sharefs'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/include/sharefs'
Making all in sys
make[3]: Entering directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/include/sys'
Making all in fm
make[4]: Entering directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/include/sys/fm'
make[4]: Nothing to be done for 'all'.
make[4]: Leaving directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/include/sys/fm'
Making all in fs
make[4]: Entering directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/include/sys/fs'
make[4]: Nothing to be done for 'all'.
make[4]: Leaving directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/include/sys/fs'
Making all in sysevent
make[4]: Entering directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/include/sys/sysevent'
make[4]: Nothing to be done for 'all'.
make[4]: Leaving directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/include/sys/sysevent'
make[4]: Entering directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/include/sys'
make[4]: Nothing to be done for 'all-am'.
make[4]: Leaving directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/include/sys'
make[3]: Leaving directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/include/sys'
Making all in util
make[3]: Entering directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/include/util'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/include/util'
Making all in vm
make[3]: Entering directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/include/vm'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/include/vm'
make[3]: Entering directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/include'
make[3]: Nothing to be done for 'all-am'.
make[3]: Leaving directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/include'
make[2]: Leaving directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/include'
Making all in rpm
make[2]: Entering directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/rpm'
Making all in generic
make[3]: Entering directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/rpm/generic'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/rpm/generic'
Making all in redhat
make[3]: Entering directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/rpm/redhat'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/rpm/redhat'
make[3]: Entering directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/rpm'
make[3]: Nothing to be done for 'all-am'.
make[3]: Leaving directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/rpm'
make[2]: Leaving directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/rpm'
Making all in module
make[2]: Entering directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module'
make -C /usr/lib/modules/4.12.0-1-MANJARO/build SUBDIRS=`pwd`  CONFIG_SPL=m modules
make[3]: Entering directory '/usr/lib/modules/4.12.0-1-MANJARO/build'
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/spl/spl-proc.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/splat/splat-ctl.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/spl/spl-kmem.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/splat/splat-kmem.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/spl/spl-kmem-cache.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/splat/splat-taskq.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/splat/splat-random.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/spl/spl-vmem.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/spl/spl-thread.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/splat/splat-mutex.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/splat/splat-condvar.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/splat/splat-thread.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/spl/spl-taskq.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/splat/splat-rwlock.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/spl/spl-rwlock.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/splat/splat-time.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/spl/spl-vnode.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/splat/splat-vnode.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/splat/splat-kobj.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/spl/spl-err.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/spl/spl-kobj.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/splat/splat-atomic.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/spl/spl-generic.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/spl/spl-atomic.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/spl/spl-mutex.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/spl/spl-kstat.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/splat/splat-list.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/spl/spl-condvar.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/splat/splat-generic.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/spl/spl-xdr.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/spl/spl-cred.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/spl/spl-tsd.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/spl/spl-zlib.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/splat/splat-cred.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/splat/splat-zlib.o
  CC [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/splat/splat-linux.o
  LD [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/splat/splat.o
  LD [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/spl/spl.o
  Building modules, stage 2.
  MODPOST 2 modules
  CC      /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/spl/spl.mod.o
  CC      /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/splat/splat.mod.o
  LD [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/spl/spl.ko
  LD [M]  /home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module/splat/splat.ko
make[3]: Leaving directory '/usr/lib/modules/4.12.0-1-MANJARO/build'
make[2]: Leaving directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9/module'
make[2]: Entering directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9'
make[2]: Nothing to be done for 'all-am'.
make[2]: Leaving directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9'
make[1]: Leaving directory '/home/phil/dev/git/manjaro/repositories/stable-repos/extra/linux412-extramodules/_broken/spl_zfs/src/spl-spl-0.6.5.9'

Hi, you can remove the -Werror parameter for users (and keep it only for developers). This will avoid all kinds of new warnings introduced by newer gcc versions being treated as errors, so users don't need to downgrade their gcc only to get the same code compiled.

RJVB commented

-Werror has become problematic for working with the official grsecurity patchset as well. I'm now forced to patch SPL and ZFS's M4 files to remove -Werror from wherever it appears during conftests.

I think, like @lilydjwg, that killing off -Werror for the general case is the right play, both in SPL and ZFS. You can never know which compiler, which toolchain, which kernel people are going to try and use ZFS with. Warnings are easy to get. -Werror makes harmless warnings fatal, and when used in configure scripts, it does so in weird ways, such as making the configure script make the wrong assumptions, hiding failures until much later.

Closing. My understanding from the comments above is that all the needed commits were added to the release branch a while ago now. As for -Werror it should only be enabled when building with ./configure --enable-debug option.