the-data-lab / falcon

The source code for the Usenix ATC'17 Paper, "Falcon: Scaling IO Performance in Multi-SSD Volumes"
Other
8 stars 3 forks source link

Compile error on ZFS and SPL modules #2

Open youf3 opened 7 years ago

youf3 commented 7 years ago

Hi,

I'm trying to compile the kernel on Centos 7 and having problem with ZFS and SPL.

What I tried was to follow instruction here: https://www.linode.com/docs/tools-reference/custom-kernels-distros/custom-compiled-kernel-centos-7

Everything worked (with some modification : https://github.com/iHeartGraph/falcon/pull/1 ), until i do

$ make CHK include/config/kernel.release CHK include/generated/uapi/linux/version.h CHK include/generated/utsrelease.h CHK include/generated/bounds.h CHK include/generated/timeconst.h CHK include/generated/asm-offsets.h CALL scripts/checksyscalls.sh CHK include/generated/compile.h SKIPPED include/generated/compile.h CHK include/generated/uapi/linux/version.h LINK vmlinux LD vmlinux.o MODPOST vmlinux.o GEN .version CHK include/generated/compile.h SKIPPED include/generated/compile.h KSYM .tmp_kallsyms1.o KSYM .tmp_kallsyms2.o LD vmlinux SORTEX vmlinux SYSMAP System.map TEST posttest Succeed: decoded and checked 1837462 instructions TEST posttest arch/x86/tools/insn_sanity: Success: decoded and checked 1000000 random instructions with 0 errors (seed:0x353ad1bb) VOFFSET arch/x86/boot/voffset.h OBJCOPY arch/x86/boot/compressed/vmlinux.bin GZIP arch/x86/boot/compressed/vmlinux.bin.gz MKPIGGY arch/x86/boot/compressed/piggy.S AS arch/x86/boot/compressed/piggy.o LD arch/x86/boot/compressed/vmlinux ZOFFSET arch/x86/boot/zoffset.h AS arch/x86/boot/header.o CC arch/x86/boot/version.o LD arch/x86/boot/setup.elf OBJCOPY arch/x86/boot/setup.bin OBJCOPY arch/x86/boot/vmlinux.bin BUILD arch/x86/boot/bzImage Setup is 16924 bytes (padded to 17408 bytes). System is 5477 kB CRC 564b17ce Kernel: arch/x86/boot/bzImage is ready (#5) Building modules, stage 2. MODPOST 2324 modules

$ sudo make install sh ./arch/x86/boot/install.sh 4.4.8+ arch/x86/boot/bzImage \ System.map "/boot" Error! Bad return status for module build on kernel: 4.4.8+ (x86_64) Consult /var/lib/dkms/spl/0.6.5.9/build/make.log for more information. configure: error: Please make sure the kmod spl devel package for your distribution is installed then try again. If that fails you can specify the location of the spl objects with the '--with-spl-obj=PATH' option. Error! Bad return status for module build on kernel: 4.4.8+ (x86_64) Consult /var/lib/dkms/zfs/0.6.5.9/build/make.log for more information.

$ cat /var/lib/dkms/spl/0.6.5.9/build/make.log DKMS make.log for spl-0.6.5.9 for kernel 4.4.8+ (x86_64) Wed Aug 2 13:13:55 CDT 2017 make all-recursive Making all in include Making all in fs make[5]: Nothing to be done for all'. Making all in linux make[5]: Nothing to be done forall'. Making all in rpc make[5]: Nothing to be done for all'. Making all in sharefs make[5]: Nothing to be done forall'. Making all in sys Making all in fm make[6]: Nothing to be done for all'. Making all in fs make[6]: Nothing to be done forall'. Making all in sysevent make[6]: Nothing to be done for all'. make[6]: Nothing to be done forall-am'. Making all in util make[5]: Nothing to be done for all'. Making all in vm make[5]: Nothing to be done forall'. make[5]: Nothing to be done for all-am'. Making all in rpm Making all in generic make[5]: Nothing to be done forall'. Making all in redhat make[5]: Nothing to be done for all'. make[5]: Nothing to be done forall-am'. Making all in module make -C /lib/modules/4.4.8+/build SUBDIRS=pwd CONFIG_SPL=m modules scripts/kconfig/conf --silentoldconfig Kconfig CHK include/config/kernel.release CHK include/generated/uapi/linux/version.h CHK include/generated/utsrelease.h CHK include/generated/timeconst.h CHK include/generated/bounds.h CHK include/generated/asm-offsets.h CALL scripts/checksyscalls.sh Building modules, stage 2. MODPOST 2326 modules make[4]: No rule to make target module/Module.symvers', needed byall-am'. Stop. make[3]: [all-recursive] Error 1 make[2]: *** [all] Error 2

$ cat /var/lib/dkms/zfs/0.6.5.9/build/make.log DKMS make.log for zfs-0.6.5.9 for kernel 4.4.8+ (x86_64) Wed Aug 2 13:19:27 CDT 2017 make[2]: *** No targets specified and no makefile found. Stop.

It looks like there is a "make module" missing in one of the Makefile used by the main Makefile. Any clue on how to fix this issue?

youf3 commented 7 years ago

Temporary fix on this is to build ZFS and SPL manually with DKMS.

Once you install kernel headers for 4.4.8+, issue the following commands

$ sudo dkms autoinstall -k 4.4.8+

Kernel preparation unnecessary for this kernel. Skipping...

Running the pre_build script: checking for gawk... gawk checking metadata... META file checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking whether to enable maintainer-specific portions of Makefiles... no checking whether make supports nested variables... yes checking for a BSD-compatible install... /bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking whether make sets $(MAKE)... yes checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking whether gcc understands -c and -o together... yes checking for style of include used by make... GNU checking dependency style of gcc... gcc3 checking how to print strings... printf checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for fgrep... /bin/grep -F checking for ld used by gcc... /bin/ld checking if the linker (/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /bin/nm -B checking the name lister (/bin/nm -B) interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... 1572864 checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop checking for /bin/ld option to reload object files... -r checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for dlltool... no checking how to associate runtime and link libraries... printf %s\n checking for ar... ar checking for archiver @FILE support... @ checking for strip... strip checking for ranlib... ranlib checking command to parse /bin/nm -B output from gcc object... ok checking for sysroot... no checking for a working dd... /bin/dd checking how to truncate binary pipes... /bin/dd bs=4096 count=1 checking for mt... no checking if : is a manifest tool... no checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for dlfcn.h... yes checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC -DPIC checking if gcc PIC flag -fPIC -DPIC works... yes checking if gcc static flag -static works... no checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes checking spl author... OpenZFS on Linux checking spl license... GPL checking linux distribution... redhat checking default package type... rpm checking whether rpm is available... yes (4.11.3) checking whether rpmbuild is available... yes (4.11.3) checking whether spec files are available... yes (rpm/generic/.spec.in) checking whether dpkg is available... no checking whether dpkg-buildpackage is available... no checking whether alien is available... no checking spl config... kernel checking kernel source directory... /lib/modules/4.4.8+/build checking kernel build directory... /lib/modules/4.4.8+/build checking kernel source version... 4.4.8+ checking kernel file name for module symbols... Module.symvers checking whether debugging is enabled... no checking whether basic kmem accounting is enabled... no checking whether detailed kmem tracking is enabled... no checking whether modules can be built... yes checking whether atomic types use spinlocks... no checking whether kernel defines atomic64_t... yes checking whether old 2-argument shrinker exists... no checking whether old 3-argument shrinker exists... no checking whether new 2-argument shrinker exists... no checking whether ->count_objects callback exists... yes checking whether struct ctl_table has ctl_name... no checking whether CONFIG_TRIM_UNUSED_KSYM is disabled... yes checking whether PDE_DATA() is available... yes checking whether set_fs_pwd() requires const struct path ... yes checking whether vfs_unlink() wants 2 args... no checking whether vfs_unlink() wants 3 args... yes checking whether vfs_rename() wants 4 args... no checking whether vfs_rename() wants 5 args... no checking whether vfs_rename() wants 6 args... yes checking whether vfs_fsync() wants 2 args... yes checking whether truncate_range() inode operation is available... no checking whether struct fs_struct uses spinlock_t... yes checking whether kuid_t/kgid_t is available... yes; mandatory checking whether __put_task_struct() is available... yes checking whether fops->fallocate() exists... yes checking whether iops->fallocate() exists... no checking whether fops->fallocate() exists... no checking whether CONFIG_ZLIB_INFLATE is defined... yes checking whether CONFIG_ZLIB_DEFLATE is defined... yes checking whether zlib_deflate_workspacesize() wants 2 args... yes checking whether struct shrink_control exists... yes checking whether struct rw_semaphore member wait_lock is raw... yes checking whether struct rw_semaphore has member activity... no checking whether struct rw_semaphore has atomic_long_t member count... no checking whether header linux/sched/rt.h exists... yes checking whether vfs_getattr() wants... 2 args checking whether usleep_range() is available... yes checking whether struct kmem_cache has allocflags... no checking whether struct kmem_cache has gfpflags... no checking whether wait_on_bit() takes an action... no checking whether inode_lock_shared() exists... no checking whether mutex has owner... yes checking whether group_info->gid exists... no checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating Makefile config.status: creating man/Makefile config.status: creating man/man1/Makefile config.status: creating man/man5/Makefile config.status: creating lib/Makefile config.status: creating cmd/Makefile config.status: creating module/Makefile config.status: creating module/spl/Makefile config.status: creating module/splat/Makefile config.status: creating include/Makefile config.status: creating include/fs/Makefile config.status: creating include/linux/Makefile config.status: creating include/rpc/Makefile config.status: creating include/sharefs/Makefile config.status: creating include/sys/Makefile config.status: creating include/sys/fm/Makefile config.status: creating include/sys/fs/Makefile config.status: creating include/sys/sysevent/Makefile config.status: creating include/util/Makefile config.status: creating include/vm/Makefile config.status: creating scripts/Makefile config.status: creating rpm/Makefile config.status: creating rpm/redhat/Makefile config.status: creating rpm/redhat/spl.spec config.status: creating rpm/redhat/spl-kmod.spec config.status: creating rpm/redhat/spl-dkms.spec config.status: creating rpm/generic/Makefile config.status: creating rpm/generic/spl.spec config.status: creating rpm/generic/spl-kmod.spec config.status: creating rpm/generic/spl-dkms.spec config.status: creating spl.release config.status: creating spl_config.h config.status: executing depfiles commands config.status: executing libtool commands

Building module: cleaning build area... make -j28 KERNELRELEASE=4.4.8+...

Running the post_build script: cleaning build area...

DKMS: build completed.

spl.ko: Running module version sanity check.

splat.ko: Running module version sanity check.

depmod...

DKMS: install completed.

Kernel preparation unnecessary for this kernel. Skipping...

Running the pre_build script: checking for gawk... gawk checking metadata... META file checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking whether to enable maintainer-specific portions of Makefiles... no checking whether make supports nested variables... yes checking for a BSD-compatible install... /bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking whether make sets $(MAKE)... yes checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking whether gcc understands -c and -o together... yes checking for style of include used by make... GNU checking dependency style of gcc... gcc3 checking how to print strings... printf checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for fgrep... /bin/grep -F checking for ld used by gcc... /bin/ld checking if the linker (/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /bin/nm -B checking the name lister (/bin/nm -B) interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... 1572864 checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop checking for /bin/ld option to reload object files... -r checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for dlltool... no checking how to associate runtime and link libraries... printf %s\n checking for ar... ar checking for archiver @FILE support... @ checking for strip... strip checking for ranlib... ranlib checking command to parse /bin/nm -B output from gcc object... ok checking for sysroot... no checking for a working dd... /bin/dd checking how to truncate binary pipes... /bin/dd bs=4096 count=1 checking for mt... no checking if : is a manifest tool... no checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for dlfcn.h... yes checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC -DPIC checking if gcc PIC flag -fPIC -DPIC works... yes checking if gcc static flag -static works... no checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes checking dependency style of gcc... gcc3 checking zfs author... OpenZFS on Linux checking zfs license... CDDL checking linux distribution... redhat checking default package type... rpm checking default init directory... ${prefix}/etc/init.d checking default init script type... redhat checking default init config direectory... /etc/sysconfig checking whether initramfs-tools is available... no checking whether rpm is available... yes (4.11.3) checking whether rpmbuild is available... yes (4.11.3) checking whether spec files are available... yes (rpm/generic/.spec.in) checking whether dpkg is available... no checking whether dpkg-buildpackage is available... no checking whether alien is available... no checking zfs config... kernel checking for -Wno-unused-but-set-variable support... yes checking for -Wno-bool-compare support... no checking kernel source directory... /lib/modules/4.4.8+/build checking kernel build directory... /lib/modules/4.4.8+/build checking kernel source version... 4.4.8+ checking kernel file name for module symbols... Module.symvers checking spl source directory... /usr/src/spl-0.6.5.9 checking spl build directory... /var/lib/dkms/spl/0.6.5.9/4.4.8+/x86_64 checking spl source version... 0.6.5.9-1 checking spl file name for module symbols... Module.symvers checking whether modules can be built... yes checking whether kernel was built with 16K or larger stacks... yes checking whether kernel was built with CONFIG_DEBUG_LOCK_ALLOC... no checking whether DECLARE_EVENT_CLASS() is available... no checking whether current->bio_tail exists... no checking whether current->bio_list exists... yes checking whether submit_bio() wants 1 arg... no checking block device operation prototypes... struct block_device checking whether block_device_operations.release is void... void checking whether kernel defines fmode_t... yes checking whether kernel defines KOBJ_NAME_LEN... no checking whether blkdev_get() wants 3 args... yes checking whether blkdev_get_by_path() is available... yes checking whether open_bdev_exclusive() is available... no checking whether lookup_bdev() wants 1 arg... no checking whether lookup_bdev() wants 2 args... yes checking whether invalidate_bdev() wants 1 arg... yes checking whether bdev_logical_block_size() is available... yes checking whether bdev_physical_block_size() is available... yes checking whether bio has bi_iter... yes checking whether BIO_RWFAILFAST are defined... no checking whether REQ_FAILFAST_MASK is defined... yes checking whether REQ_OP_DISCARD is defined... no checking whether REQ_OP_SECURE_ERASE is defined... no checking whether REQ_OP_FLUSH is defined... no checking whether bio->bi_opf is defined... no checking whether bio_end_io_t wants 1 arg... yes checking whether BIO_RW_BARRIER is defined... no checking whether BIO_RW_DISCARD is defined... no checking whether blk_queue_flush() is available... yes checking whether blk_queue_flush() is GPL-only... yes checking whether blk_queue_write_cache() exists... no checking whether blk_queue_max_hw_sectors() is available... yes checking whether blk_queue_max_segments() is available... yes checking whether the BIO_RW_UNPLUG enum is available... no checking whether struct blk_plug is available... yes checking whether get_disk_ro() is available... yes checking whether get_gendisk() is available... yes checking whether bio_set_op_attrs is available... no checking whether generic_readlink is global... yes checking whether ql->discard_granularity is available... yes checking whether super_block uses const struct xattr_handler... yes checking whether xattr_handler has name... no checking whether xattr_handler->get() wants both dentry and inode... checking whether xattr_handler->get() wants xattr_handler... yes checking whether xattr_handler->set() wants both dentry and inode... checking whether xattr_handler->set() wants xattr_handler... yes checking whether xattr_handler->list() wants simple... no checking whether xattr_handler->list() wants xattr_handler... yes checking whether inode_owner_or_capable() exists... yes checking whether posix_acl_from_xattr() needs user_ns... yes checking whether posix_acl_release() is available... yes checking whether posix_acl_release() is GPL-only... yes checking whether set_cached_acl() is usable... yes checking whether posix_acl_chmod exists... no checking whether __posix_acl_chmod exists... yes checking whether posix_acl_equiv_mode() wants umode_t... yes checking whether posix_acl_valid() wants user namespace... no checking whether iops->permission() exists... yes checking whether iops->permission() wants nameidata... no checking whether iops->check_acl() exists... no checking whether iops->check_acl() wants flags... no checking whether iops->get_acl() exists... yes checking whether iops->set_acl() exists... yes checking whether uncached_acl_sentinel() exists... no checking whether sops->show_options() wants dentry... yes checking whether file_inode() is available... yes checking whether fops->fsync() wants... range checking whether sops->evict_inode() exists... yes checking whether sops->dirty_inode() wants flags... yes checking whether sops->nr_cached_objects() exists... no checking whether sops->free_cached_objects() exists... no checking whether fops->fallocate() exists... yes checking whether iops->fallocate() exists... no checking whether fops->aio_fsync() exists... yes checking whether iops->create()/mkdir()/mknod() take umode_t... yes checking whether iops->lookup() passes nameidata... no checking whether iops->create() passes nameidata... no checking whether iops->get_link() passes delayed... no checking whether iops->get_link() passes cookie... no checking whether iops->follow_link() passes cookie... yes checking whether iops->put_link() passes cookie... yes checking whether iops->truncate_range() exists... no checking whether dops->d_automount() exists... yes checking whether eops->encode_fh() wants inode... yes checking whether eops->commit_metadata() exists... yes checking whether clear_inode() is available... yes checking whether setattr_prepare() is available... no checking whether insert_inode_locked() is available... yes checking whether d_make_root() is available... yes checking whether d_obtain_alias() is available... yes checking whether d_prune_aliases() is available... yes checking whether d_set_d_op() is available... yes checking whether dops->d_revalidate() takes struct nameidata... no checking whether dentry uses const struct dentry_operations... yes checking whether check_disk_size_change() is available... yes checking whether truncate_setsize() is available... yes checking whether security_inode_init_security wants 6 args... no checking whether security_inode_init_security wants callback... yes checking whether mount_nodev() is available... yes checking whether super_block has s_shrink... no checking whether shrink_control has nid... yes checking whether super_block has s_instances list_head... no checking whether super_block has s_d_op... yes checking whether bdi_setup_and_register() wants 2 args... yes checking whether set_nlink() is available... yes checking whether elevator_change() is available... yes checking whether sget() wants 5 args... yes checking whether lseek_execute() is available... no checking whether fops->iterate_shared() is available... no checking whether fops->iterate() is available... yes checking whether fops->read/write_iter() are available... yes checking whether generic_write_checks() takes kiocb... yes checking whether kmap_atomic wants 1 args... yes checking whether follow_down_one() is available... yes checking whether make_request_fn() returns int... no checking whether make_request_fn() returns void... no checking whether make_request_fn() returns blk_qc_t... yes checking whether generic IO accounting symbols are avaliable... yes checking whether iops->rename() wants flags... no checking whether generic_setxattr() exists... yes checking whether debugging is enabled... no checking whether dmu tx validation is enabled... no checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating Makefile config.status: creating udev/Makefile config.status: creating udev/rules.d/Makefile config.status: creating etc/Makefile config.status: creating etc/init.d/Makefile config.status: creating etc/zfs/Makefile config.status: creating etc/systemd/Makefile config.status: creating etc/systemd/system/Makefile config.status: creating etc/modules-load.d/Makefile config.status: creating man/Makefile config.status: creating man/man1/Makefile config.status: creating man/man5/Makefile config.status: creating man/man8/Makefile config.status: creating lib/Makefile config.status: creating lib/libspl/Makefile config.status: creating lib/libspl/asm-generic/Makefile config.status: creating lib/libspl/asm-i386/Makefile config.status: creating lib/libspl/asm-x86_64/Makefile config.status: creating lib/libspl/include/Makefile config.status: creating lib/libspl/include/ia32/Makefile config.status: creating lib/libspl/include/ia32/sys/Makefile config.status: creating lib/libspl/include/rpc/Makefile config.status: creating lib/libspl/include/sys/Makefile config.status: creating lib/libspl/include/sys/sysevent/Makefile config.status: creating lib/libspl/include/sys/dktp/Makefile config.status: creating lib/libspl/include/util/Makefile config.status: creating lib/libavl/Makefile config.status: creating lib/libefi/Makefile config.status: creating lib/libnvpair/Makefile config.status: creating lib/libunicode/Makefile config.status: creating lib/libuutil/Makefile config.status: creating lib/libzpool/Makefile config.status: creating lib/libzfs/libzfs.pc config.status: creating lib/libzfs/libzfs_core.pc config.status: creating lib/libzfs/Makefile config.status: creating lib/libzfs_core/Makefile config.status: creating lib/libshare/Makefile config.status: creating cmd/Makefile config.status: creating cmd/zdb/Makefile config.status: creating cmd/zhack/Makefile config.status: creating cmd/zfs/Makefile config.status: creating cmd/zinject/Makefile config.status: creating cmd/zpool/Makefile config.status: creating cmd/zstreamdump/Makefile config.status: creating cmd/ztest/Makefile config.status: creating cmd/zpios/Makefile config.status: creating cmd/mount_zfs/Makefile config.status: creating cmd/fsck_zfs/Makefile config.status: creating cmd/zvol_id/Makefile config.status: creating cmd/vdev_id/Makefile config.status: creating cmd/arcstat/Makefile config.status: creating cmd/dbufstat/Makefile config.status: creating cmd/arc_summary/Makefile config.status: creating cmd/zed/Makefile config.status: creating contrib/Makefile config.status: creating contrib/bash_completion.d/Makefile config.status: creating contrib/dracut/Makefile config.status: creating contrib/dracut/90zfs/Makefile config.status: creating contrib/initramfs/Makefile config.status: creating module/Makefile config.status: creating module/avl/Makefile config.status: creating module/nvpair/Makefile config.status: creating module/unicode/Makefile config.status: creating module/zcommon/Makefile config.status: creating module/zfs/Makefile config.status: creating module/zpios/Makefile config.status: creating include/Makefile config.status: creating include/linux/Makefile config.status: creating include/sys/Makefile config.status: creating include/sys/fs/Makefile config.status: creating include/sys/fm/Makefile config.status: creating include/sys/fm/fs/Makefile config.status: creating scripts/Makefile config.status: creating scripts/zpios-profile/Makefile config.status: creating scripts/zpios-test/Makefile config.status: creating scripts/zpool-config/Makefile config.status: creating scripts/common.sh config.status: creating rpm/Makefile config.status: creating rpm/redhat/Makefile config.status: creating rpm/redhat/zfs.spec config.status: creating rpm/redhat/zfs-kmod.spec config.status: creating rpm/redhat/zfs-dkms.spec config.status: creating rpm/generic/Makefile config.status: creating rpm/generic/zfs.spec config.status: creating rpm/generic/zfs-kmod.spec config.status: creating rpm/generic/zfs-dkms.spec config.status: creating zfs-script-config.sh config.status: creating zfs.release config.status: creating zfs_config.h config.status: executing depfiles commands config.status: executing libtool commands

Building module: cleaning build area... make -j28 KERNELRELEASE=4.4.8+....

Running the post_build script: cleaning build area...

DKMS: build completed.

zavl.ko: Running module version sanity check.

znvpair.ko: Running module version sanity check.

zunicode.ko: Running module version sanity check.

zcommon.ko: Running module version sanity check.

zfs.ko: Running module version sanity check.

zpios.ko: Running module version sanity check.

depmod...

DKMS: install completed.

$ dkms status spl, 0.6.5.9, 3.10.0-514.26.1.el7.x86_64, x86_64: installed spl, 0.6.5.9, 4.4.8+, x86_64: installed zfs, 0.6.5.9, 3.10.0-514.26.1.el7.x86_64, x86_64: installed zfs, 0.6.5.9, 4.4.8+, x86_64: installed

Once they are installed for 4.4.8+, make install will install the kernel.

pradeep-k commented 7 years ago

Thanks for posting the work-around.