aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2018-02-15 17:53:18 -0800
committerBrian Behlendorf <[email protected]>2018-05-29 16:00:33 -0700
commit93ce2b4ca5a40c41ac945cd3aaf4a4a22bb751e1 (patch)
tree6832f5c9dfdbe0f0bd5c8708344a769676b1f95d
parent1272941f49321bcb7b26025670720c98785427ee (diff)
Update build system and packaging
Minimal changes required to integrate the SPL sources in to the ZFS repository build infrastructure and packaging. Build system and packaging: * Renamed SPL_* autoconf m4 macros to ZFS_*. * Removed redundant SPL_* autoconf m4 macros. * Updated the RPM spec files to remove SPL package dependency. * The zfs package obsoletes the spl package, and the zfs-kmod package obsoletes the spl-kmod package. * The zfs-kmod-devel* packages were updated to add compatibility symlinks under /usr/src/spl-x.y.z until all dependent packages can be updated. They will be removed in a future release. * Updated copy-builtin script for in-kernel builds. * Updated DKMS package to include the spl.ko. * Updated stale AUTHORS file to include all contributors. * Updated stale COPYRIGHT and included the SPL as an exception. * Renamed README.markdown to README.md * Renamed OPENSOLARIS.LICENSE to LICENSE. * Renamed DISCLAIMER to NOTICE. Required code changes: * Removed redundant HAVE_SPL macro. * Removed _BOOT from nvpairs since it doesn't apply for Linux. * Initial header cleanup (removal of empty headers, refactoring). * Remove SPL repository clone/build from zimport.sh. * Use of DEFINE_RATELIMIT_STATE and DEFINE_SPINLOCK removed due to build issues when forcing C99 compilation. * Replaced legacy ACCESS_ONCE with READ_ONCE. * Include needed headers for `current` and `EXPORT_SYMBOL`. Reviewed-by: Tony Hutter <[email protected]> Reviewed-by: Olaf Faaland <[email protected]> Reviewed-by: Matthew Ahrens <[email protected]> Reviewed-by: Pavel Zakharov <[email protected]> Signed-off-by: Brian Behlendorf <[email protected]> TEST_ZIMPORT_SKIP="yes" Closes #7556
-rw-r--r--AUTHORS389
-rw-r--r--COPYRIGHT46
-rw-r--r--DISCLAIMER24
-rw-r--r--LICENSE (renamed from OPENSOLARIS.LICENSE)0
-rw-r--r--Makefile.am22
-rw-r--r--NOTICE16
-rw-r--r--README.md (renamed from README.markdown)8
-rw-r--r--TEST4
-rw-r--r--cmd/mount_zfs/mount_zfs.c1
-rw-r--r--cmd/zed/agents/zfs_diagnosis.c1
-rw-r--r--cmd/zed/agents/zfs_mod.c1
-rw-r--r--cmd/zfs/zfs_iter.c1
-rw-r--r--config/kernel-ctl-table-name.m44
-rw-r--r--config/kernel-fallocate-pax.m44
-rw-r--r--config/kernel-group-info.m44
-rw-r--r--config/kernel-inode-lock.m44
-rw-r--r--config/kernel-kmem-cache.m410
-rw-r--r--config/kernel-kuidgid.m414
-rw-r--r--config/kernel-pde-data.m44
-rw-r--r--config/kernel-rw.m48
-rw-r--r--config/kernel-rwsem.m412
-rw-r--r--config/kernel-sched.m412
-rw-r--r--config/kernel-set-fs-pwd.m46
-rw-r--r--config/kernel-shrink.m4127
-rw-r--r--config/kernel-shrinker.m4125
-rw-r--r--config/kernel-spinlock.m44
-rw-r--r--config/kernel-timer.m44
-rw-r--r--config/kernel-trim-unused-symbols.m419
-rw-r--r--config/kernel-urange-sleep.m44
-rw-r--r--config/kernel-vfs-fsync.m44
-rw-r--r--config/kernel-vfs-getattr.m412
-rw-r--r--config/kernel-wait.m412
-rw-r--r--config/kernel-zlib.m412
-rw-r--r--config/kernel.m4253
-rw-r--r--config/zfs-build.m462
-rw-r--r--config/zfs-meta.m426
-rw-r--r--configure.ac6
-rwxr-xr-xcopy-builtin10
-rw-r--r--include/Makefile.am2
-rw-r--r--include/linux/Makefile.am3
-rw-r--r--include/linux/blkdev_compat.h1
-rw-r--r--include/linux/compiler_compat.h (renamed from lib/libspl/include/attr.h)16
-rw-r--r--include/spl/Makefile.am1
-rw-r--r--include/spl/rpc/Makefile.am7
-rw-r--r--include/spl/sys/Makefile.am61
-rw-r--r--include/spl/sys/debug.h2
-rw-r--r--include/spl/sys/errno.h (renamed from lib/libspl/include/sys/compress.h)25
-rw-r--r--include/spl/sys/mutex.h3
-rw-r--r--include/spl/sys/rwlock.h1
-rw-r--r--include/spl/sys/sysmacros.h1
-rw-r--r--include/spl/sys/types.h4
-rw-r--r--include/spl/sys/vnode.h4
-rw-r--r--include/sys/Makefile.am1
-rw-r--r--include/sys/abd.h3
-rw-r--r--include/sys/fm/protocol.h1
-rw-r--r--include/sys/note.h (renamed from lib/libspl/include/sys/note.h)2
-rw-r--r--include/sys/nvpair.h7
-rw-r--r--include/sys/xvattr.h1
-rw-r--r--include/sys/zfs_context.h14
-rw-r--r--include/sys/zfs_delay.h2
-rw-r--r--include/sys/zfs_fuid.h1
-rw-r--r--include/sys/zfs_znode.h1
-rw-r--r--include/sys/zpl.h1
-rw-r--r--lib/libefi/rdwr_efi.c1
-rw-r--r--lib/libnvpair/libnvpair.c2
-rw-r--r--lib/libshare/nfs.c2
-rw-r--r--lib/libshare/smb.c1
-rw-r--r--lib/libspl/include/Makefile.am3
-rw-r--r--lib/libspl/include/note.h53
-rw-r--r--lib/libspl/include/sys/Makefile.am5
-rw-r--r--lib/libspl/include/sys/stdtypes.h (renamed from lib/libspl/include/sys/systm.h)38
-rw-r--r--lib/libspl/include/sys/strings.h (renamed from lib/libspl/include/strings.h)6
-rw-r--r--lib/libspl/include/sys/sysmacros.h2
-rw-r--r--lib/libspl/include/sys/types.h27
-rw-r--r--lib/libspl/include/sys/types32.h2
-rw-r--r--lib/libspl/include/umem.h1
-rw-r--r--lib/libuutil/uu_dprintf.c1
-rw-r--r--lib/libzfs/libzfs_diff.c3
-rw-r--r--man/man1/zhack.11
-rw-r--r--man/man5/Makefile.am7
-rw-r--r--module/Makefile.in23
-rw-r--r--module/avl/avl.c4
-rw-r--r--module/icp/algs/edonr/edonr.c7
-rw-r--r--module/icp/algs/edonr/edonr_byteorder.h2
-rw-r--r--module/icp/algs/skein/skein.c2
-rw-r--r--module/icp/algs/skein/skein_impl.h9
-rw-r--r--module/icp/algs/skein/skein_port.h1
-rw-r--r--module/icp/api/kcf_cipher.c2
-rw-r--r--module/icp/api/kcf_ctxops.c2
-rw-r--r--module/icp/api/kcf_digest.c2
-rw-r--r--module/icp/api/kcf_mac.c2
-rw-r--r--module/icp/api/kcf_miscapi.c2
-rw-r--r--module/icp/illumos-crypto.c2
-rw-r--r--module/icp/io/edonr_mod.c1
-rw-r--r--module/icp/io/skein_mod.c1
-rw-r--r--module/lua/lapi.c2
-rw-r--r--module/lua/lauxlib.c2
-rw-r--r--module/lua/lbaselib.c2
-rw-r--r--module/lua/lcorolib.c2
-rw-r--r--module/lua/lstrlib.c2
-rw-r--r--module/lua/ltablib.c2
-rw-r--r--module/nvpair/fnvpair.c2
-rw-r--r--module/nvpair/nvpair.c19
-rw-r--r--module/nvpair/nvpair_alloc_fixed.c11
-rw-r--r--module/spl/Makefile.in28
-rw-r--r--module/spl/README.md16
-rw-r--r--module/spl/spl-condvar.c7
-rw-r--r--module/spl/spl-err.c13
-rw-r--r--module/spl/spl-generic.c17
-rw-r--r--module/spl/spl-kmem.c20
-rw-r--r--module/spl/spl-rwlock.c1
-rw-r--r--module/spl/spl-taskq.c3
-rw-r--r--module/spl/spl-vnode.c4
-rw-r--r--module/spl/spl-xdr.c2
-rw-r--r--module/unicode/u8_textprep.c9
-rw-r--r--module/unicode/uconv.c3
-rw-r--r--module/zcommon/zfeature_common.c6
-rw-r--r--module/zcommon/zfs_comutil.c7
-rw-r--r--module/zcommon/zfs_deleg.c5
-rw-r--r--module/zcommon/zfs_fletcher.c2
-rw-r--r--module/zcommon/zfs_fletcher_aarch64_neon.c2
-rw-r--r--module/zcommon/zfs_fletcher_avx512.c2
-rw-r--r--module/zcommon/zfs_fletcher_intel.c2
-rw-r--r--module/zcommon/zfs_fletcher_sse.c2
-rw-r--r--module/zcommon/zfs_fletcher_superscalar.c2
-rw-r--r--module/zcommon/zfs_fletcher_superscalar4.c2
-rw-r--r--module/zcommon/zfs_namecheck.c6
-rw-r--r--module/zcommon/zfs_prop.c6
-rw-r--r--module/zcommon/zfs_uio.c2
-rw-r--r--module/zcommon/zpool_prop.c6
-rw-r--r--module/zcommon/zprop_common.c7
-rw-r--r--module/zfs/abd.c2
-rw-r--r--module/zfs/arc.c10
-rw-r--r--module/zfs/dbuf.c6
-rw-r--r--module/zfs/dbuf_stats.c2
-rw-r--r--module/zfs/ddt.c2
-rw-r--r--module/zfs/ddt_zap.c1
-rw-r--r--module/zfs/dmu.c2
-rw-r--r--module/zfs/dmu_object.c2
-rw-r--r--module/zfs/dmu_objset.c2
-rw-r--r--module/zfs/dmu_traverse.c2
-rw-r--r--module/zfs/dmu_tx.c3
-rw-r--r--module/zfs/dmu_zfetch.c2
-rw-r--r--module/zfs/dsl_dataset.c2
-rw-r--r--module/zfs/dsl_deleg.c2
-rw-r--r--module/zfs/dsl_destroy.c2
-rw-r--r--module/zfs/dsl_dir.c2
-rw-r--r--module/zfs/dsl_pool.c2
-rw-r--r--module/zfs/dsl_prop.c2
-rw-r--r--module/zfs/dsl_scan.c2
-rw-r--r--module/zfs/dsl_synctask.c2
-rw-r--r--module/zfs/fm.c5
-rw-r--r--module/zfs/gzip.c5
-rw-r--r--module/zfs/metaslab.c4
-rw-r--r--module/zfs/mmp.c2
-rw-r--r--module/zfs/multilist.c2
-rw-r--r--module/zfs/pathname.c2
-rw-r--r--module/zfs/sa.c1
-rw-r--r--module/zfs/spa.c10
-rw-r--r--module/zfs/spa_config.c2
-rw-r--r--module/zfs/spa_errlog.c2
-rw-r--r--module/zfs/spa_history.c6
-rw-r--r--module/zfs/spa_misc.c2
-rw-r--r--module/zfs/spa_stats.c2
-rw-r--r--module/zfs/txg.c2
-rw-r--r--module/zfs/vdev.c2
-rw-r--r--module/zfs/vdev_cache.c2
-rw-r--r--module/zfs/vdev_disk.c1
-rw-r--r--module/zfs/vdev_indirect.c2
-rw-r--r--module/zfs/vdev_indirect_births.c2
-rw-r--r--module/zfs/vdev_indirect_mapping.c2
-rw-r--r--module/zfs/vdev_mirror.c2
-rw-r--r--module/zfs/vdev_queue.c2
-rw-r--r--module/zfs/vdev_raidz_math.c2
-rw-r--r--module/zfs/vdev_removal.c2
-rw-r--r--module/zfs/zap_micro.c2
-rw-r--r--module/zfs/zcp.c1
-rw-r--r--module/zfs/zfs_acl.c6
-rw-r--r--module/zfs/zfs_byteswap.c2
-rw-r--r--module/zfs/zfs_ctldir.c3
-rw-r--r--module/zfs/zfs_dir.c6
-rw-r--r--module/zfs/zfs_fm.c2
-rw-r--r--module/zfs/zfs_fuid.c1
-rw-r--r--module/zfs/zfs_ioctl.c13
-rw-r--r--module/zfs/zfs_log.c4
-rw-r--r--module/zfs/zfs_onexit.c4
-rw-r--r--module/zfs/zfs_replay.c1
-rw-r--r--module/zfs/zfs_rlock.c1
-rw-r--r--module/zfs/zfs_vfsops.c12
-rw-r--r--module/zfs/zfs_vnops.c13
-rw-r--r--module/zfs/zfs_znode.c10
-rw-r--r--module/zfs/zil.c3
-rw-r--r--module/zfs/zio.c2
-rw-r--r--module/zfs/zio_compress.c1
-rw-r--r--module/zfs/zio_crypt.c2
-rw-r--r--module/zfs/zio_inject.c2
-rw-r--r--module/zfs/zpl_file.c1
-rw-r--r--module/zfs/zpl_xattr.c2
-rw-r--r--module/zfs/zrlock.c2
-rw-r--r--rpm/generic/zfs-dkms.spec.in2
-rw-r--r--rpm/generic/zfs-kmod.spec.in35
-rw-r--r--rpm/generic/zfs.spec.in5
-rw-r--r--rpm/redhat/zfs-kmod.spec.in14
-rw-r--r--scripts/Makefile.am3
-rwxr-xr-xscripts/dkms.mkconf8
-rwxr-xr-xscripts/kmodtool11
-rwxr-xr-xscripts/zfs.sh7
-rwxr-xr-xscripts/zimport.sh75
-rw-r--r--tests/zfs-tests/tests/functional/checksum/edonr_test.c3
209 files changed, 1096 insertions, 1164 deletions
diff --git a/AUTHORS b/AUTHORS
index cf5c808e3..8314a1c21 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,95 +1,304 @@
-Brian Behlendorf is the principal developer of the ZFS on Linux port.
-He works full time as a computer scientist at Lawrence Livermore
-National Laboratory on the ZFS and Lustre filesystems. However,
-this port would not have been possible without the help of many
-others who have contributed their time, effort, and insight.
+MAINTAINERS:
- Brian Behlendorf <[email protected]>
+ Brian Behlendorf <[email protected]>
+ Tony Hutter <[email protected]>
-First and foremost the hard working ZFS developers at Sun/Oracle.
-They are responsible for the bulk of the code in this project and
-without their efforts there never would have been a ZFS filesystem.
+PAST MAINTAINERS:
- The ZFS Development Team at Sun/Oracle
+ Ned Bass <[email protected]>
-Next all the developers at KQ Infotech who implemented a prototype
-ZFS Posix Layer (ZPL). Their implementation provided an excellent
-reference for adding the ZPL functionality.
+CONTRIBUTORS:
- Anand Mitra <[email protected]>
- Anurag Agarwal <[email protected]>
- Neependra Khare <[email protected]>
- Prasad Joshi <[email protected]>
- Rohan Puri <[email protected]>
- Sandip Divekar <[email protected]>
- Shrirang <[email protected]>
-
-Additionally the following individuals have all made contributions
-to the project and deserve to be acknowledged.
-
- Albert Lee <[email protected]>
- Alejandro R. Sedeño <[email protected]>
- Alex Zhuravlev <[email protected]>
- Alexander Eremin <[email protected]>
- Alexander Stetsenko <[email protected]>
- Alexey Shvetsov <[email protected]>
- Andreas Dilger <[email protected]>
- Andrew Reid <[email protected]>
- Andrew Stormont <[email protected]>
- Andrew Tselischev <[email protected]>
- Andriy Gapon <[email protected]>
- Aniruddha Shankar <[email protected]>
- Bill Pijewski <[email protected]>
- Chris Dunlap <[email protected]>
- Chris Dunlop <[email protected]>
- Chris Siden <[email protected]>
- Chris Wedgwood <[email protected]>
- Christian Kohlschütter <[email protected]>
- Christopher Siden <[email protected]>
- Craig Sanders <[email protected]>
- Cyril Plisko <[email protected]>
- Dan McDonald <[email protected]>
- Daniel Verite <[email protected]>
- Darik Horn <[email protected]>
- Eric Schrock <[email protected]>
- Etienne Dechamps <[email protected]>
- Fajar A. Nugraha <[email protected]>
- Frederik Wessels <[email protected]>
- Garrett D'Amore <[email protected]>
- George Wilson <[email protected]>
- Gordon Ross <[email protected]>
- Gregor Kopka <[email protected]>
- Gunnar Beutner <[email protected]>
- James H <[email protected]>
- Javen Wu <[email protected]>
- Jeremy Gill <[email protected]>
- Jorgen Lundman <[email protected]>
- KORN Andras <[email protected]>
- Kyle Fuller <[email protected]>
- Manuel Amador (Rudd-O) <[email protected]>
- Martin Matuska <[email protected]>
- Massimo Maggi <[email protected]>
- Matthew Ahrens <[email protected]>
- Michael Martin <[email protected]>
- Mike Harsch <[email protected]>
- Ned Bass <[email protected]>
- Oleg Stepura <[email protected]>
- Pawel Jakub Dawidek <[email protected]>
- Prakash Surya <[email protected]>
- Prasad Joshi <[email protected]>
- Ricardo M. Correia <[email protected]>
- Richard Laager <[email protected]>
- Richard Lowe <[email protected]>
- Richard Yao <[email protected]>
- Rohan Puri <[email protected]>
- Shampavman <[email protected]>
- Simon Klinkert <[email protected]>
- Suman Chakravartula <[email protected]>
- Tim Haley <[email protected]>
- Turbo Fredriksson <[email protected]>
- Yuxuan Shui <[email protected]>
- Zachary Bedell <[email protected]>
- nordaux <[email protected]>
+ Aaron Fineman <[email protected]>
+ Adam Leventhal <[email protected]>
+ Adam Stevko <[email protected]>
+ Ahmed G <[email protected]>
+ Akash Ayare <[email protected]>
+ Alan Somers <[email protected]>
+ Alar Aun <[email protected]>
+ Albert Lee <[email protected]>
+ Alec Salazar <[email protected]>
+ Alejandro R. Sedeño <[email protected]>
+ Alek Pinchuk <[email protected]>
+ Alex Braunegg <[email protected]>
+ Alex McWhirter <[email protected]>
+ Alex Reece <[email protected]>
+ Alex Wilson <[email protected]>
+ Alex Zhuravlev <[email protected]>
+ Alexander Eremin <[email protected]>
+ Alexander Motin <[email protected]>
+ Alexander Pyhalov <[email protected]>
+ Alexander Stetsenko <[email protected]>
+ Alexey Shvetsov <[email protected]>
+ Alexey Smirnoff <[email protected]>
+ Allan Jude <[email protected]>
+ AndCycle <[email protected]>
+ Andreas Buschmann <[email protected]>
+ Andreas Dilger <[email protected]>
+ Andrew Barnes <[email protected]>
+ Andrew Hamilton <[email protected]>
+ Andrew Reid <[email protected]>
+ Andrew Stormont <[email protected]>
+ Andrew Tselischev <[email protected]>
+ Andrey Vesnovaty <[email protected]>
+ Andriy Gapon <[email protected]>
+ Andy Bakun <[email protected]>
+ Aniruddha Shankar <[email protected]>
+ Antonio Russo <[email protected]>
+ Arkadiusz BubaÅ‚a <[email protected]>
+ Arne Jansen <[email protected]>
+ Aron Xu <[email protected]>
+ Bart Coddens <[email protected]>
+ Basil Crow <[email protected]>
+ Huang Liu <[email protected]>
+ Ben Allen <[email protected]>
+ Ben Rubson <[email protected]>
+ Benjamin Albrecht <[email protected]>
+ Bill McGonigle <[email protected]>
+ Bill Pijewski <[email protected]>
+ Boris Protopopov <[email protected]>
+ Brad Lewis <[email protected]>
+ Brian Behlendorf <[email protected]>
+ Brian J. Murrell <[email protected]>
+ Caleb James DeLisle <[email protected]>
+ Cao Xuewen <[email protected]>
+ Carlo Landmeter <[email protected]>
+ Carlos Alberto Lopez Perez <[email protected]>
+ Chaoyu Zhang <[email protected]>
+ Chen Can <[email protected]>
+ Chen Haiquan <[email protected]>
+ Chip Parker <[email protected]>
+ Chris Burroughs <[email protected]>
+ Chris Dunlap <[email protected]>
+ Chris Dunlop <[email protected]>
+ Chris Siden <[email protected]>
+ Chris Wedgwood <[email protected]>
+ Chris Williamson <[email protected]>
+ Chris Zubrzycki <[email protected]>
+ Christ Schlacta <[email protected]>
+ Christer Ekholm <[email protected]>
+ Christian Kohlschütter <[email protected]>
+ Christian Neukirchen <[email protected]>
+ Christian Schwarz <[email protected]>
+ Christopher Voltz <[email protected]>
+ Chunwei Chen <[email protected]>
+ Clemens Fruhwirth <[email protected]>
+ Colin Ian King <[email protected]>
+ Craig Loomis <[email protected]>
+ Craig Sanders <[email protected]>
+ Cyril Plisko <[email protected]>
+ Damian WojsÅ‚aw <[email protected]>
+ Dan Kimmel <[email protected]>
+ Dan McDonald <[email protected]>
+ Dan Swartzendruber <[email protected]>
+ Dan Vatca <[email protected]>
+ Daniel Hoffman <[email protected]>
+ Daniel Verite <[email protected]>
+ Daniil Lunev <[email protected]>
+ Darik Horn <[email protected]>
+ Dave Eddy <[email protected]>
+ David Lamparter <[email protected]>
+ David Qian <[email protected]>
+ David Quigley <[email protected]>
+ Debabrata Banerjee <[email protected]>
+ Denys Rtveliashvili <[email protected]>
+ Derek Dai <[email protected]>
+ Dimitri John Ledkov <[email protected]>
+ Dmitry Khasanov <[email protected]>
+ Dominik Hassler <[email protected]>
+ Dominik Honnef <[email protected]>
+ Don Brady <[email protected]>
+ Dr. András Korn <[email protected]>
+ Eli Rosenthal <[email protected]>
+ Eric Desrochers <[email protected]>
+ Eric Dillmann <[email protected]>
+ Eric Schrock <[email protected]>
+ Etienne Dechamps <[email protected]>
+ Evan Susarret <[email protected]>
+ Fabian Grünbichler <[email protected]>
+ Fajar A. Nugraha <[email protected]>
+ Fan Yong <[email protected]>
+ Feng Sun <[email protected]>
+ Frederik Wessels <[email protected]>
+ Frédéric Vanniere <[email protected]>
+ Garrett D'Amore <[email protected]>
+ Garrison Jensen <[email protected]>
+ Gary Mills <[email protected]>
+ Gaurav Kumar <[email protected]>
+ GeLiXin <[email protected]>
+ George Amanakis <[email protected]>
+ George Melikov <[email protected]>
+ George Wilson <[email protected]>
+ Georgy Yakovlev <[email protected]>
+ Giuseppe Di Natale <[email protected]>
+ Gordan Bobic <[email protected]>
+ Gordon Ross <[email protected]>
+ Gregor Kopka <[email protected]>
+ Grischa Zengel <[email protected]>
+ Gunnar Beutner <[email protected]>
+ Gvozden Neskovic <[email protected]>
+ Hajo Möller <[email protected]>
+ Hans Rosenfeld <[email protected]>
+ HÃ¥kan Johansson <[email protected]>
+ Igor Kozhukhov <[email protected]>
+ Igor Lvovsky <[email protected]>
+ Isaac Huang <[email protected]>
+ JK Dingwall <[email protected]>
+ Jacek FefliÅ„ski <[email protected]>
+ James Cowgill <[email protected]>
+ James Lee <[email protected]>
+ James Pan <[email protected]>
+ Jan Engelhardt <[email protected]>
+ Jan Kryl <[email protected]>
+ Jan Sanislo <[email protected]>
+ Jason King <[email protected]>
+ Jason Zaman <[email protected]>
+ Javen Wu <[email protected]>
+ Jeremy Gill <[email protected]>
+ Jeremy Jones <[email protected]>
+ Jerry Jelinek <[email protected]>
+ Jinshan Xiong <[email protected]>
+ Joe Stein <[email protected]>
+ John Albietz <[email protected]>
+ John Eismeier <[email protected]>
+ John L. Hammond <[email protected]>
+ John Layman <[email protected]>
+ John Paul Adrian Glaubitz <[email protected]>
+ John Wren Kennedy <[email protected]>
+ Johnny Stenback <[email protected]>
+ Jorgen Lundman <[email protected]>
+ Josef 'Jeff' Sipek <[email protected]>
+ Joshua M. Clulow <[email protected]>
+ Justin BedÅ‘ <[email protected]>
+ Justin Lecher <[email protected]>
+ Justin T. Gibbs <[email protected]>
+ Jörg Thalheim <[email protected]>
+ KORN Andras <[email protected]>
+ Kamil DomaÅ„ski <[email protected]>
+ Karsten Kretschmer <[email protected]>
+ Kash Pande <[email protected]>
+ Keith M Wesolowski <[email protected]>
+ Kevin Tanguy <[email protected]>
+ KireinaHoro <[email protected]>
+ Kohsuke Kawaguchi <[email protected]>
+ Kyle Blatter <[email protected]>
+ Kyle Fuller <[email protected]>
+ Lars Johannsen <[email protected]>
+ Li Dongyang <[email protected]>
+ Lukas Wunner <[email protected]>
+ Madhav Suresh <[email protected]>
+ Manoj Joseph <[email protected]>
+ Manuel Amador (Rudd-O) <[email protected]>
+ Marcel Huber <[email protected]>
+ Marcel Telka <[email protected]>
+ Marcel Wysocki <[email protected]>
+ Mark Shellenbaum <[email protected]>
+ Mark Wright <[email protected]>
+ Martin Matuska <[email protected]>
+ Massimo Maggi <[email protected]>
+ Matt Johnston <[email protected]>
+ Matt Kemp <[email protected]>
+ Matthew Ahrens <[email protected]>
+ Matthew Thode <[email protected]>
+ Matus Kral <[email protected]>
+ Max Grossman <[email protected]>
+ Maximilian Mehnert <[email protected]>
+ Michael Gebetsroither <[email protected]>
+ Michael Kjorling <[email protected]>
+ Michael Martin <[email protected]>
+ Mike Gerdts <[email protected]>
+ Mike Harsch <[email protected]>
+ Mike Leddy <[email protected]>
+ Mike Swanson <[email protected]>
+ Milan Jurik <[email protected]>
+ Morgan Jones <[email protected]>
+ Moritz Maxeiner <[email protected]>
+ Nathaniel Clark <[email protected]>
+ Nathaniel Wesley Filardo <[email protected]>
+ Nav Ravindranath <[email protected]>
+ Neal Gompa (ニール・ゴンパ) <[email protected]>
+ Ned Bass <[email protected]>
+ Neependra Khare <[email protected]>
+ Neil Stockbridge <[email protected]>
+ Nick Garvey <[email protected]>
+ Nikolay Borisov <[email protected]>
+ Olaf Faaland <[email protected]>
+ Oleg Drokin <[email protected]>
+ Oleg Stepura <[email protected]>
+ Patrik Greco <[email protected]>
+ Paul B. Henson <[email protected]>
+ Paul Dagnelie <[email protected]>
+ Paul Zuchowski <[email protected]>
+ Pavel Boldin <[email protected]>
+ Pavel Zakharov <[email protected]>
+ Pawel Jakub Dawidek <[email protected]>
+ Pedro Giffuni <[email protected]>
+ Peter Ashford <[email protected]>
+ Prakash Surya <[email protected]>
+ Prasad Joshi <[email protected]>
+ Ralf Ertzinger <[email protected]>
+ Randall Mason <[email protected]>
+ Remy Blank <[email protected]>
+ Ricardo M. Correia <[email protected]>
+ Rich Ercolani <[email protected]>
+ Richard Elling <[email protected]>
+ Richard Laager <[email protected]>
+ Richard Lowe <[email protected]>
+ Richard Sharpe <[email protected]>
+ Richard Yao <[email protected]>
+ Rohan Puri <[email protected]>
+ Romain Dolbeau <[email protected]>
+ Roman Strashkin <[email protected]>
+ Ruben Kerkhof <[email protected]>
+ Saso Kiselkov <[email protected]>
+ Scot W. Stevenson <[email protected]>
+ Sean Eric Fagan <[email protected]>
+ Sen Haerens <[email protected]>
+ Serapheim Dimitropoulos <[email protected]>
+ Seth Forshee <[email protected]>
+ Shampavman <[email protected]>
+ Shen Yan <[email protected]>
+ Simon Guest <[email protected]>
+ Simon Klinkert <[email protected]>
+ Sowrabha Gopal <[email protected]>
+ Stanislav Seletskiy <[email protected]>
+ Steffen Müthing <[email protected]>
+ Stephen Blinick <[email protected]>
+ Steve Dougherty <[email protected]>
+ Steven Burgess <[email protected]>
+ Steven Hartland <[email protected]>
+ Steven Johnson <[email protected]>
+ Stian Ellingsen <[email protected]>
+ Suman Chakravartula <[email protected]>
+ Sydney Vanda <[email protected]>
+ Sören Tempel <[email protected]>
+ Thijs Cramer <[email protected]>
+ Tim Chase <[email protected]>
+ Tim Connors <[email protected]>
+ Tim Crawford <[email protected]>
+ Tim Haley <[email protected]>
+ Tobin Harding <[email protected]>
+ Tom Caputi <[email protected]>
+ Tom Matthews <[email protected]>
+ Tom Prince <[email protected]>
+ Tomohiro Kusumi <[email protected]>
+ Tony Hutter <[email protected]>
+ Toomas Soome <[email protected]>
+ Trey Dockendorf <[email protected]>
+ Turbo Fredriksson <[email protected]>
+ Tyler J. Stachecki <[email protected]>
+ Vitaut Bajaryn <[email protected]>
+ Weigang Li <[email protected]>
+ Will Andrews <[email protected]>
+ Will Rouesnel <[email protected]>
+ Wolfgang Bumiller <[email protected]>
+ Ying Zhu <[email protected]>
+ YunQiang Su <[email protected]>
+ Yuri Pankov <[email protected]>
+ Yuxuan Shui <[email protected]>
+ Zachary Bedell <[email protected]>
diff --git a/COPYRIGHT b/COPYRIGHT
index 9b94f927f..54fbceade 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -1,39 +1,27 @@
-The majority of the code in the ZFS on Linux port comes from OpenSolaris
-which has been released under the terms of the CDDL open source license.
-This includes the core ZFS code, libavl, libnvpair, libefi, libunicode,
-and libutil. The original OpenSolaris source can be downloaded from:
-
-http://dlc.sun.com/osol/on/downloads/b121/on-src.tar.bz2
-
-Files which do not originate from OpenSolaris are noted in the file header
-and attributed properly. These exceptions include, but are not limited
-to, the vdev_disk.c and zvol.c implementation which are licensed under
-the CDDL.
-
-The latest stable and development versions of this port can be downloaded
-from the official ZFS on Linux site located at:
+Refer to the git commit log for authoritative copyright attribution.
-http://zfsonlinux.org/
+The original ZFS source code was obtained from Open Solaris which was
+released under the terms of the CDDL open source license. Additional
+changes have been included from OpenZFS and the Illumos project which
+are similarly licensed. These projects can be found on Github at:
-This ZFS on Linux port was produced at the Lawrence Livermore National
-Laboratory (LLNL) under Contract No. DE-AC52-07NA27344 (Contract 44)
-between the U.S. Department of Energy (DOE) and Lawrence Livermore
-National Security, LLC (LLNS) for the operation of LLNL. It has been
-approved for release under LLNL-CODE-403049.
+ * https://github.com/illumos/illumos-gate
+ * https://github.com/openzfs/openzfs
Unless otherwise noted, all files in this distribution are released
under the Common Development and Distribution License (CDDL).
-Exceptions are noted within the associated source files. A few notable
-exceptions and their respective licenses include:
-Skein Checksum Implementation: module/icp/algs/skein/THIRDPARTYLICENSE
-AES Implementation: module/icp/asm-x86_64/aes/THIRDPARTYLICENSE.gladman
-AES Implementation: module/icp/asm-x86_64/aes/THIRDPARTYLICENSE.openssl
-PBKDF2 Implementation: lib/libzfs/THIRDPARTYLICENSE.openssl
+Exceptions are noted within the associated source files headers and
+by including a THIRDPARTYLICENSE file with the license terms. A few
+notable exceptions and their respective licenses include:
+
+ * Skein Checksum Implementation: module/icp/algs/skein/THIRDPARTYLICENSE
+ * AES Implementation: module/icp/asm-x86_64/aes/THIRDPARTYLICENSE.gladman
+ * AES Implementation: module/icp/asm-x86_64/aes/THIRDPARTYLICENSE.openssl
+ * PBKDF2 Implementation: lib/libzfs/THIRDPARTYLICENSE.openssl
+ * SPL Implementation: module/spl/THIRDPARTYLICENSE.gplv2
This product includes software developed by the OpenSSL Project for use
in the OpenSSL Toolkit (http://www.openssl.org/)
-See the file OPENSOLARIS.LICENSE for more information.
-
-Refer to the git commit log for authoritative copyright attribution.
+See the LICENSE and NOTICE for more information.
diff --git a/DISCLAIMER b/DISCLAIMER
deleted file mode 100644
index a0af1efe1..000000000
--- a/DISCLAIMER
+++ /dev/null
@@ -1,24 +0,0 @@
-This work was produced at the Lawrence Livermore National Laboratory
-(LLNL) under Contract No. DE-AC52-07NA27344 (Contract 44) between
-the U.S. Department of Energy (DOE) and Lawrence Livermore National
-Security, LLC (LLNS) for the operation of LLNL.
-
-This work was prepared as an account of work sponsored by an agency of
-the United States Government. Neither the United States Government nor
-Lawrence Livermore National Security, LLC nor any of their employees,
-makes any warranty, express or implied, or assumes any liability or
-responsibility for the accuracy, completeness, or usefulness of any
-information, apparatus, product, or process disclosed, or represents
-that its use would not infringe privately-owned rights.
-
-Reference herein to any specific commercial products, process, or
-services by trade name, trademark, manufacturer or otherwise does
-not necessarily constitute or imply its endorsement, recommendation,
-or favoring by the United States Government or Lawrence Livermore
-National Security, LLC. The views and opinions of authors expressed
-herein do not necessarily state or reflect those of the United States
-Government or Lawrence Livermore National Security, LLC, and shall
-not be used for advertising or product endorsement purposes.
-
-The precise terms and conditions for copying, distribution, and
-modification are specified in the file OPENSOLARIS.LICENSE.
diff --git a/OPENSOLARIS.LICENSE b/LICENSE
index da23621dc..da23621dc 100644
--- a/OPENSOLARIS.LICENSE
+++ b/LICENSE
diff --git a/Makefile.am b/Makefile.am
index 20f790328..669231c07 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -11,17 +11,17 @@ endif
if CONFIG_KERNEL
SUBDIRS += module
-extradir = @prefix@/src/zfs-$(VERSION)
+extradir = $(prefix)/src/zfs-$(VERSION)
extra_HEADERS = zfs.release.in zfs_config.h.in
-kerneldir = @prefix@/src/zfs-$(VERSION)/$(LINUX_VERSION)
+kerneldir = $(prefix)/src/zfs-$(VERSION)/$(LINUX_VERSION)
nodist_kernel_HEADERS = zfs.release zfs_config.h module/$(LINUX_SYMBOLS)
endif
AUTOMAKE_OPTIONS = foreign
EXTRA_DIST = autogen.sh copy-builtin
EXTRA_DIST += config/config.awk config/rpm.am config/deb.am config/tgz.am
-EXTRA_DIST += META DISCLAIMER COPYRIGHT README.markdown OPENSOLARIS.LICENSE
+EXTRA_DIST += META AUTHORS COPYRIGHT LICENSE NOTICE README.md
@CODE_COVERAGE_RULES@
@@ -44,6 +44,22 @@ dist-hook:
sed -i 's/Release:[[:print:]]*/Release: $(RELEASE)/' \
$(distdir)/META
+# For compatibility, create a matching spl-x.y.z directly which contains
+# symlinks to the updated header and object file locations. These
+# compatibility links will be removed in the next major release.
+if CONFIG_KERNEL
+install-data-hook:
+ mkdir $(DESTDIR)$(prefix)/src/spl-$(VERSION) && \
+ cd $(DESTDIR)$(prefix)/src/spl-$(VERSION) && \
+ ln -s ../zfs-$(VERSION)/include/spl include && \
+ ln -s ../zfs-$(VERSION)/$(LINUX_VERSION) $(LINUX_VERSION) && \
+ ln -s ../zfs-$(VERSION)/zfs_config.h.in spl_config.h.in && \
+ ln -s ../zfs-$(VERSION)/zfs.release.in spl.release.in && \
+ cd $(DESTDIR)$(prefix)/src/zfs-$(VERSION)/$(LINUX_VERSION) && \
+ ln -s zfs_config.h spl_config.h && \
+ ln -s zfs.release spl.release
+endif
+
checkstyle: cstyle shellcheck flake8 commitcheck mancheck testscheck
commitcheck:
diff --git a/NOTICE b/NOTICE
new file mode 100644
index 000000000..321892039
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,16 @@
+This work was produced under the auspices of the U.S. Department of Energy by
+Lawrence Livermore National Laboratory under Contract DE-AC52-07NA27344.
+
+This work was prepared as an account of work sponsored by an agency of the
+United States Government. Neither the United States Government nor Lawrence
+Livermore National Security, LLC, nor any of their employees makes any warranty,
+expressed or implied, or assumes any legal liability or responsibility for the
+accuracy, completeness, or usefulness of any information, apparatus, product, or
+process disclosed, or represents that its use would not infringe privately owned
+rights. Reference herein to any specific commercial product, process, or service
+by trade name, trademark, manufacturer, or otherwise does not necessarily
+constitute or imply its endorsement, recommendation, or favoring by the United
+States Government or Lawrence Livermore National Security, LLC. The views and
+opinions of authors expressed herein do not necessarily state or reflect those
+of the United States Government or Lawrence Livermore National Security, LLC,
+and shall not be used for advertising or product endorsement purposes.
diff --git a/README.markdown b/README.md
index b650805f1..49b3bfe46 100644
--- a/README.markdown
+++ b/README.md
@@ -7,14 +7,22 @@ developed for Solaris and is now maintained by the OpenZFS community.
[![coverity](https://scan.coverity.com/projects/1973/badge.svg)](https://scan.coverity.com/projects/zfsonlinux-zfs)
# Official Resources
+
* [Site](http://zfsonlinux.org)
* [Wiki](https://github.com/zfsonlinux/zfs/wiki)
* [Mailing lists](https://github.com/zfsonlinux/zfs/wiki/Mailing-Lists)
* [OpenZFS site](http://open-zfs.org/)
# Installation
+
Full documentation for installing ZoL on your favorite Linux distribution can
be found at [our site](http://zfsonlinux.org/).
# Contribute & Develop
+
We have a separate document with [contribution guidelines](./.github/CONTRIBUTING.md).
+
+# Release
+
+ZFS on Linux is released under a CDDL license.
+For more details see the NOTICE, LICENSE and COPYRIGHT files; `UCRL-CODE-235197`
diff --git a/TEST b/TEST
index 4c593a457..ebe6ef963 100644
--- a/TEST
+++ b/TEST
@@ -4,10 +4,6 @@
#TEST_PREPARE_WATCHDOG="yes"
#TEST_PREPARE_SHARES="yes"
-### SPLAT
-#TEST_SPLAT_SKIP="yes"
-#TEST_SPLAT_OPTIONS="-acvx"
-
### ztest
#TEST_ZTEST_SKIP="yes"
#TEST_ZTEST_TIMEOUT=1800
diff --git a/cmd/mount_zfs/mount_zfs.c b/cmd/mount_zfs/mount_zfs.c
index 47f2a9ed9..d0d65fb94 100644
--- a/cmd/mount_zfs/mount_zfs.c
+++ b/cmd/mount_zfs/mount_zfs.c
@@ -34,6 +34,7 @@
#include <locale.h>
#include <getopt.h>
#include <fcntl.h>
+#include <errno.h>
#define ZS_COMMENT 0x00000000 /* comment */
#define ZS_ZFSUTIL 0x00000001 /* caller is zfs(8) */
diff --git a/cmd/zed/agents/zfs_diagnosis.c b/cmd/zed/agents/zfs_diagnosis.c
index bb8db6af5..0b27f6702 100644
--- a/cmd/zed/agents/zfs_diagnosis.c
+++ b/cmd/zed/agents/zfs_diagnosis.c
@@ -26,6 +26,7 @@
*/
#include <stddef.h>
+#include <string.h>
#include <strings.h>
#include <libuutil.h>
#include <libzfs.h>
diff --git a/cmd/zed/agents/zfs_mod.c b/cmd/zed/agents/zfs_mod.c
index 54568e75a..600d6527c 100644
--- a/cmd/zed/agents/zfs_mod.c
+++ b/cmd/zed/agents/zfs_mod.c
@@ -85,6 +85,7 @@
#include <thread_pool.h>
#include <pthread.h>
#include <unistd.h>
+#include <errno.h>
#include "zfs_agents.h"
#include "../zed_log.h"
diff --git a/cmd/zfs/zfs_iter.c b/cmd/zfs/zfs_iter.c
index aeb98ab64..af4e4b4d2 100644
--- a/cmd/zfs/zfs_iter.c
+++ b/cmd/zfs/zfs_iter.c
@@ -31,6 +31,7 @@
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include <strings.h>
#include <libzfs.h>
diff --git a/config/kernel-ctl-table-name.m4 b/config/kernel-ctl-table-name.m4
index 8dd2e77cb..3ce499968 100644
--- a/config/kernel-ctl-table-name.m4
+++ b/config/kernel-ctl-table-name.m4
@@ -2,9 +2,9 @@ dnl #
dnl # 2.6.33 API change,
dnl # Removed .ctl_name from struct ctl_table.
dnl #
-AC_DEFUN([SPL_AC_CTL_NAME], [
+AC_DEFUN([ZFS_AC_KERNEL_CTL_NAME], [
AC_MSG_CHECKING([whether struct ctl_table has ctl_name])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/sysctl.h>
],[
struct ctl_table ctl __attribute__ ((unused));
diff --git a/config/kernel-fallocate-pax.m4 b/config/kernel-fallocate-pax.m4
index ac75a4c8e..e8948be17 100644
--- a/config/kernel-fallocate-pax.m4
+++ b/config/kernel-fallocate-pax.m4
@@ -1,9 +1,9 @@
dnl #
dnl # PaX Linux 2.6.38 - 3.x API
dnl #
-AC_DEFUN([SPL_AC_PAX_KERNEL_FILE_FALLOCATE], [
+AC_DEFUN([ZFS_AC_PAX_KERNEL_FILE_FALLOCATE], [
AC_MSG_CHECKING([whether fops->fallocate() exists])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/fs.h>
],[
long (*fallocate) (struct file *, int, loff_t, loff_t) = NULL;
diff --git a/config/kernel-group-info.m4 b/config/kernel-group-info.m4
index 4db2bba5c..849a1e246 100644
--- a/config/kernel-group-info.m4
+++ b/config/kernel-group-info.m4
@@ -2,11 +2,11 @@ dnl #
dnl # 4.9 API change
dnl # group_info changed from 2d array via >blocks to 1d array via ->gid
dnl #
-AC_DEFUN([SPL_AC_GROUP_INFO_GID], [
+AC_DEFUN([ZFS_AC_KERNEL_GROUP_INFO_GID], [
AC_MSG_CHECKING([whether group_info->gid exists])
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/cred.h>
],[
struct group_info *gi = groups_alloc(1);
diff --git a/config/kernel-inode-lock.m4 b/config/kernel-inode-lock.m4
index 2cc06a5ec..8dee01422 100644
--- a/config/kernel-inode-lock.m4
+++ b/config/kernel-inode-lock.m4
@@ -4,11 +4,11 @@ dnl # i_mutex is changed to i_rwsem. Instead of directly using
dnl # i_mutex/i_rwsem, we should use inode_lock() and inode_lock_shared()
dnl # We test inode_lock_shared because inode_lock is introduced earlier.
dnl #
-AC_DEFUN([SPL_AC_INODE_LOCK], [
+AC_DEFUN([ZFS_AC_KERNEL_INODE_LOCK], [
AC_MSG_CHECKING([whether inode_lock_shared() exists])
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/fs.h>
],[
struct inode *inode = NULL;
diff --git a/config/kernel-kmem-cache.m4 b/config/kernel-kmem-cache.m4
index 50a7fdb4b..21cc53d34 100644
--- a/config/kernel-kmem-cache.m4
+++ b/config/kernel-kmem-cache.m4
@@ -5,9 +5,9 @@ dnl # private allocation flags which are applied when allocating a new slab
dnl # in kmem_getpages(). Unfortunately there is no public API for setting
dnl # non-default flags.
dnl #
-AC_DEFUN([SPL_AC_KMEM_CACHE_ALLOCFLAGS], [
+AC_DEFUN([ZFS_AC_KERNEL_KMEM_CACHE_ALLOCFLAGS], [
AC_MSG_CHECKING([whether struct kmem_cache has allocflags])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/slab.h>
],[
struct kmem_cache cachep __attribute__ ((unused));
@@ -20,7 +20,7 @@ AC_DEFUN([SPL_AC_KMEM_CACHE_ALLOCFLAGS], [
AC_MSG_RESULT(no)
AC_MSG_CHECKING([whether struct kmem_cache has gfpflags])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/slab.h>
],[
struct kmem_cache cachep __attribute__ ((unused));
@@ -40,11 +40,11 @@ dnl # grsecurity API change,
dnl # kmem_cache_create() with SLAB_USERCOPY flag replaced by
dnl # kmem_cache_create_usercopy().
dnl #
-AC_DEFUN([SPL_AC_KMEM_CACHE_CREATE_USERCOPY], [
+AC_DEFUN([ZFS_AC_KERNEL_KMEM_CACHE_CREATE_USERCOPY], [
AC_MSG_CHECKING([whether kmem_cache_create_usercopy() exists])
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/slab.h>
static void ctor(void *foo)
{
diff --git a/config/kernel-kuidgid.m4 b/config/kernel-kuidgid.m4
index 47d193783..82685d263 100644
--- a/config/kernel-kuidgid.m4
+++ b/config/kernel-kuidgid.m4
@@ -3,19 +3,19 @@ dnl # User namespaces, use kuid_t in place of uid_t
dnl # where available. Not strictly a user namespaces thing
dnl # but it should prevent surprises
dnl #
-AC_DEFUN([SPL_AC_KUIDGID_T], [
+AC_DEFUN([ZFS_AC_KERNEL_KUIDGID_T], [
AC_MSG_CHECKING([whether kuid_t/kgid_t is available])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/uidgid.h>
], [
- kuid_t userid = KUIDT_INIT(0);
- kgid_t groupid = KGIDT_INIT(0);
+ kuid_t userid __attribute__ ((unused)) = KUIDT_INIT(0);
+ kgid_t groupid __attribute__ ((unused)) = KGIDT_INIT(0);
],[
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/uidgid.h>
], [
- kuid_t userid = 0;
- kgid_t groupid = 0;
+ kuid_t userid __attribute__ ((unused)) = 0;
+ kgid_t groupid __attribute__ ((unused)) = 0;
],[
AC_MSG_RESULT(yes; optional)
],[
diff --git a/config/kernel-pde-data.m4 b/config/kernel-pde-data.m4
index 6aa5765c3..8aa4c2204 100644
--- a/config/kernel-pde-data.m4
+++ b/config/kernel-pde-data.m4
@@ -2,9 +2,9 @@ dnl #
dnl # 3.10 API change,
dnl # PDE is replaced by PDE_DATA
dnl #
-AC_DEFUN([SPL_AC_PDE_DATA], [
+AC_DEFUN([ZFS_AC_KERNEL_PDE_DATA], [
AC_MSG_CHECKING([whether PDE_DATA() is available])
- SPL_LINUX_TRY_COMPILE_SYMBOL([
+ ZFS_LINUX_TRY_COMPILE_SYMBOL([
#include <linux/proc_fs.h>
], [
PDE_DATA(NULL);
diff --git a/config/kernel-rw.m4 b/config/kernel-rw.m4
index 23c14b70f..1c8a265e0 100644
--- a/config/kernel-rw.m4
+++ b/config/kernel-rw.m4
@@ -3,11 +3,11 @@ dnl # 4.14 API change
dnl # kernel_write() which was introduced in 3.9 was updated to take
dnl # the offset as a pointer which is needed by vn_rdwr().
dnl #
-AC_DEFUN([SPL_AC_KERNEL_WRITE], [
+AC_DEFUN([ZFS_AC_KERNEL_WRITE], [
AC_MSG_CHECKING([whether kernel_write() takes loff_t pointer])
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/fs.h>
],[
struct file *file = NULL;
@@ -32,11 +32,11 @@ dnl # 4.14 API change
dnl # kernel_read() which has existed for forever was updated to take
dnl # the offset as a pointer which is needed by vn_rdwr().
dnl #
-AC_DEFUN([SPL_AC_KERNEL_READ], [
+AC_DEFUN([ZFS_AC_KERNEL_READ], [
AC_MSG_CHECKING([whether kernel_read() takes loff_t pointer])
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/fs.h>
],[
struct file *file = NULL;
diff --git a/config/kernel-rwsem.m4 b/config/kernel-rwsem.m4
index aee20ae90..532c22718 100644
--- a/config/kernel-rwsem.m4
+++ b/config/kernel-rwsem.m4
@@ -4,11 +4,11 @@ dnl #
dnl # The rw_semaphore.wait_lock member was changed from spinlock_t to
dnl # raw_spinlock_t at commit ddb6c9b58a19edcfac93ac670b066c836ff729f1.
dnl #
-AC_DEFUN([SPL_AC_RWSEM_SPINLOCK_IS_RAW], [
+AC_DEFUN([ZFS_AC_KERNEL_RWSEM_SPINLOCK_IS_RAW], [
AC_MSG_CHECKING([whether struct rw_semaphore member wait_lock is raw])
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/rwsem.h>
],[
struct rw_semaphore dummy_semaphore __attribute__ ((unused));
@@ -30,11 +30,11 @@ dnl # 3.16 API Change
dnl #
dnl # rwsem-spinlock "->activity" changed to "->count"
dnl #
-AC_DEFUN([SPL_AC_RWSEM_ACTIVITY], [
+AC_DEFUN([ZFS_AC_KERNEL_RWSEM_ACTIVITY], [
AC_MSG_CHECKING([whether struct rw_semaphore has member activity])
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/rwsem.h>
],[
struct rw_semaphore dummy_semaphore __attribute__ ((unused));
@@ -54,12 +54,12 @@ dnl # 4.8 API Change
dnl #
dnl # rwsem "->count" changed to atomic_long_t type
dnl #
-AC_DEFUN([SPL_AC_RWSEM_ATOMIC_LONG_COUNT], [
+AC_DEFUN([ZFS_AC_KERNEL_RWSEM_ATOMIC_LONG_COUNT], [
AC_MSG_CHECKING(
[whether struct rw_semaphore has atomic_long_t member count])
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/rwsem.h>
],[
DECLARE_RWSEM(dummy_semaphore);
diff --git a/config/kernel-sched.m4 b/config/kernel-sched.m4
index 5ae21676e..640b008aa 100644
--- a/config/kernel-sched.m4
+++ b/config/kernel-sched.m4
@@ -2,9 +2,9 @@ dnl #
dnl # 3.9 API change,
dnl # Moved things from linux/sched.h to linux/sched/rt.h
dnl #
-AC_DEFUN([SPL_AC_SCHED_RT_HEADER],
+AC_DEFUN([ZFS_AC_KERNEL_SCHED_RT_HEADER],
[AC_MSG_CHECKING([whether header linux/sched/rt.h exists])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/sched.h>
#include <linux/sched/rt.h>
],[
@@ -21,9 +21,9 @@ dnl #
dnl # 4.11 API change,
dnl # Moved things from linux/sched.h to linux/sched/signal.h
dnl #
-AC_DEFUN([SPL_AC_SCHED_SIGNAL_HEADER],
+AC_DEFUN([ZFS_AC_KERNEL_SCHED_SIGNAL_HEADER],
[AC_MSG_CHECKING([whether header linux/sched/signal.h exists])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/sched.h>
#include <linux/sched/signal.h>
],[
@@ -41,9 +41,9 @@ dnl # The io_schedule_timeout() function is present in all 2.6.32 kernels
dnl # but it was not exported until Linux 3.19. The RHEL 7.x kernels which
dnl # are based on a 3.10 kernel do export this symbol.
dnl #
-AC_DEFUN([SPL_AC_IO_SCHEDULE_TIMEOUT], [
+AC_DEFUN([ZFS_AC_KERNEL_IO_SCHEDULE_TIMEOUT], [
AC_MSG_CHECKING([whether io_schedule_timeout() is available])
- SPL_LINUX_TRY_COMPILE_SYMBOL([
+ ZFS_LINUX_TRY_COMPILE_SYMBOL([
#include <linux/sched.h>
], [
(void) io_schedule_timeout(1);
diff --git a/config/kernel-set-fs-pwd.m4 b/config/kernel-set-fs-pwd.m4
index 849e7e6cb..d5565b42c 100644
--- a/config/kernel-set-fs-pwd.m4
+++ b/config/kernel-set-fs-pwd.m4
@@ -2,11 +2,11 @@ dnl #
dnl # 3.9 API change
dnl # set_fs_pwd takes const struct path *
dnl #
-AC_DEFUN([SPL_AC_SET_FS_PWD_WITH_CONST],
+AC_DEFUN([ZFS_AC_KERNEL_SET_FS_PWD_WITH_CONST],
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
[AC_MSG_CHECKING([whether set_fs_pwd() requires const struct path *])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/spinlock.h>
#include <linux/fs_struct.h>
#include <linux/path.h>
@@ -20,7 +20,7 @@ AC_DEFUN([SPL_AC_SET_FS_PWD_WITH_CONST],
AC_DEFINE(HAVE_SET_FS_PWD_WITH_CONST, 1,
[set_fs_pwd() needs const path *])
],[
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/spinlock.h>
#include <linux/fs_struct.h>
#include <linux/path.h>
diff --git a/config/kernel-shrink.m4 b/config/kernel-shrink.m4
index a57c2afb0..37da0ec72 100644
--- a/config/kernel-shrink.m4
+++ b/config/kernel-shrink.m4
@@ -131,3 +131,130 @@ AC_DEFUN([ZFS_AC_KERNEL_SHRINK_CONTROL_HAS_NID], [
AC_MSG_RESULT(no)
])
])
+
+
+AC_DEFUN([ZFS_AC_KERNEL_SHRINKER_CALLBACK],[
+ tmp_flags="$EXTRA_KCFLAGS"
+ EXTRA_KCFLAGS="-Werror"
+ dnl #
+ dnl # 2.6.23 to 2.6.34 API change
+ dnl # ->shrink(int nr_to_scan, gfp_t gfp_mask)
+ dnl #
+ AC_MSG_CHECKING([whether old 2-argument shrinker exists])
+ ZFS_LINUX_TRY_COMPILE([
+ #include <linux/mm.h>
+
+ int shrinker_cb(int nr_to_scan, gfp_t gfp_mask);
+ ],[
+ struct shrinker cache_shrinker = {
+ .shrink = shrinker_cb,
+ .seeks = DEFAULT_SEEKS,
+ };
+ register_shrinker(&cache_shrinker);
+ ],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_2ARGS_OLD_SHRINKER_CALLBACK, 1,
+ [old shrinker callback wants 2 args])
+ ],[
+ AC_MSG_RESULT(no)
+ dnl #
+ dnl # 2.6.35 - 2.6.39 API change
+ dnl # ->shrink(struct shrinker *,
+ dnl # int nr_to_scan, gfp_t gfp_mask)
+ dnl #
+ AC_MSG_CHECKING([whether old 3-argument shrinker exists])
+ ZFS_LINUX_TRY_COMPILE([
+ #include <linux/mm.h>
+
+ int shrinker_cb(struct shrinker *, int nr_to_scan,
+ gfp_t gfp_mask);
+ ],[
+ struct shrinker cache_shrinker = {
+ .shrink = shrinker_cb,
+ .seeks = DEFAULT_SEEKS,
+ };
+ register_shrinker(&cache_shrinker);
+ ],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_3ARGS_SHRINKER_CALLBACK, 1,
+ [old shrinker callback wants 3 args])
+ ],[
+ AC_MSG_RESULT(no)
+ dnl #
+ dnl # 3.0 - 3.11 API change
+ dnl # ->shrink(struct shrinker *,
+ dnl # struct shrink_control *sc)
+ dnl #
+ AC_MSG_CHECKING(
+ [whether new 2-argument shrinker exists])
+ ZFS_LINUX_TRY_COMPILE([
+ #include <linux/mm.h>
+
+ int shrinker_cb(struct shrinker *,
+ struct shrink_control *sc);
+ ],[
+ struct shrinker cache_shrinker = {
+ .shrink = shrinker_cb,
+ .seeks = DEFAULT_SEEKS,
+ };
+ register_shrinker(&cache_shrinker);
+ ],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_2ARGS_NEW_SHRINKER_CALLBACK, 1,
+ [new shrinker callback wants 2 args])
+ ],[
+ AC_MSG_RESULT(no)
+ dnl #
+ dnl # 3.12 API change,
+ dnl # ->shrink() is logically split in to
+ dnl # ->count_objects() and ->scan_objects()
+ dnl #
+ AC_MSG_CHECKING(
+ [whether ->count_objects callback exists])
+ ZFS_LINUX_TRY_COMPILE([
+ #include <linux/mm.h>
+
+ unsigned long shrinker_cb(
+ struct shrinker *,
+ struct shrink_control *sc);
+ ],[
+ struct shrinker cache_shrinker = {
+ .count_objects = shrinker_cb,
+ .scan_objects = shrinker_cb,
+ .seeks = DEFAULT_SEEKS,
+ };
+ register_shrinker(&cache_shrinker);
+ ],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_SPLIT_SHRINKER_CALLBACK,
+ 1, [->count_objects exists])
+ ],[
+ AC_MSG_ERROR(error)
+ ])
+ ])
+ ])
+ ])
+ EXTRA_KCFLAGS="$tmp_flags"
+])
+
+dnl #
+dnl # 2.6.39 API change,
+dnl # Shrinker adjust to use common shrink_control structure.
+dnl #
+AC_DEFUN([ZFS_AC_KERNEL_SHRINK_CONTROL_STRUCT], [
+ AC_MSG_CHECKING([whether struct shrink_control exists])
+ ZFS_LINUX_TRY_COMPILE([
+ #include <linux/mm.h>
+ ],[
+ struct shrink_control sc __attribute__ ((unused));
+
+ sc.nr_to_scan = 0;
+ sc.gfp_mask = GFP_KERNEL;
+ ],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_SHRINK_CONTROL_STRUCT, 1,
+ [struct shrink_control exists])
+ ],[
+ AC_MSG_RESULT(no)
+ ])
+])
diff --git a/config/kernel-shrinker.m4 b/config/kernel-shrinker.m4
deleted file mode 100644
index 6fc9b5422..000000000
--- a/config/kernel-shrinker.m4
+++ /dev/null
@@ -1,125 +0,0 @@
-AC_DEFUN([SPL_AC_SHRINKER_CALLBACK],[
- tmp_flags="$EXTRA_KCFLAGS"
- EXTRA_KCFLAGS="-Werror"
- dnl #
- dnl # 2.6.23 to 2.6.34 API change
- dnl # ->shrink(int nr_to_scan, gfp_t gfp_mask)
- dnl #
- AC_MSG_CHECKING([whether old 2-argument shrinker exists])
- SPL_LINUX_TRY_COMPILE([
- #include <linux/mm.h>
-
- int shrinker_cb(int nr_to_scan, gfp_t gfp_mask);
- ],[
- struct shrinker cache_shrinker = {
- .shrink = shrinker_cb,
- .seeks = DEFAULT_SEEKS,
- };
- register_shrinker(&cache_shrinker);
- ],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_2ARGS_OLD_SHRINKER_CALLBACK, 1,
- [old shrinker callback wants 2 args])
- ],[
- AC_MSG_RESULT(no)
- dnl #
- dnl # 2.6.35 - 2.6.39 API change
- dnl # ->shrink(struct shrinker *,
- dnl # int nr_to_scan, gfp_t gfp_mask)
- dnl #
- AC_MSG_CHECKING([whether old 3-argument shrinker exists])
- SPL_LINUX_TRY_COMPILE([
- #include <linux/mm.h>
-
- int shrinker_cb(struct shrinker *, int nr_to_scan,
- gfp_t gfp_mask);
- ],[
- struct shrinker cache_shrinker = {
- .shrink = shrinker_cb,
- .seeks = DEFAULT_SEEKS,
- };
- register_shrinker(&cache_shrinker);
- ],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_3ARGS_SHRINKER_CALLBACK, 1,
- [old shrinker callback wants 3 args])
- ],[
- AC_MSG_RESULT(no)
- dnl #
- dnl # 3.0 - 3.11 API change
- dnl # ->shrink(struct shrinker *,
- dnl # struct shrink_control *sc)
- dnl #
- AC_MSG_CHECKING(
- [whether new 2-argument shrinker exists])
- SPL_LINUX_TRY_COMPILE([
- #include <linux/mm.h>
-
- int shrinker_cb(struct shrinker *,
- struct shrink_control *sc);
- ],[
- struct shrinker cache_shrinker = {
- .shrink = shrinker_cb,
- .seeks = DEFAULT_SEEKS,
- };
- register_shrinker(&cache_shrinker);
- ],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_2ARGS_NEW_SHRINKER_CALLBACK, 1,
- [new shrinker callback wants 2 args])
- ],[
- AC_MSG_RESULT(no)
- dnl #
- dnl # 3.12 API change,
- dnl # ->shrink() is logically split in to
- dnl # ->count_objects() and ->scan_objects()
- dnl #
- AC_MSG_CHECKING(
- [whether ->count_objects callback exists])
- SPL_LINUX_TRY_COMPILE([
- #include <linux/mm.h>
-
- unsigned long shrinker_cb(
- struct shrinker *,
- struct shrink_control *sc);
- ],[
- struct shrinker cache_shrinker = {
- .count_objects = shrinker_cb,
- .scan_objects = shrinker_cb,
- .seeks = DEFAULT_SEEKS,
- };
- register_shrinker(&cache_shrinker);
- ],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_SPLIT_SHRINKER_CALLBACK,
- 1, [->count_objects exists])
- ],[
- AC_MSG_ERROR(error)
- ])
- ])
- ])
- ])
- EXTRA_KCFLAGS="$tmp_flags"
-])
-
-dnl #
-dnl # 2.6.39 API change,
-dnl # Shrinker adjust to use common shrink_control structure.
-dnl #
-AC_DEFUN([SPL_AC_SHRINK_CONTROL_STRUCT], [
- AC_MSG_CHECKING([whether struct shrink_control exists])
- SPL_LINUX_TRY_COMPILE([
- #include <linux/mm.h>
- ],[
- struct shrink_control sc __attribute__ ((unused));
-
- sc.nr_to_scan = 0;
- sc.gfp_mask = GFP_KERNEL;
- ],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_SHRINK_CONTROL_STRUCT, 1,
- [struct shrink_control exists])
- ],[
- AC_MSG_RESULT(no)
- ])
-])
diff --git a/config/kernel-spinlock.m4 b/config/kernel-spinlock.m4
index 136262d0e..d6d664007 100644
--- a/config/kernel-spinlock.m4
+++ b/config/kernel-spinlock.m4
@@ -3,11 +3,11 @@ dnl # 2.6.36 API change,
dnl # The 'struct fs_struct->lock' was changed from a rwlock_t to
dnl # a spinlock_t to improve the fastpath performance.
dnl #
-AC_DEFUN([SPL_AC_FS_STRUCT_SPINLOCK], [
+AC_DEFUN([ZFS_AC_KERNEL_FS_STRUCT_SPINLOCK], [
AC_MSG_CHECKING([whether struct fs_struct uses spinlock_t])
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/sched.h>
#include <linux/fs_struct.h>
],[
diff --git a/config/kernel-timer.m4 b/config/kernel-timer.m4
index 93b5158b9..4dc3f84ed 100644
--- a/config/kernel-timer.m4
+++ b/config/kernel-timer.m4
@@ -6,11 +6,11 @@ dnl # (older kernels). Also sanity check the from_timer() and timer_setup()
dnl # macros are available as well, since they will be used in the same newer
dnl # kernels that support the new timer_list.func signature.
dnl #
-AC_DEFUN([SPL_AC_KERNEL_TIMER_FUNCTION_TIMER_LIST], [
+AC_DEFUN([ZFS_AC_KERNEL_TIMER_FUNCTION_TIMER_LIST], [
AC_MSG_CHECKING([whether timer_list.function gets a timer_list])
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/timer.h>
void task_expire(struct timer_list *tl) {}
],[
diff --git a/config/kernel-trim-unused-symbols.m4 b/config/kernel-trim-unused-symbols.m4
deleted file mode 100644
index d1ac2f3c8..000000000
--- a/config/kernel-trim-unused-symbols.m4
+++ /dev/null
@@ -1,19 +0,0 @@
-dnl #
-dnl # config trim unused symbols,
-dnl # Verify the kernel has CONFIG_TRIM_UNUSED_KSYMS DISABLED.
-dnl #
-AC_DEFUN([SPL_AC_CONFIG_TRIM_UNUSED_KSYMS], [
- AC_MSG_CHECKING([whether CONFIG_TRIM_UNUSED_KSYM is disabled])
- SPL_LINUX_TRY_COMPILE([
- #if defined(CONFIG_TRIM_UNUSED_KSYMS)
- #error CONFIG_TRIM_UNUSED_KSYMS not defined
- #endif
- ],[ ],[
- AC_MSG_RESULT([yes])
- ],[
- AC_MSG_RESULT([no])
- AC_MSG_ERROR([
- *** This kernel has unused symbols trimming enabled, please disable.
- *** Rebuild the kernel with CONFIG_TRIM_UNUSED_KSYMS=n set.])
- ])
-])
diff --git a/config/kernel-urange-sleep.m4 b/config/kernel-urange-sleep.m4
index 85beca6dd..b5764de3e 100644
--- a/config/kernel-urange-sleep.m4
+++ b/config/kernel-urange-sleep.m4
@@ -5,9 +5,9 @@ dnl # usleep_range is a finer precision implementation of msleep
dnl # designed to be a drop-in replacement for udelay where a precise
dnl # sleep / busy-wait is unnecessary.
dnl #
-AC_DEFUN([SPL_AC_USLEEP_RANGE], [
+AC_DEFUN([ZFS_AC_KERNEL_USLEEP_RANGE], [
AC_MSG_CHECKING([whether usleep_range() is available])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/delay.h>
],[
usleep_range(0, 0);
diff --git a/config/kernel-vfs-fsync.m4 b/config/kernel-vfs-fsync.m4
index 3c42bf1a0..a474f9f17 100644
--- a/config/kernel-vfs-fsync.m4
+++ b/config/kernel-vfs-fsync.m4
@@ -2,9 +2,9 @@ dnl #
dnl # 2.6.35 API change,
dnl # Unused 'struct dentry *' removed from vfs_fsync() prototype.
dnl #
-AC_DEFUN([SPL_AC_2ARGS_VFS_FSYNC], [
+AC_DEFUN([ZFS_AC_KERNEL_2ARGS_VFS_FSYNC], [
AC_MSG_CHECKING([whether vfs_fsync() wants 2 args])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/fs.h>
],[
vfs_fsync(NULL, 0);
diff --git a/config/kernel-vfs-getattr.m4 b/config/kernel-vfs-getattr.m4
index 7772cb514..b13723538 100644
--- a/config/kernel-vfs-getattr.m4
+++ b/config/kernel-vfs-getattr.m4
@@ -2,9 +2,9 @@ dnl #
dnl # 4.11 API, a528d35e@torvalds/linux
dnl # vfs_getattr(const struct path *p, struct kstat *s, u32 m, unsigned int f)
dnl #
-AC_DEFUN([SPL_AC_4ARGS_VFS_GETATTR], [
+AC_DEFUN([ZFS_AC_KERNEL_4ARGS_VFS_GETATTR], [
AC_MSG_CHECKING([whether vfs_getattr() wants 4 args])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/fs.h>
],[
vfs_getattr((const struct path *)NULL,
@@ -24,9 +24,9 @@ dnl #
dnl # 3.9 API
dnl # vfs_getattr(struct path *p, struct kstat *s)
dnl #
-AC_DEFUN([SPL_AC_2ARGS_VFS_GETATTR], [
+AC_DEFUN([ZFS_AC_KERNEL_2ARGS_VFS_GETATTR], [
AC_MSG_CHECKING([whether vfs_getattr() wants 2 args])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/fs.h>
],[
vfs_getattr((struct path *) NULL,
@@ -44,9 +44,9 @@ dnl #
dnl # <3.9 API
dnl # vfs_getattr(struct vfsmount *v, struct dentry *d, struct kstat *k)
dnl #
-AC_DEFUN([SPL_AC_3ARGS_VFS_GETATTR], [
+AC_DEFUN([ZFS_AC_KERNEL_3ARGS_VFS_GETATTR], [
AC_MSG_CHECKING([whether vfs_getattr() wants 3 args])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/fs.h>
],[
vfs_getattr((struct vfsmount *)NULL,
diff --git a/config/kernel-wait.m4 b/config/kernel-wait.m4
index 5f718a160..d6442c1df 100644
--- a/config/kernel-wait.m4
+++ b/config/kernel-wait.m4
@@ -8,9 +8,9 @@ dnl # of just two functions: one which uses io_schedule() and one which just
dnl # uses schedule(). This API change was made to consolidate all of those
dnl # redundant wait functions.
dnl #
-AC_DEFUN([SPL_AC_WAIT_ON_BIT], [
+AC_DEFUN([ZFS_AC_KERNEL_WAIT_ON_BIT], [
AC_MSG_CHECKING([whether wait_on_bit() takes an action])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/wait.h>
],[
int (*action)(void *) = NULL;
@@ -26,9 +26,9 @@ dnl #
dnl # 4.13 API change
dnl # Renamed struct wait_queue -> struct wait_queue_entry.
dnl #
-AC_DEFUN([SPL_AC_WAIT_QUEUE_ENTRY_T], [
+AC_DEFUN([ZFS_AC_KERNEL_WAIT_QUEUE_ENTRY_T], [
AC_MSG_CHECKING([whether wait_queue_entry_t exists])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/wait.h>
],[
wait_queue_entry_t *entry __attribute__ ((unused));
@@ -46,9 +46,9 @@ dnl # 4.13 API change
dnl # Renamed wait_queue_head::task_list -> wait_queue_head::head
dnl # Renamed wait_queue_entry::task_list -> wait_queue_entry::entry
dnl #
-AC_DEFUN([SPL_AC_WAIT_QUEUE_HEAD_ENTRY], [
+AC_DEFUN([ZFS_AC_KERNEL_WAIT_QUEUE_HEAD_ENTRY], [
AC_MSG_CHECKING([whether wq_head->head and wq_entry->entry exist])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/wait.h>
#ifdef HAVE_WAIT_QUEUE_ENTRY_T
diff --git a/config/kernel-zlib.m4 b/config/kernel-zlib.m4
index bb236466a..3ca7cf682 100644
--- a/config/kernel-zlib.m4
+++ b/config/kernel-zlib.m4
@@ -2,9 +2,9 @@ dnl #
dnl # zlib inflate compat,
dnl # Verify the kernel has CONFIG_ZLIB_INFLATE support enabled.
dnl #
-AC_DEFUN([SPL_AC_CONFIG_ZLIB_INFLATE], [
+AC_DEFUN([ZFS_AC_KERNEL_CONFIG_ZLIB_INFLATE], [
AC_MSG_CHECKING([whether CONFIG_ZLIB_INFLATE is defined])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#if !defined(CONFIG_ZLIB_INFLATE) && \
!defined(CONFIG_ZLIB_INFLATE_MODULE)
#error CONFIG_ZLIB_INFLATE not defined
@@ -23,9 +23,9 @@ dnl #
dnl # zlib deflate compat,
dnl # Verify the kernel has CONFIG_ZLIB_DEFLATE support enabled.
dnl #
-AC_DEFUN([SPL_AC_CONFIG_ZLIB_DEFLATE], [
+AC_DEFUN([ZFS_AC_KERNEL_CONFIG_ZLIB_DEFLATE], [
AC_MSG_CHECKING([whether CONFIG_ZLIB_DEFLATE is defined])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#if !defined(CONFIG_ZLIB_DEFLATE) && \
!defined(CONFIG_ZLIB_DEFLATE_MODULE)
#error CONFIG_ZLIB_DEFLATE not defined
@@ -47,9 +47,9 @@ dnl # This was done to avoid always having to allocate the maximum size
dnl # workspace (268K). The caller can now specific the windowBits and
dnl # memLevel compression parameters to get a smaller workspace.
dnl #
-AC_DEFUN([SPL_AC_2ARGS_ZLIB_DEFLATE_WORKSPACESIZE],
+AC_DEFUN([ZFS_AC_KERNEL_2ARGS_ZLIB_DEFLATE_WORKSPACESIZE],
[AC_MSG_CHECKING([whether zlib_deflate_workspacesize() wants 2 args])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/zlib.h>
],[
return zlib_deflate_workspacesize(MAX_WBITS, MAX_MEM_LEVEL);
diff --git a/config/kernel.m4 b/config/kernel.m4
index e3daeffa8..8151cdc22 100644
--- a/config/kernel.m4
+++ b/config/kernel.m4
@@ -3,12 +3,39 @@ dnl # Default ZFS kernel configuration
dnl #
AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
ZFS_AC_KERNEL
- ZFS_AC_SPL
ZFS_AC_QAT
ZFS_AC_TEST_MODULE
ZFS_AC_KERNEL_MISC_MINOR
ZFS_AC_KERNEL_OBJTOOL
ZFS_AC_KERNEL_CONFIG
+ ZFS_AC_KERNEL_CTL_NAME
+ ZFS_AC_KERNEL_PDE_DATA
+ ZFS_AC_KERNEL_SET_FS_PWD_WITH_CONST
+ ZFS_AC_KERNEL_2ARGS_VFS_FSYNC
+ ZFS_AC_KERNEL_FS_STRUCT_SPINLOCK
+ ZFS_AC_KERNEL_KUIDGID_T
+ ZFS_AC_KERNEL_FALLOCATE
+ ZFS_AC_KERNEL_2ARGS_ZLIB_DEFLATE_WORKSPACESIZE
+ ZFS_AC_KERNEL_RWSEM_SPINLOCK_IS_RAW
+ ZFS_AC_KERNEL_RWSEM_ACTIVITY
+ ZFS_AC_KERNEL_RWSEM_ATOMIC_LONG_COUNT
+ ZFS_AC_KERNEL_SCHED_RT_HEADER
+ ZFS_AC_KERNEL_SCHED_SIGNAL_HEADER
+ ZFS_AC_KERNEL_IO_SCHEDULE_TIMEOUT
+ ZFS_AC_KERNEL_4ARGS_VFS_GETATTR
+ ZFS_AC_KERNEL_3ARGS_VFS_GETATTR
+ ZFS_AC_KERNEL_2ARGS_VFS_GETATTR
+ ZFS_AC_KERNEL_USLEEP_RANGE
+ ZFS_AC_KERNEL_KMEM_CACHE_ALLOCFLAGS
+ ZFS_AC_KERNEL_KMEM_CACHE_CREATE_USERCOPY
+ ZFS_AC_KERNEL_WAIT_ON_BIT
+ ZFS_AC_KERNEL_WAIT_QUEUE_ENTRY_T
+ ZFS_AC_KERNEL_WAIT_QUEUE_HEAD_ENTRY
+ ZFS_AC_KERNEL_INODE_LOCK
+ ZFS_AC_KERNEL_GROUP_INFO_GID
+ ZFS_AC_KERNEL_WRITE
+ ZFS_AC_KERNEL_READ
+ ZFS_AC_KERNEL_TIMER_FUNCTION_TIMER_LIST
ZFS_AC_KERNEL_DECLARE_EVENT_CLASS
ZFS_AC_KERNEL_CURRENT_BIO_TAIL
ZFS_AC_KERNEL_SUPER_USER_NS
@@ -106,6 +133,8 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
ZFS_AC_KERNEL_FST_MOUNT
ZFS_AC_KERNEL_SHRINK
ZFS_AC_KERNEL_SHRINK_CONTROL_HAS_NID
+ ZFS_AC_KERNEL_SHRINK_CONTROL_STRUCT
+ ZFS_AC_KERNEL_SHRINKER_CALLBACK
ZFS_AC_KERNEL_S_INSTANCES_LIST_HEAD
ZFS_AC_KERNEL_S_D_OP
ZFS_AC_KERNEL_BDI
@@ -275,204 +304,6 @@ AC_DEFUN([ZFS_AC_KERNEL], [
ZFS_AC_MODULE_SYMVERS
])
-
-dnl #
-dnl # Detect the SPL module to be built against
-dnl #
-AC_DEFUN([ZFS_AC_SPL], [
- AC_ARG_WITH([spl],
- AS_HELP_STRING([--with-spl=PATH],
- [Path to spl source]),
- AS_IF([test "$withval" = "yes"],
- AC_MSG_ERROR([--with-spl=PATH requires a PATH]),
- [splsrc="$withval"]))
-
- AC_ARG_WITH([spl-obj],
- AS_HELP_STRING([--with-spl-obj=PATH],
- [Path to spl build objects]),
- [splbuild="$withval"])
-
- AC_ARG_WITH([spl-timeout],
- AS_HELP_STRING([--with-spl-timeout=SECS],
- [Wait SECS for SPL header and symver file @<:@default=0@:>@]),
- [timeout="$withval"], [timeout=0])
-
- dnl #
- dnl # The existence of spl.release.in is used to identify a valid
- dnl # source directory. In order of preference:
- dnl #
- splsrc0="/var/lib/dkms/spl/${VERSION}/build"
- splsrc1="/usr/local/src/spl-${VERSION}/${LINUX_VERSION}"
- splsrc2="/usr/local/src/spl-${VERSION}"
- splsrc3="/usr/src/spl-${VERSION}/${LINUX_VERSION}"
- splsrc4="/usr/src/spl-${VERSION}"
- splsrc5="../spl/"
- splsrc6="$LINUX"
-
- AC_MSG_CHECKING([spl source directory])
- AS_IF([test -z "${splsrc}"], [
- [all_spl_sources="
- ${splsrc0}
- ${splsrc1}
- ${splsrc2}
- ${splsrc3}
- ${splsrc4}
- ${splsrc5}
- ${splsrc6}"],
- AS_IF([ test -e "${splsrc0}/spl.release.in"], [
- splsrc=${splsrc0}
- ], [ test -e "${splsrc1}/spl.release.in"], [
- splsrc=${splsrc1}
- ], [ test -e "${splsrc2}/spl.release.in"], [
- splsrc=${splsrc2}
- ], [ test -e "${splsrc3}/spl.release.in"], [
- splsrc=$(readlink -f "${splsrc3}")
- ], [ test -e "${splsrc4}/spl.release.in" ], [
- splsrc=${splsrc4}
- ], [ test -e "${splsrc5}/spl.release.in"], [
- splsrc=$(readlink -f "${splsrc5}")
- ], [ test -e "${splsrc6}/spl.release.in" ], [
- splsrc=${splsrc6}
- ], [
- splsrc="[Not found]"
- ])
- ], [
- [all_spl_sources="$withval"],
- AS_IF([test "$splsrc" = "NONE"], [
- splbuild=NONE
- splsrcver=NONE
- ])
- ])
-
- AC_MSG_RESULT([$splsrc])
- AS_IF([ test ! -e "$splsrc/spl.release.in"], [
- AC_MSG_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 source with the '--with-spl=PATH' option.
- *** The spl version must match the version of ZFS you are building,
- *** ${VERSION}. Failed to find spl.release.in in the following:
- $all_spl_sources])
- ])
-
- dnl #
- dnl # The existence of the spl_config.h is used to identify a valid
- dnl # spl object directory. In many cases the object and source
- dnl # directory are the same, however the objects may also reside
- dnl # is a subdirectory named after the kernel version.
- dnl #
- dnl # This file is supposed to be available after DKMS finishes
- dnl # building the SPL kernel module for the target kernel. The
- dnl # '--with-spl-timeout' option can be passed to pause here,
- dnl # waiting for the file to appear from a concurrently building
- dnl # SPL package.
- dnl #
- AC_MSG_CHECKING([spl build directory])
-
- all_spl_config_locs="${splsrc}/${LINUX_VERSION}
- ${splsrc}"
-
- while true; do
- AS_IF([test -z "$splbuild"], [
- AS_IF([ test -e "${splsrc}/${LINUX_VERSION}/spl_config.h" ], [
- splbuild="${splsrc}/${LINUX_VERSION}"
- ], [ test -e "${splsrc}/spl_config.h" ], [
- splbuild="${splsrc}"
- ], [ find -L "${splsrc}" -name spl_config.h 2> /dev/null | grep -wq spl_config.h ], [
- splbuild=$(find -L "${splsrc}" -name spl_config.h | sed 's,/spl_config.h,,')
- ], [
- splbuild="[Not found]"
- ])
- ])
- AS_IF([test -e "$splbuild/spl_config.h" -o $timeout -le 0], [
- break;
- ], [
- sleep 1
- timeout=$((timeout-1))
- ])
- done
-
- AC_MSG_RESULT([$splbuild])
- AS_IF([ ! test -e "$splbuild/spl_config.h"], [
- AC_MSG_ERROR([
- *** Please make sure the kmod spl devel <kernel> 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. Failed to find spl_config.h in
- *** any of the following:
- $all_spl_config_locs])
- ])
-
- AC_MSG_CHECKING([spl source version])
- AS_IF([test -r $splbuild/spl_config.h &&
- fgrep -q SPL_META_VERSION $splbuild/spl_config.h], [
-
- splsrcver=`(echo "#include <spl_config.h>";
- echo "splsrcver=SPL_META_VERSION-SPL_META_RELEASE") |
- cpp -I $splbuild |
- grep "^splsrcver=" | tr -d \" | cut -d= -f2`
- ])
-
- AS_IF([test -z "$splsrcver"], [
- AC_MSG_RESULT([Not found])
- AC_MSG_ERROR([
- *** Cannot determine the version of the spl source.
- *** Please prepare the spl source before running this script])
- ])
-
- AC_MSG_RESULT([$splsrcver])
-
- SPL=${splsrc}
- SPL_OBJ=${splbuild}
- SPL_VERSION=${splsrcver}
-
- AC_SUBST(SPL)
- AC_SUBST(SPL_OBJ)
- AC_SUBST(SPL_VERSION)
-
- dnl #
- dnl # Detect the name used for the SPL Module.symvers file. If one
- dnl # does not exist this is likely because the SPL has been configured
- dnl # but not built. The '--with-spl-timeout' option can be passed
- dnl # to pause here, waiting for the file to appear from a concurrently
- dnl # building SPL package. If the file does not appear in time, a good
- dnl # guess is made as to what this file will be named based on what it
- dnl # is named in the kernel build products. This file will first be
- dnl # used at link time so if the guess is wrong the build will fail
- dnl # then. This unfortunately means the ZFS package does not contain a
- dnl # reliable mechanism to detect symbols exported by the SPL at
- dnl # configure time.
- dnl #
- AC_MSG_CHECKING([spl file name for module symbols])
- SPL_SYMBOLS=NONE
-
- while true; do
- AS_IF([test -r $SPL_OBJ/Module.symvers], [
- SPL_SYMBOLS=Module.symvers
- ], [test -r $SPL_OBJ/Modules.symvers], [
- SPL_SYMBOLS=Modules.symvers
- ], [test -r $SPL_OBJ/module/Module.symvers], [
- SPL_SYMBOLS=Module.symvers
- ], [test -r $SPL_OBJ/module/Modules.symvers], [
- SPL_SYMBOLS=Modules.symvers
- ])
-
- AS_IF([test $SPL_SYMBOLS != NONE -o $timeout -le 0], [
- break;
- ], [
- sleep 1
- timeout=$((timeout-1))
- ])
- done
-
- AS_IF([test "$SPL_SYMBOLS" = NONE], [
- SPL_SYMBOLS=$LINUX_SYMBOLS
- ])
-
- AC_MSG_RESULT([$SPL_SYMBOLS])
- AC_SUBST(SPL_SYMBOLS)
-])
-
dnl #
dnl # Detect the QAT module to be built against
dnl # QAT provides hardware acceleration for data compression:
@@ -603,6 +434,9 @@ AC_DEFUN([ZFS_AC_KERNEL_CONFIG], [
ZFS_AC_KERNEL_CONFIG_THREAD_SIZE
ZFS_AC_KERNEL_CONFIG_DEBUG_LOCK_ALLOC
+ ZFS_AC_KERNEL_CONFIG_TRIM_UNUSED_KSYMS
+ ZFS_AC_KERNEL_CONFIG_ZLIB_INFLATE
+ ZFS_AC_KERNEL_CONFIG_ZLIB_DEFLATE
])
dnl #
@@ -673,6 +507,27 @@ AC_DEFUN([ZFS_AC_KERNEL_CONFIG_DEBUG_LOCK_ALLOC], [
])
dnl #
+dnl # Check CONFIG_TRIM_UNUSED_KSYMS
+dnl #
+dnl # Verify the kernel has CONFIG_TRIM_UNUSED_KSYMS disabled.
+dnl #
+AC_DEFUN([ZFS_AC_KERNEL_CONFIG_TRIM_UNUSED_KSYMS], [
+ AC_MSG_CHECKING([whether CONFIG_TRIM_UNUSED_KSYM is disabled])
+ ZFS_LINUX_TRY_COMPILE([
+ #if defined(CONFIG_TRIM_UNUSED_KSYMS)
+ #error CONFIG_TRIM_UNUSED_KSYMS not defined
+ #endif
+ ],[ ],[
+ AC_MSG_RESULT([yes])
+ ],[
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([
+ *** This kernel has unused symbols trimming enabled, please disable.
+ *** Rebuild the kernel with CONFIG_TRIM_UNUSED_KSYMS=n set.])
+ ])
+])
+
+dnl #
dnl # ZFS_LINUX_CONFTEST_H
dnl #
AC_DEFUN([ZFS_LINUX_CONFTEST_H], [
diff --git a/config/zfs-build.m4 b/config/zfs-build.m4
index 49a4096d6..1d47b0384 100644
--- a/config/zfs-build.m4
+++ b/config/zfs-build.m4
@@ -95,6 +95,63 @@ AC_DEFUN([ZFS_AC_DEBUGINFO], [
AC_MSG_RESULT([$enable_debuginfo])
])
+dnl #
+dnl # Disabled by default, provides basic memory tracking. Track the total
+dnl # number of bytes allocated with kmem_alloc() and freed with kmem_free().
+dnl # Then at module unload time if any bytes were leaked it will be reported
+dnl # on the console.
+dnl #
+AC_DEFUN([ZFS_AC_DEBUG_KMEM], [
+ AC_MSG_CHECKING([whether basic kmem accounting is enabled])
+ AC_ARG_ENABLE([debug-kmem],
+ [AS_HELP_STRING([--enable-debug-kmem],
+ [Enable basic kmem accounting @<:@default=no@:>@])],
+ [],
+ [enable_debug_kmem=no])
+
+ AS_IF([test "x$enable_debug_kmem" = xyes], [
+ KERNEL_DEBUG_CPPFLAGS+=" -DDEBUG_KMEM"
+ DEBUG_KMEM_ZFS="_with_debug_kmem"
+ ], [
+ DEBUG_KMEM_ZFS="_without_debug_kmem"
+ ])
+
+ AC_SUBST(KERNEL_DEBUG_CPPFLAGS)
+ AC_SUBST(DEBUG_KMEM_ZFS)
+
+ AC_MSG_RESULT([$enable_debug_kmem])
+])
+
+dnl #
+dnl # Disabled by default, provides detailed memory tracking. This feature
+dnl # also requires --enable-debug-kmem to be set. When enabled not only will
+dnl # total bytes be tracked but also the location of every kmem_alloc() and
+dnl # kmem_free(). When the module is unloaded a list of all leaked addresses
+dnl # and where they were allocated will be dumped to the console. Enabling
+dnl # this feature has a significant impact on performance but it makes finding
+dnl # memory leaks straight forward.
+dnl #
+AC_DEFUN([ZFS_AC_DEBUG_KMEM_TRACKING], [
+ AC_MSG_CHECKING([whether detailed kmem tracking is enabled])
+ AC_ARG_ENABLE([debug-kmem-tracking],
+ [AS_HELP_STRING([--enable-debug-kmem-tracking],
+ [Enable detailed kmem tracking @<:@default=no@:>@])],
+ [],
+ [enable_debug_kmem_tracking=no])
+
+ AS_IF([test "x$enable_debug_kmem_tracking" = xyes], [
+ KERNEL_DEBUG_CPPFLAGS+=" -DDEBUG_KMEM_TRACKING"
+ DEBUG_KMEM_TRACKING_ZFS="_with_debug_kmem_tracking"
+ ], [
+ DEBUG_KMEM_TRACKING_ZFS="_without_debug_kmem_tracking"
+ ])
+
+ AC_SUBST(KERNEL_DEBUG_CPPFLAGS)
+ AC_SUBST(DEBUG_KMEM_TRACKING_ZFS)
+
+ AC_MSG_RESULT([$enable_debug_kmem_tracking])
+])
+
AC_DEFUN([ZFS_AC_CONFIG_ALWAYS], [
ZFS_AC_CONFIG_ALWAYS_CC_NO_UNUSED_BUT_SET_VARIABLE
ZFS_AC_CONFIG_ALWAYS_CC_NO_BOOL_COMPARE
@@ -183,10 +240,11 @@ AC_DEFUN([ZFS_AC_RPM], [
])
RPM_DEFINE_COMMON='--define "$(DEBUG_ZFS) 1"'
+ RPM_DEFINE_COMMON+=' --define "$(DEBUG_KMEM_ZFS) 1"'
+ RPM_DEFINE_COMMON+=' --define "$(DEBUG_KMEM_TRACKING_ZFS) 1"'
RPM_DEFINE_COMMON+=' --define "$(DEBUGINFO_ZFS) 1"'
RPM_DEFINE_COMMON+=' --define "$(ASAN_ZFS) 1"'
-
RPM_DEFINE_UTIL=' --define "_initconfdir $(DEFAULT_INITCONF_DIR)"'
dnl # Make the next three RPM_DEFINE_UTIL additions conditional, since
@@ -221,8 +279,6 @@ AC_DEFUN([ZFS_AC_RPM], [
])
RPM_DEFINE_KMOD='--define "kernels $(LINUX_VERSION)"'
- RPM_DEFINE_KMOD+=' --define "require_spldir $(SPL)"'
- RPM_DEFINE_KMOD+=' --define "require_splobj $(SPL_OBJ)"'
RPM_DEFINE_KMOD+=' --define "ksrc $(LINUX)"'
RPM_DEFINE_KMOD+=' --define "kobj $(LINUX_OBJ)"'
RPM_DEFINE_KMOD+=' --define "_wrong_version_format_terminate_build 0"'
diff --git a/config/zfs-meta.m4 b/config/zfs-meta.m4
index 3e1429d99..aa0fc1420 100644
--- a/config/zfs-meta.m4
+++ b/config/zfs-meta.m4
@@ -60,9 +60,12 @@ AC_DEFUN([ZFS_AC_META], [
ZFS_META_VERSION=_ZFS_AC_META_GETVAL([Version]);
if test -n "$ZFS_META_VERSION"; then
- AC_DEFINE_UNQUOTED([ZFS_META_VERSION], ["$ZFS_META_VERSION"],
- [Define the project version.]
- )
+ AC_DEFINE_UNQUOTED([ZFS_META_VERSION],
+ ["$ZFS_META_VERSION"],
+ [Define the project version.])
+ AC_DEFINE_UNQUOTED([SPL_META_VERSION],
+ [ZFS_META_VERSION],
+ [Defined for legacy compatibility.])
AC_SUBST([ZFS_META_VERSION])
fi
@@ -86,9 +89,12 @@ AC_DEFUN([ZFS_AC_META], [
fi
if test -n "$ZFS_META_RELEASE"; then
- AC_DEFINE_UNQUOTED([ZFS_META_RELEASE], ["$ZFS_META_RELEASE"],
- [Define the project release.]
- )
+ AC_DEFINE_UNQUOTED([ZFS_META_RELEASE],
+ ["$ZFS_META_RELEASE"],
+ [Define the project release.])
+ AC_DEFINE_UNQUOTED([SPL_META_RELEASE],
+ [ZFS_META_RELEASE],
+ [Defined for legacy compatibility.])
AC_SUBST([ZFS_META_RELEASE])
RELEASE="$ZFS_META_RELEASE"
@@ -108,9 +114,11 @@ AC_DEFUN([ZFS_AC_META], [
test -n "$ZFS_META_RELEASE" &&
ZFS_META_ALIAS="$ZFS_META_ALIAS-$ZFS_META_RELEASE"
AC_DEFINE_UNQUOTED([ZFS_META_ALIAS],
- ["$ZFS_META_ALIAS"],
- [Define the project alias string.]
- )
+ ["$ZFS_META_ALIAS"],
+ [Define the project alias string.])
+ AC_DEFINE_UNQUOTED([SPL_META_ALIAS],
+ [ZFS_META_ALIAS],
+ [Defined for legacy compatibility.])
AC_SUBST([ZFS_META_ALIAS])
fi
diff --git a/configure.ac b/configure.ac
index a57724c13..e171e785f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -57,6 +57,8 @@ ZFS_AC_PACKAGE
ZFS_AC_CONFIG
ZFS_AC_DEBUG
ZFS_AC_DEBUGINFO
+ZFS_AC_DEBUG_KMEM
+ZFS_AC_DEBUG_KMEM_TRACKING
AC_CONFIG_FILES([
Makefile
@@ -135,8 +137,12 @@ AC_CONFIG_FILES([
module/zfs/Makefile
module/lua/Makefile
module/icp/Makefile
+ module/spl/Makefile
include/Makefile
include/linux/Makefile
+ include/spl/Makefile
+ include/spl/rpc/Makefile
+ include/spl/sys/Makefile
include/sys/Makefile
include/sys/fs/Makefile
include/sys/fm/Makefile
diff --git a/copy-builtin b/copy-builtin
index 795025b38..02c0926c3 100755
--- a/copy-builtin
+++ b/copy-builtin
@@ -32,7 +32,7 @@ make clean || true
rm -rf "$KERNEL_DIR/include/zfs" "$KERNEL_DIR/fs/zfs"
cp --recursive include "$KERNEL_DIR/include/zfs"
cp --recursive module "$KERNEL_DIR/fs/zfs"
-cp zfs_config.h "$KERNEL_DIR/"
+cp zfs_config.h "$KERNEL_DIR/include/zfs/"
for MODULE in "${MODULES[@]}"
do
@@ -43,7 +43,6 @@ done
cat > "$KERNEL_DIR/fs/zfs/Kconfig" <<"EOF"
config ZFS
tristate "ZFS filesystem support"
- depends on SPL
depends on EFI_PARTITION
select ZLIB_INFLATE
select ZLIB_DEFLATE
@@ -60,11 +59,10 @@ EOF
{
cat <<-"EOF"
ZFS_MODULE_CFLAGS = -I$(srctree)/include/zfs
- ZFS_MODULE_CFLAGS += -I$(srctree)/include/spl
- ZFS_MODULE_CFLAGS += -include $(srctree)/spl_config.h
- ZFS_MODULE_CFLAGS += -include $(srctree)/zfs_config.h
+ ZFS_MODULE_CFLAGS += -I$(srctree)/include/zfs/spl
+ ZFS_MODULE_CFLAGS += -include $(srctree)/include/zfs/zfs_config.h
ZFS_MODULE_CFLAGS += -std=gnu99 -Wno-declaration-after-statement
- ZFS_MODULE_CPPFLAGS = -DHAVE_SPL -D_KERNEL
+ ZFS_MODULE_CPPFLAGS = -D_KERNEL
ZFS_MODULE_CPPFLAGS += -UDEBUG -DNDEBUG
export ZFS_MODULE_CFLAGS ZFS_MODULE_CPPFLAGS
diff --git a/include/Makefile.am b/include/Makefile.am
index 23e15dac4..5f13505f2 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = linux sys
+SUBDIRS = linux spl sys
COMMON_H = \
$(top_srcdir)/include/zfeature_common.h \
diff --git a/include/linux/Makefile.am b/include/linux/Makefile.am
index 89c2689f6..efb49520e 100644
--- a/include/linux/Makefile.am
+++ b/include/linux/Makefile.am
@@ -10,7 +10,8 @@ KERNEL_H = \
$(top_srcdir)/include/linux/simd_x86.h \
$(top_srcdir)/include/linux/simd_aarch64.h \
$(top_srcdir)/include/linux/mod_compat.h \
- $(top_srcdir)/include/linux/page_compat.h
+ $(top_srcdir)/include/linux/page_compat.h \
+ $(top_srcdir)/include/linux/compiler_compat.h
USER_H =
diff --git a/include/linux/blkdev_compat.h b/include/linux/blkdev_compat.h
index f99980ab3..c42cdd37a 100644
--- a/include/linux/blkdev_compat.h
+++ b/include/linux/blkdev_compat.h
@@ -32,6 +32,7 @@
#include <linux/blkdev.h>
#include <linux/elevator.h>
#include <linux/backing-dev.h>
+#include <linux/hdreg.h>
#ifndef HAVE_FMODE_T
typedef unsigned __bitwise__ fmode_t;
diff --git a/lib/libspl/include/attr.h b/include/linux/compiler_compat.h
index da1671a75..921d32f24 100644
--- a/lib/libspl/include/attr.h
+++ b/include/linux/compiler_compat.h
@@ -19,7 +19,17 @@
* CDDL HEADER END
*/
-#ifndef _LIBSPL_ATTR_H
-#define _LIBSPL_ATTR_H
+/*
+ * Copyright (C) 2018 Lawrence Livermore National Security, LLC.
+ */
+
+#ifndef _ZFS_COMPILER_COMPAT_H
+#define _ZFS_COMPILER_COMPAT_H
+
+#include <linux/compiler.h>
+
+#if !defined(READ_ONCE)
+#define READ_ONCE(x) ACCESS_ONCE(x)
+#endif
-#endif /* _LIBSPL_ATTR_H */
+#endif /* _ZFS_COMPILER_COMPAT_H */
diff --git a/include/spl/Makefile.am b/include/spl/Makefile.am
new file mode 100644
index 000000000..bd781c08f
--- /dev/null
+++ b/include/spl/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS = rpc sys
diff --git a/include/spl/rpc/Makefile.am b/include/spl/rpc/Makefile.am
new file mode 100644
index 000000000..5110cc0f0
--- /dev/null
+++ b/include/spl/rpc/Makefile.am
@@ -0,0 +1,7 @@
+KERNEL_H = \
+ $(top_srcdir)/include/spl/rpc/xdr.h
+
+if CONFIG_KERNEL
+kerneldir = @prefix@/src/zfs-$(VERSION)/include/spl/rpc
+kernel_HEADERS = $(KERNEL_H)
+endif
diff --git a/include/spl/sys/Makefile.am b/include/spl/sys/Makefile.am
new file mode 100644
index 000000000..d58ed0e20
--- /dev/null
+++ b/include/spl/sys/Makefile.am
@@ -0,0 +1,61 @@
+KERNEL_H = \
+ $(top_srcdir)/include/spl/sys/acl.h \
+ $(top_srcdir)/include/spl/sys/atomic.h \
+ $(top_srcdir)/include/spl/sys/byteorder.h \
+ $(top_srcdir)/include/spl/sys/callb.h \
+ $(top_srcdir)/include/spl/sys/callo.h \
+ $(top_srcdir)/include/spl/sys/cmn_err.h \
+ $(top_srcdir)/include/spl/sys/condvar.h \
+ $(top_srcdir)/include/spl/sys/console.h \
+ $(top_srcdir)/include/spl/sys/cred.h \
+ $(top_srcdir)/include/spl/sys/ctype.h \
+ $(top_srcdir)/include/spl/sys/debug.h \
+ $(top_srcdir)/include/spl/sys/disp.h \
+ $(top_srcdir)/include/spl/sys/dkioc_free_util.h \
+ $(top_srcdir)/include/spl/sys/dkio.h \
+ $(top_srcdir)/include/spl/sys/errno.h \
+ $(top_srcdir)/include/spl/sys/fcntl.h \
+ $(top_srcdir)/include/spl/sys/file.h \
+ $(top_srcdir)/include/spl/sys/inttypes.h \
+ $(top_srcdir)/include/spl/sys/isa_defs.h \
+ $(top_srcdir)/include/spl/sys/kmem_cache.h \
+ $(top_srcdir)/include/spl/sys/kmem.h \
+ $(top_srcdir)/include/spl/sys/kobj.h \
+ $(top_srcdir)/include/spl/sys/kstat.h \
+ $(top_srcdir)/include/spl/sys/list.h \
+ $(top_srcdir)/include/spl/sys/mode.h \
+ $(top_srcdir)/include/spl/sys/mutex.h \
+ $(top_srcdir)/include/spl/sys/param.h \
+ $(top_srcdir)/include/spl/sys/processor.h \
+ $(top_srcdir)/include/spl/sys/proc.h \
+ $(top_srcdir)/include/spl/sys/random.h \
+ $(top_srcdir)/include/spl/sys/rwlock.h \
+ $(top_srcdir)/include/spl/sys/shrinker.h \
+ $(top_srcdir)/include/spl/sys/sid.h \
+ $(top_srcdir)/include/spl/sys/signal.h \
+ $(top_srcdir)/include/spl/sys/stat.h \
+ $(top_srcdir)/include/spl/sys/strings.h \
+ $(top_srcdir)/include/spl/sys/sunddi.h \
+ $(top_srcdir)/include/spl/sys/sysmacros.h \
+ $(top_srcdir)/include/spl/sys/systeminfo.h \
+ $(top_srcdir)/include/spl/sys/taskq.h \
+ $(top_srcdir)/include/spl/sys/thread.h \
+ $(top_srcdir)/include/spl/sys/time.h \
+ $(top_srcdir)/include/spl/sys/timer.h \
+ $(top_srcdir)/include/spl/sys/tsd.h \
+ $(top_srcdir)/include/spl/sys/types32.h \
+ $(top_srcdir)/include/spl/sys/types.h \
+ $(top_srcdir)/include/spl/sys/uio.h \
+ $(top_srcdir)/include/spl/sys/user.h \
+ $(top_srcdir)/include/spl/sys/vfs.h \
+ $(top_srcdir)/include/spl/sys/vmem.h \
+ $(top_srcdir)/include/spl/sys/vmsystm.h \
+ $(top_srcdir)/include/spl/sys/vnode.h \
+ $(top_srcdir)/include/spl/sys/wait.h \
+ $(top_srcdir)/include/spl/sys/zmod.h \
+ $(top_srcdir)/include/spl/sys/zone.h
+
+if CONFIG_KERNEL
+kerneldir = @prefix@/src/zfs-$(VERSION)/include/spl/sys
+kernel_HEADERS = $(KERNEL_H)
+endif
diff --git a/include/spl/sys/debug.h b/include/spl/sys/debug.h
index a4a458066..692d6c61e 100644
--- a/include/spl/sys/debug.h
+++ b/include/spl/sys/debug.h
@@ -92,7 +92,6 @@ void spl_dumpstack(void);
*/
#ifdef NDEBUG
-#define SPL_DEBUG_STR ""
#define ASSERT(x) ((void)0)
#define ASSERTV(x)
#define ASSERT3B(x,y,z) ((void)0)
@@ -108,7 +107,6 @@ void spl_dumpstack(void);
*/
#else
-#define SPL_DEBUG_STR " (DEBUG mode)"
#define ASSERT(cond) VERIFY(cond)
#define ASSERTV(x) x
#define ASSERT3B(x,y,z) VERIFY3B(x, y, z)
diff --git a/lib/libspl/include/sys/compress.h b/include/spl/sys/errno.h
index 282f178ba..6015b1a3e 100644
--- a/lib/libspl/include/sys/compress.h
+++ b/include/spl/sys/errno.h
@@ -20,11 +20,28 @@
* CDDL HEADER END
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2000 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
-#ifndef _LIBSPL_SYS_COMPRESS_H
-#define _LIBSPL_SYS_COMPRESS_H
+/* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */
+/* All Rights Reserved */
-#endif /* _LIBSPL_SYS_COMPRESS_H */
+/*
+ * University Copyright- Copyright (c) 1982, 1986, 1988
+ * The Regents of the University of California
+ * All Rights Reserved
+ *
+ * University Acknowledgment- Portions of this document are derived from
+ * software developed by the University of California, Berkeley, and its
+ * contributors.
+ */
+
+#ifndef _SYS_ERRNO_H
+#define _SYS_ERRNO_H
+
+#include <linux/errno.h>
+
+#define ENOTSUP EOPNOTSUPP
+
+#endif /* _SYS_ERRNO_H */
diff --git a/include/spl/sys/mutex.h b/include/spl/sys/mutex.h
index f906d49d4..ed0cd4932 100644
--- a/include/spl/sys/mutex.h
+++ b/include/spl/sys/mutex.h
@@ -28,6 +28,7 @@
#include <sys/types.h>
#include <linux/mutex.h>
#include <linux/lockdep.h>
+#include <linux/compiler_compat.h>
typedef enum {
MUTEX_DEFAULT = 0,
@@ -59,7 +60,7 @@ spl_mutex_clear_owner(kmutex_t *mp)
mp->m_owner = NULL;
}
-#define mutex_owner(mp) (ACCESS_ONCE((mp)->m_owner))
+#define mutex_owner(mp) (READ_ONCE((mp)->m_owner))
#define mutex_owned(mp) (mutex_owner(mp) == current)
#define MUTEX_HELD(mp) mutex_owned(mp)
#define MUTEX_NOT_HELD(mp) (!MUTEX_HELD(mp))
diff --git a/include/spl/sys/rwlock.h b/include/spl/sys/rwlock.h
index b44ceab66..088e28b44 100644
--- a/include/spl/sys/rwlock.h
+++ b/include/spl/sys/rwlock.h
@@ -27,6 +27,7 @@
#include <sys/types.h>
#include <linux/rwsem.h>
+#include <linux/sched.h>
/* Linux kernel compatibility */
#if defined(CONFIG_PREEMPT_RT_FULL)
diff --git a/include/spl/sys/sysmacros.h b/include/spl/sys/sysmacros.h
index 839e7fd8c..e4bd80aa1 100644
--- a/include/spl/sys/sysmacros.h
+++ b/include/spl/sys/sysmacros.h
@@ -79,7 +79,6 @@
#define max_ncpus num_possible_cpus()
#define boot_ncpus num_online_cpus()
#define CPU_SEQID smp_processor_id()
-#define _NOTE(x)
#define is_system_labeled() 0
#ifndef RLIM64_INFINITY
diff --git a/include/spl/sys/types.h b/include/spl/sys/types.h
index a5b478127..3bb3ed3e2 100644
--- a/include/spl/sys/types.h
+++ b/include/spl/sys/types.h
@@ -28,11 +28,11 @@
#include <linux/types.h>
#ifndef ULLONG_MAX
-#define ULLONG_MAX (~0ULL)
+#define ULLONG_MAX (~0ULL)
#endif
#ifndef LLONG_MAX
-#define LLONG_MAX ((long long)(~0ULL>>1))
+#define LLONG_MAX ((long long)(~0ULL>>1))
#endif
typedef enum {
diff --git a/include/spl/sys/vnode.h b/include/spl/sys/vnode.h
index a3f7828e7..d3b903f13 100644
--- a/include/spl/sys/vnode.h
+++ b/include/spl/sys/vnode.h
@@ -86,7 +86,7 @@
#define AT_MTIME ATTR_MTIME
#define AT_CTIME ATTR_CTIME
-#define ATTR_XVATTR (1 << 31)
+#define ATTR_XVATTR (1U << 31)
#define AT_XVATTR ATTR_XVATTR
#define ATTR_IATTR_MASK (ATTR_MODE | ATTR_UID | ATTR_GID | ATTR_SIZE | \
@@ -120,7 +120,7 @@ typedef enum vtype {
typedef struct vattr {
enum vtype va_type; /* vnode type */
- uint_t va_mask; /* attribute bit-mask */
+ uint32_t va_mask; /* attribute bit-mask */
ushort_t va_mode; /* acc mode */
uid_t va_uid; /* owner uid */
gid_t va_gid; /* owner gid */
diff --git a/include/sys/Makefile.am b/include/sys/Makefile.am
index e73be52f3..06306b876 100644
--- a/include/sys/Makefile.am
+++ b/include/sys/Makefile.am
@@ -42,6 +42,7 @@ COMMON_H = \
$(top_srcdir)/include/sys/mmp.h \
$(top_srcdir)/include/sys/mntent.h \
$(top_srcdir)/include/sys/multilist.h \
+ $(top_srcdir)/include/sys/note.h \
$(top_srcdir)/include/sys/nvpair.h \
$(top_srcdir)/include/sys/nvpair_impl.h \
$(top_srcdir)/include/sys/pathname.h \
diff --git a/include/sys/abd.h b/include/sys/abd.h
index cd7105013..077bb9d17 100644
--- a/include/sys/abd.h
+++ b/include/sys/abd.h
@@ -27,7 +27,6 @@
#define _ABD_H
#include <sys/isa_defs.h>
-#include <sys/int_types.h>
#include <sys/debug.h>
#include <sys/refcount.h>
#ifdef _KERNEL
@@ -116,7 +115,7 @@ int abd_cmp(abd_t *, abd_t *);
int abd_cmp_buf_off(abd_t *, const void *, size_t, size_t);
void abd_zero_off(abd_t *, size_t, size_t);
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
unsigned int abd_scatter_bio_map_off(struct bio *, abd_t *, unsigned int,
size_t);
unsigned long abd_nr_pages_off(abd_t *, unsigned int, size_t);
diff --git a/include/sys/fm/protocol.h b/include/sys/fm/protocol.h
index 74aef3a92..78031f7c1 100644
--- a/include/sys/fm/protocol.h
+++ b/include/sys/fm/protocol.h
@@ -31,7 +31,6 @@ extern "C" {
#endif
#ifdef _KERNEL
-#include <sys/varargs.h>
#include <sys/nvpair.h>
#else
#include <libnvpair.h>
diff --git a/lib/libspl/include/sys/note.h b/include/sys/note.h
index 6625b68d9..33b547668 100644
--- a/lib/libspl/include/sys/note.h
+++ b/include/sys/note.h
@@ -47,6 +47,8 @@ extern "C" {
#define _NOTE(s)
#endif
+#define NOTE(s) _NOTE(s)
+
#ifdef __cplusplus
}
#endif
diff --git a/include/sys/nvpair.h b/include/sys/nvpair.h
index d2dfad5ca..a840c4b05 100644
--- a/include/sys/nvpair.h
+++ b/include/sys/nvpair.h
@@ -29,11 +29,6 @@
#include <sys/types.h>
#include <sys/time.h>
#include <sys/errno.h>
-#include <sys/va_list.h>
-
-#if defined(_KERNEL) && !defined(_BOOT)
-#include <sys/kmem.h>
-#endif
#ifdef __cplusplus
extern "C" {
@@ -142,7 +137,7 @@ struct nv_alloc_ops {
extern const nv_alloc_ops_t *nv_fixed_ops;
extern nv_alloc_t *nv_alloc_nosleep;
-#if defined(_KERNEL) && !defined(_BOOT)
+#if defined(_KERNEL)
extern nv_alloc_t *nv_alloc_sleep;
extern nv_alloc_t *nv_alloc_pushpage;
#endif
diff --git a/include/sys/xvattr.h b/include/sys/xvattr.h
index 1c919454d..68610c496 100644
--- a/include/sys/xvattr.h
+++ b/include/sys/xvattr.h
@@ -40,6 +40,7 @@
#define _SYS_XVATTR_H
#include <sys/vnode.h>
+#include <sys/strings.h>
#define AV_SCANSTAMP_SZ 32 /* length of anti-virus scanstamp */
diff --git a/include/sys/zfs_context.h b/include/sys/zfs_context.h
index 37bdc533c..170a909b4 100644
--- a/include/sys/zfs_context.h
+++ b/include/sys/zfs_context.h
@@ -32,31 +32,25 @@
#include <sys/note.h>
#include <sys/types.h>
-#include <sys/t_lock.h>
#include <sys/atomic.h>
#include <sys/sysmacros.h>
-#include <sys/bitmap.h>
+#include <sys/vmsystm.h>
+#include <sys/condvar.h>
#include <sys/cmn_err.h>
#include <sys/kmem.h>
#include <sys/kmem_cache.h>
#include <sys/vmem.h>
#include <sys/taskq.h>
-#include <sys/buf.h>
#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/cpuvar.h>
#include <sys/kobj.h>
-#include <sys/conf.h>
#include <sys/disp.h>
#include <sys/debug.h>
#include <sys/random.h>
+#include <sys/strings.h>
#include <sys/byteorder.h>
-#include <sys/systm.h>
#include <sys/list.h>
#include <sys/uio_impl.h>
-#include <sys/dirent.h>
#include <sys/time.h>
-#include <vm/seg_kmem.h>
#include <sys/zone.h>
#include <sys/sdt.h>
#include <sys/kstat.h>
@@ -76,8 +70,6 @@
#define _SYS_MUTEX_H
#define _SYS_RWLOCK_H
#define _SYS_CONDVAR_H
-#define _SYS_SYSTM_H
-#define _SYS_T_LOCK_H
#define _SYS_VNODE_H
#define _SYS_VFS_H
#define _SYS_SUNDDI_H
diff --git a/include/sys/zfs_delay.h b/include/sys/zfs_delay.h
index b56a7daa7..40e617dba 100644
--- a/include/sys/zfs_delay.h
+++ b/include/sys/zfs_delay.h
@@ -22,7 +22,7 @@
#ifndef _SYS_FS_ZFS_DELAY_H
#define _SYS_FS_ZFS_DELAY_H
-#include <linux/delay_compat.h>
+#include <sys/timer.h>
/*
* Generic wrapper to sleep until a given time.
diff --git a/include/sys/zfs_fuid.h b/include/sys/zfs_fuid.h
index 0feb3ce4b..5c56f7fcc 100644
--- a/include/sys/zfs_fuid.h
+++ b/include/sys/zfs_fuid.h
@@ -27,7 +27,6 @@
#define _SYS_FS_ZFS_FUID_H
#ifdef _KERNEL
-#include <sys/kidmap.h>
#include <sys/sid.h>
#include <sys/dmu.h>
#include <sys/zfs_vfsops.h>
diff --git a/include/sys/zfs_znode.h b/include/sys/zfs_znode.h
index 311babe59..3f2bd1fbb 100644
--- a/include/sys/zfs_znode.h
+++ b/include/sys/zfs_znode.h
@@ -30,7 +30,6 @@
#ifdef _KERNEL
#include <sys/isa_defs.h>
#include <sys/types32.h>
-#include <sys/attr.h>
#include <sys/list.h>
#include <sys/dmu.h>
#include <sys/sa.h>
diff --git a/include/sys/zpl.h b/include/sys/zpl.h
index 65ed43136..5df7bd1ac 100644
--- a/include/sys/zpl.h
+++ b/include/sys/zpl.h
@@ -31,7 +31,6 @@
#include <linux/dcache_compat.h>
#include <linux/exportfs.h>
#include <linux/falloc.h>
-#include <linux/file_compat.h>
#include <linux/parser.h>
#include <linux/task_io_accounting_ops.h>
#include <linux/vfs_compat.h>
diff --git a/lib/libefi/rdwr_efi.c b/lib/libefi/rdwr_efi.c
index e8a5ddd31..455fe527d 100644
--- a/lib/libefi/rdwr_efi.c
+++ b/lib/libefi/rdwr_efi.c
@@ -27,6 +27,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
+#include <string.h>
#include <strings.h>
#include <unistd.h>
#include <uuid/uuid.h>
diff --git a/lib/libnvpair/libnvpair.c b/lib/libnvpair/libnvpair.c
index 0cf38c950..2e9ea1c17 100644
--- a/lib/libnvpair/libnvpair.c
+++ b/lib/libnvpair/libnvpair.c
@@ -28,8 +28,8 @@
#include <libintl.h>
#include <sys/types.h>
#include <sys/inttypes.h>
+#include <sys/note.h>
#include <stdarg.h>
-#include <note.h>
#include "libnvpair.h"
/*
diff --git a/lib/libshare/nfs.c b/lib/libshare/nfs.c
index 0cfd42c1a..5c8976e15 100644
--- a/lib/libshare/nfs.c
+++ b/lib/libshare/nfs.c
@@ -26,8 +26,10 @@
*/
#include <stdio.h>
+#include <string.h>
#include <strings.h>
#include <fcntl.h>
+#include <errno.h>
#include <sys/wait.h>
#include <unistd.h>
#include <libzfs.h>
diff --git a/lib/libshare/smb.c b/lib/libshare/smb.c
index 76145bd93..ffae5699c 100644
--- a/lib/libshare/smb.c
+++ b/lib/libshare/smb.c
@@ -48,6 +48,7 @@
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
+#include <string.h>
#include <strings.h>
#include <fcntl.h>
#include <sys/wait.h>
diff --git a/lib/libspl/include/Makefile.am b/lib/libspl/include/Makefile.am
index 7882c1b9c..7f4098a16 100644
--- a/lib/libspl/include/Makefile.am
+++ b/lib/libspl/include/Makefile.am
@@ -4,19 +4,16 @@ libspldir = $(includedir)/libspl
libspl_HEADERS = \
$(top_srcdir)/lib/libspl/include/assert.h \
$(top_srcdir)/lib/libspl/include/atomic.h \
- $(top_srcdir)/lib/libspl/include/attr.h \
$(top_srcdir)/lib/libspl/include/devid.h \
$(top_srcdir)/lib/libspl/include/libdevinfo.h \
$(top_srcdir)/lib/libspl/include/libgen.h \
$(top_srcdir)/lib/libspl/include/libshare.h \
$(top_srcdir)/lib/libspl/include/limits.h \
$(top_srcdir)/lib/libspl/include/locale.h \
- $(top_srcdir)/lib/libspl/include/note.h \
$(top_srcdir)/lib/libspl/include/statcommon.h \
$(top_srcdir)/lib/libspl/include/stdio.h \
$(top_srcdir)/lib/libspl/include/stdlib.h \
$(top_srcdir)/lib/libspl/include/string.h \
- $(top_srcdir)/lib/libspl/include/strings.h \
$(top_srcdir)/lib/libspl/include/stropts.h \
$(top_srcdir)/lib/libspl/include/synch.h \
$(top_srcdir)/lib/libspl/include/thread.h \
diff --git a/lib/libspl/include/note.h b/lib/libspl/include/note.h
deleted file mode 100644
index cb6b33e1d..000000000
--- a/lib/libspl/include/note.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License"). You may not use this file except in compliance
- * with the License.
- *
- * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-/*
- * Copyright (c) 1994 by Sun Microsystems, Inc.
- */
-
-/*
- * note.h: interface for annotating source with info for tools
- *
- * NOTE is the default interface, but if the identifier NOTE is in use for
- * some other purpose, you may prepare a similar header file using your own
- * identifier, mapping that identifier to _NOTE. Also, exported header
- * files should *not* use NOTE, since the name may already be in use in
- * a program's namespace. Rather, exported header files should include
- * sys/note.h directly and use _NOTE. For consistency, all kernel source
- * should use _NOTE.
- */
-
-#ifndef _NOTE_H
-#define _NOTE_H
-
-#include <sys/note.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define NOTE _NOTE
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _NOTE_H */
diff --git a/lib/libspl/include/sys/Makefile.am b/lib/libspl/include/sys/Makefile.am
index 9c67e14b0..e7af317e0 100644
--- a/lib/libspl/include/sys/Makefile.am
+++ b/lib/libspl/include/sys/Makefile.am
@@ -8,7 +8,6 @@ libspl_HEADERS = \
$(top_srcdir)/lib/libspl/include/sys/byteorder.h \
$(top_srcdir)/lib/libspl/include/sys/callb.h \
$(top_srcdir)/lib/libspl/include/sys/cmn_err.h \
- $(top_srcdir)/lib/libspl/include/sys/compress.h \
$(top_srcdir)/lib/libspl/include/sys/cred.h \
$(top_srcdir)/lib/libspl/include/sys/debug.h \
$(top_srcdir)/lib/libspl/include/sys/dkio.h \
@@ -28,7 +27,6 @@ libspl_HEADERS = \
$(top_srcdir)/lib/libspl/include/sys/mkdev.h \
$(top_srcdir)/lib/libspl/include/sys/mnttab.h \
$(top_srcdir)/lib/libspl/include/sys/mount.h \
- $(top_srcdir)/lib/libspl/include/sys/note.h \
$(top_srcdir)/lib/libspl/include/sys/param.h \
$(top_srcdir)/lib/libspl/include/sys/policy.h \
$(top_srcdir)/lib/libspl/include/sys/poll.h \
@@ -37,11 +35,12 @@ libspl_HEADERS = \
$(top_srcdir)/lib/libspl/include/sys/signal.h \
$(top_srcdir)/lib/libspl/include/sys/stack.h \
$(top_srcdir)/lib/libspl/include/sys/stat.h \
+ $(top_srcdir)/lib/libspl/include/sys/stdtypes.h \
+ $(top_srcdir)/lib/libspl/include/sys/strings.h \
$(top_srcdir)/lib/libspl/include/sys/stropts.h \
$(top_srcdir)/lib/libspl/include/sys/sunddi.h \
$(top_srcdir)/lib/libspl/include/sys/sysmacros.h \
$(top_srcdir)/lib/libspl/include/sys/systeminfo.h \
- $(top_srcdir)/lib/libspl/include/sys/systm.h \
$(top_srcdir)/lib/libspl/include/sys/time.h \
$(top_srcdir)/lib/libspl/include/sys/types32.h \
$(top_srcdir)/lib/libspl/include/sys/types.h \
diff --git a/lib/libspl/include/sys/systm.h b/lib/libspl/include/sys/stdtypes.h
index 1ed031d4e..c26e2dc96 100644
--- a/lib/libspl/include/sys/systm.h
+++ b/lib/libspl/include/sys/stdtypes.h
@@ -19,12 +19,36 @@
*
* CDDL HEADER END
*/
-/*
- * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
- */
-#ifndef _LIBSPL_SYS_SYSTM_H
-#define _LIBSPL_SYS_SYSTM_H
+#ifndef __SYS_STDTYPES_H
+#define __SYS_STDTYPES_H
+
+typedef enum {
+ B_FALSE = 0,
+ B_TRUE = 1
+} boolean_t;
+
+typedef unsigned char uchar_t;
+typedef unsigned short ushort_t;
+typedef unsigned int uint_t;
+typedef unsigned long ulong_t;
+typedef unsigned long long u_longlong_t;
+typedef long long longlong_t;
+
+typedef longlong_t offset_t;
+typedef u_longlong_t u_offset_t;
+typedef u_longlong_t len_t;
+typedef longlong_t diskaddr_t;
+
+typedef ulong_t pgcnt_t; /* number of pages */
+typedef long spgcnt_t; /* signed number of pages */
+
+typedef short pri_t;
+typedef ushort_t o_mode_t; /* old file attribute type */
+
+typedef int major_t;
+typedef int minor_t;
+
+typedef short index_t;
-#endif /* _LIBSPL_SYS_SYSTM_H */
+#endif /* __SYS_STDTYPES_H */
diff --git a/lib/libspl/include/strings.h b/lib/libspl/include/sys/strings.h
index 3f35af4a4..c142047dc 100644
--- a/lib/libspl/include/strings.h
+++ b/lib/libspl/include/sys/strings.h
@@ -24,10 +24,10 @@
* Use is subject to license terms.
*/
-#ifndef _LIBSPL_STRINGS_H
-#define _LIBSPL_STRINGS_H
+#ifndef _LIBSPL_SYS_STRINGS_H
+#define _LIBSPL_SYS_STRINGS_H
#include <string.h>
-#include_next <strings.h>
+#include <strings.h>
#endif
diff --git a/lib/libspl/include/sys/sysmacros.h b/lib/libspl/include/sys/sysmacros.h
index 31f347c6f..22fcb04b9 100644
--- a/lib/libspl/include/sys/sysmacros.h
+++ b/lib/libspl/include/sys/sysmacros.h
@@ -98,4 +98,6 @@
#define offsetof(s, m) ((size_t)(&(((s *)0)->m)))
#endif
+#define _NOTE(x)
+
#endif /* _LIBSPL_SYS_SYSMACROS_H */
diff --git a/lib/libspl/include/sys/types.h b/lib/libspl/include/sys/types.h
index 7fb53730f..ea02ffac9 100644
--- a/lib/libspl/include/sys/types.h
+++ b/lib/libspl/include/sys/types.h
@@ -38,40 +38,15 @@
#include_next <sys/types.h>
#include <sys/types32.h>
#include <sys/va_list.h>
+#include <sys/stdtypes.h>
#ifndef HAVE_INTTYPES
#include <inttypes.h>
-
-typedef enum boolean { B_FALSE, B_TRUE } boolean_t;
-
-typedef unsigned char uchar_t;
-typedef unsigned short ushort_t;
-typedef unsigned int uint_t;
-typedef unsigned long ulong_t;
-
-typedef long long longlong_t;
-typedef unsigned long long u_longlong_t;
#endif /* HAVE_INTTYPES */
-typedef longlong_t offset_t;
-typedef u_longlong_t u_offset_t;
-typedef u_longlong_t len_t;
-typedef longlong_t diskaddr_t;
-
-typedef ulong_t pgcnt_t; /* number of pages */
-typedef long spgcnt_t; /* signed number of pages */
-
-typedef short pri_t;
-
typedef int zoneid_t;
typedef int projid_t;
-typedef int major_t;
-typedef int minor_t;
-
-typedef ushort_t o_mode_t; /* old file attribute type */
-typedef short index_t;
-
/*
* Definitions remaining from previous partial support for 64-bit file
* offsets. This partial support for devices greater than 2gb requires
diff --git a/lib/libspl/include/sys/types32.h b/lib/libspl/include/sys/types32.h
index 9ab3b0782..bb41aa34b 100644
--- a/lib/libspl/include/sys/types32.h
+++ b/lib/libspl/include/sys/types32.h
@@ -26,8 +26,6 @@
#ifndef _SYS_TYPES32_H
#define _SYS_TYPES32_H
-
-
#include <sys/inttypes.h>
#ifdef __cplusplus
diff --git a/lib/libspl/include/umem.h b/lib/libspl/include/umem.h
index 5b10ac801..59dc93144 100644
--- a/lib/libspl/include/umem.h
+++ b/lib/libspl/include/umem.h
@@ -39,6 +39,7 @@
#include <stdlib.h>
#include <stdio.h>
+#include <string.h>
#ifdef __cplusplus
extern "C" {
diff --git a/lib/libuutil/uu_dprintf.c b/lib/libuutil/uu_dprintf.c
index d51fa81e8..6958057b2 100644
--- a/lib/libuutil/uu_dprintf.c
+++ b/lib/libuutil/uu_dprintf.c
@@ -33,6 +33,7 @@
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include <strings.h>
#define FACILITY_FMT "%s (%s): "
diff --git a/lib/libzfs/libzfs_diff.c b/lib/libzfs/libzfs_diff.c
index 249334acd..fb7a1fcf4 100644
--- a/lib/libzfs/libzfs_diff.c
+++ b/lib/libzfs/libzfs_diff.c
@@ -37,7 +37,6 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
-#include <attr.h>
#include <stddef.h>
#include <unistd.h>
#include <stdio.h>
@@ -49,7 +48,7 @@
#include "libzfs_impl.h"
#define ZDIFF_SNAPDIR "/.zfs/snapshot/"
-#define ZDIFF_SHARESDIR "/.zfs/shares/"
+#define ZDIFF_SHARESDIR "/.zfs/shares/"
#define ZDIFF_PREFIX "zfs-diff-%d"
#define ZDIFF_ADDED '+'
diff --git a/man/man1/zhack.1 b/man/man1/zhack.1
index 96910119c..11d300b70 100644
--- a/man/man1/zhack.1
+++ b/man/man1/zhack.1
@@ -93,7 +93,6 @@ descriptions_obj:
.SH AUTHORS
This man page was written by Darik Horn <[email protected]>.
.SH SEE ALSO
-.BR splat (1),
.BR zfs (8),
.BR zpool-features (5),
.BR ztest (1)
diff --git a/man/man5/Makefile.am b/man/man5/Makefile.am
index 4746914c5..1c0683ee3 100644
--- a/man/man5/Makefile.am
+++ b/man/man5/Makefile.am
@@ -1,4 +1,9 @@
-dist_man_MANS = vdev_id.conf.5 zpool-features.5 zfs-module-parameters.5 zfs-events.5
+dist_man_MANS = \
+ vdev_id.conf.5 \
+ zpool-features.5 \
+ spl-module-parameters.5 \
+ zfs-module-parameters.5 \
+ zfs-events.5
install-data-local:
$(INSTALL) -d -m 0755 "$(DESTDIR)$(mandir)/man5"
diff --git a/module/Makefile.in b/module/Makefile.in
index 4cd6988bb..82d155dd3 100644
--- a/module/Makefile.in
+++ b/module/Makefile.in
@@ -2,6 +2,7 @@ subdir-m += avl
subdir-m += icp
subdir-m += lua
subdir-m += nvpair
+subdir-m += spl
subdir-m += unicode
subdir-m += zcommon
subdir-m += zfs
@@ -10,11 +11,11 @@ INSTALL_MOD_DIR ?= extra
ZFS_MODULE_CFLAGS += -std=gnu99 -Wno-declaration-after-statement
ZFS_MODULE_CFLAGS += @KERNEL_DEBUG_CFLAGS@
-ZFS_MODULE_CFLAGS += -include @SPL_OBJ@/spl_config.h
ZFS_MODULE_CFLAGS += -include @abs_top_builddir@/zfs_config.h
-ZFS_MODULE_CFLAGS += -I@abs_top_srcdir@/include -I@SPL@/include -I@SPL@
+ZFS_MODULE_CFLAGS += -I@abs_top_srcdir@/include/spl
+ZFS_MODULE_CFLAGS += -I@abs_top_srcdir@/include
-ZFS_MODULE_CPPFLAGS += -DHAVE_SPL -D_KERNEL
+ZFS_MODULE_CPPFLAGS += -D_KERNEL
ZFS_MODULE_CPPFLAGS += @KERNEL_DEBUG_CPPFLAGS@
@CONFIG_QAT_TRUE@ZFS_MODULE_CFLAGS += -I@QAT_SRC@/include
@@ -25,21 +26,6 @@ export ZFS_MODULE_CFLAGS ZFS_MODULE_CPPFLAGS
SUBDIR_TARGETS = icp lua
modules:
- @# Make the exported SPL symbols available to these modules.
- @# They may be in the root of SPL_OBJ when building against
- @# installed devel headers, or they may be in the module
- @# subdirectory when building against the spl source tree.
- @if [ -f @SPL_OBJ@/@SPL_SYMBOLS@ ]; then \
- cp @SPL_OBJ@/@SPL_SYMBOLS@ .; \
- elif [ -f @SPL_OBJ@/module/@SPL_SYMBOLS@ ]; then \
- cp @SPL_OBJ@/module/@SPL_SYMBOLS@ .; \
- else \
- echo -e "\n" \
- "*** Missing spl symbols ensure you have built the spl:\n" \
- "*** - @SPL_OBJ@/@SPL_SYMBOLS@, or\n" \
- "*** - @SPL_OBJ@/module/@SPL_SYMBOLS@\n"; \
- exit 1; \
- fi
list='$(SUBDIR_TARGETS)'; for targetdir in $$list; do \
$(MAKE) -C $$targetdir; \
done
@@ -50,7 +36,6 @@ clean:
@# is defined. This indicates that kernel modules should be built.
@CONFIG_KERNEL_TRUE@ $(MAKE) -C @LINUX_OBJ@ SUBDIRS=`pwd` @KERNEL_MAKE@ $@
- if [ -f @SPL_SYMBOLS@ ]; then $(RM) @SPL_SYMBOLS@; fi
if [ -f @LINUX_SYMBOLS@ ]; then $(RM) @LINUX_SYMBOLS@; fi
if [ -f Module.markers ]; then $(RM) Module.markers; fi
diff --git a/module/avl/avl.c b/module/avl/avl.c
index f024cdf61..736dcee84 100644
--- a/module/avl/avl.c
+++ b/module/avl/avl.c
@@ -992,7 +992,9 @@ done:
return (AVL_NODE2DATA(node, off));
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
+#include <linux/module.h>
+
static int __init
avl_init(void)
{
diff --git a/module/icp/algs/edonr/edonr.c b/module/icp/algs/edonr/edonr.c
index 8ae989890..7c677095f 100644
--- a/module/icp/algs/edonr/edonr.c
+++ b/module/icp/algs/edonr/edonr.c
@@ -29,12 +29,7 @@
* Portions copyright (c) 2013, Saso Kiselkov, All rights reserved
*/
-/* determine where we can get bcopy/bzero declarations */
-#ifdef _KERNEL
-#include <sys/systm.h>
-#else
-#include <strings.h>
-#endif
+#include <sys/strings.h>
#include <sys/edonr.h>
#include <sys/debug.h>
diff --git a/module/icp/algs/edonr/edonr_byteorder.h b/module/icp/algs/edonr/edonr_byteorder.h
index d17e8f1fd..532dfd743 100644
--- a/module/icp/algs/edonr/edonr_byteorder.h
+++ b/module/icp/algs/edonr/edonr_byteorder.h
@@ -34,7 +34,7 @@
#ifndef _CRYPTO_EDONR_BYTEORDER_H
#define _CRYPTO_EDONR_BYTEORDER_H
-
+#include <sys/sysmacros.h>
#include <sys/param.h>
#if defined(__BYTE_ORDER)
diff --git a/module/icp/algs/skein/skein.c b/module/icp/algs/skein/skein.c
index 0981eee08..0187f7be6 100644
--- a/module/icp/algs/skein/skein.c
+++ b/module/icp/algs/skein/skein.c
@@ -7,8 +7,8 @@
#define SKEIN_PORT_CODE /* instantiate any code in skein_port.h */
+#include <sys/sysmacros.h>
#include <sys/types.h>
-#include <sys/note.h>
#include <sys/skein.h> /* get the Skein API definitions */
#include "skein_impl.h" /* get internal definitions */
diff --git a/module/icp/algs/skein/skein_impl.h b/module/icp/algs/skein/skein_impl.h
index e83a06971..ea834e619 100644
--- a/module/icp/algs/skein/skein_impl.h
+++ b/module/icp/algs/skein/skein_impl.h
@@ -25,16 +25,11 @@
#define _SKEIN_IMPL_H_
#include <sys/skein.h>
+#include <sys/strings.h>
+#include <sys/note.h>
#include "skein_impl.h"
#include "skein_port.h"
-/* determine where we can get bcopy/bzero declarations */
-#ifdef _KERNEL
-#include <sys/systm.h>
-#else
-#include <strings.h>
-#endif
-
/*
* "Internal" Skein definitions
* -- not needed for sequential hashing API, but will be
diff --git a/module/icp/algs/skein/skein_port.h b/module/icp/algs/skein/skein_port.h
index 1b0225236..4fe268bb5 100644
--- a/module/icp/algs/skein/skein_port.h
+++ b/module/icp/algs/skein/skein_port.h
@@ -16,7 +16,6 @@
#define _SKEIN_PORT_H_
#include <sys/types.h> /* get integer type definitions */
-#include <sys/systm.h> /* for bcopy() */
#ifndef RotL_64
#define RotL_64(x, N) (((x) << (N)) | ((x) >> (64 - (N))))
diff --git a/module/icp/api/kcf_cipher.c b/module/icp/api/kcf_cipher.c
index 2585b7fed..1c9f6873e 100644
--- a/module/icp/api/kcf_cipher.c
+++ b/module/icp/api/kcf_cipher.c
@@ -915,7 +915,7 @@ crypto_decrypt_single(crypto_context_t context, crypto_data_t *ciphertext,
return (error);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(crypto_cipher_init_prov);
EXPORT_SYMBOL(crypto_cipher_init);
EXPORT_SYMBOL(crypto_encrypt_prov);
diff --git a/module/icp/api/kcf_ctxops.c b/module/icp/api/kcf_ctxops.c
index 3f90674b0..b9b9cb74e 100644
--- a/module/icp/api/kcf_ctxops.c
+++ b/module/icp/api/kcf_ctxops.c
@@ -145,7 +145,7 @@ crypto_destroy_ctx_template(crypto_ctx_template_t tmpl)
kmem_free(ctx_tmpl, sizeof (kcf_ctx_template_t));
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(crypto_create_ctx_template);
EXPORT_SYMBOL(crypto_destroy_ctx_template);
#endif
diff --git a/module/icp/api/kcf_digest.c b/module/icp/api/kcf_digest.c
index b58d3b452..87090fd52 100644
--- a/module/icp/api/kcf_digest.c
+++ b/module/icp/api/kcf_digest.c
@@ -482,7 +482,7 @@ crypto_digest_single(crypto_context_t context, crypto_data_t *data,
return (error);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(crypto_digest_prov);
EXPORT_SYMBOL(crypto_digest);
EXPORT_SYMBOL(crypto_digest_init_prov);
diff --git a/module/icp/api/kcf_mac.c b/module/icp/api/kcf_mac.c
index 2b4691c03..21ab94fa5 100644
--- a/module/icp/api/kcf_mac.c
+++ b/module/icp/api/kcf_mac.c
@@ -635,7 +635,7 @@ crypto_mac_single(crypto_context_t context, crypto_data_t *data,
return (error);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(crypto_mac_prov);
EXPORT_SYMBOL(crypto_mac);
EXPORT_SYMBOL(crypto_mac_verify_prov);
diff --git a/module/icp/api/kcf_miscapi.c b/module/icp/api/kcf_miscapi.c
index 09d50f7be..c0f415b26 100644
--- a/module/icp/api/kcf_miscapi.c
+++ b/module/icp/api/kcf_miscapi.c
@@ -122,6 +122,6 @@ kcf_walk_ntfylist(uint32_t event, void *event_arg)
mutex_exit(&ntfy_list_lock);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(crypto_mech2id);
#endif
diff --git a/module/icp/illumos-crypto.c b/module/icp/illumos-crypto.c
index a3986a2e5..c2fcf1ff7 100644
--- a/module/icp/illumos-crypto.c
+++ b/module/icp/illumos-crypto.c
@@ -149,7 +149,7 @@ icp_init(void)
return (0);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
module_exit(icp_fini);
module_init(icp_init);
MODULE_AUTHOR(ZFS_META_AUTHOR);
diff --git a/module/icp/io/edonr_mod.c b/module/icp/io/edonr_mod.c
index cb748a954..544814a98 100644
--- a/module/icp/io/edonr_mod.c
+++ b/module/icp/io/edonr_mod.c
@@ -27,7 +27,6 @@
#include <sys/crypto/common.h>
#include <sys/crypto/spi.h>
#include <sys/sysmacros.h>
-#include <sys/systm.h>
#include <sys/edonr.h>
/*
diff --git a/module/icp/io/skein_mod.c b/module/icp/io/skein_mod.c
index 90e8a6a02..88215fe89 100644
--- a/module/icp/io/skein_mod.c
+++ b/module/icp/io/skein_mod.c
@@ -27,7 +27,6 @@
#include <sys/crypto/common.h>
#include <sys/crypto/spi.h>
#include <sys/sysmacros.h>
-#include <sys/systm.h>
#define SKEIN_MODULE_IMPL
#include <sys/skein.h>
diff --git a/module/lua/lapi.c b/module/lua/lapi.c
index 54c74d38e..81969673b 100644
--- a/module/lua/lapi.c
+++ b/module/lua/lapi.c
@@ -1279,7 +1279,7 @@ LUA_API void lua_upvaluejoin (lua_State *L, int fidx1, int n1,
luaC_objbarrier(L, f1, *up2);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
static int __init
lua_init(void)
diff --git a/module/lua/lauxlib.c b/module/lua/lauxlib.c
index 85ed00c64..1e0356e7c 100644
--- a/module/lua/lauxlib.c
+++ b/module/lua/lauxlib.c
@@ -788,7 +788,7 @@ LUALIB_API void luaL_checkversion_ (lua_State *L, lua_Number ver) {
lua_pop(L, 1);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(luaL_argerror);
EXPORT_SYMBOL(luaL_error);
diff --git a/module/lua/lbaselib.c b/module/lua/lbaselib.c
index 004a1939d..854649a0f 100644
--- a/module/lua/lbaselib.c
+++ b/module/lua/lbaselib.c
@@ -288,7 +288,7 @@ LUAMOD_API int luaopen_base (lua_State *L) {
return 1;
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(luaopen_base);
diff --git a/module/lua/lcorolib.c b/module/lua/lcorolib.c
index af8bea695..0300e7ee1 100644
--- a/module/lua/lcorolib.c
+++ b/module/lua/lcorolib.c
@@ -151,7 +151,7 @@ LUAMOD_API int luaopen_coroutine (lua_State *L) {
return 1;
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(luaopen_coroutine);
diff --git a/module/lua/lstrlib.c b/module/lua/lstrlib.c
index 24a3321bd..49ba70faf 100644
--- a/module/lua/lstrlib.c
+++ b/module/lua/lstrlib.c
@@ -1032,7 +1032,7 @@ LUAMOD_API int luaopen_string (lua_State *L) {
return 1;
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(luaopen_string);
diff --git a/module/lua/ltablib.c b/module/lua/ltablib.c
index d01b5ba07..be5b6375e 100644
--- a/module/lua/ltablib.c
+++ b/module/lua/ltablib.c
@@ -281,7 +281,7 @@ LUAMOD_API int luaopen_table (lua_State *L) {
return 1;
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(luaopen_table);
diff --git a/module/nvpair/fnvpair.c b/module/nvpair/fnvpair.c
index a91b9524d..ce151d692 100644
--- a/module/nvpair/fnvpair.c
+++ b/module/nvpair/fnvpair.c
@@ -508,7 +508,7 @@ fnvpair_value_nvlist(nvpair_t *nvp)
return (rv);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(fnvlist_alloc);
EXPORT_SYMBOL(fnvlist_free);
diff --git a/module/nvpair/nvpair.c b/module/nvpair/nvpair.c
index 512f9a998..97ab7de40 100644
--- a/module/nvpair/nvpair.c
+++ b/module/nvpair/nvpair.c
@@ -24,25 +24,20 @@
* Copyright (c) 2015, 2017 by Delphix. All rights reserved.
*/
-#include <sys/stropts.h>
#include <sys/debug.h>
#include <sys/isa_defs.h>
-#include <sys/int_limits.h>
#include <sys/nvpair.h>
#include <sys/nvpair_impl.h>
-#include <rpc/types.h>
+#include <sys/types.h>
+#include <sys/strings.h>
#include <rpc/xdr.h>
-#if defined(_KERNEL) && !defined(_BOOT)
-#include <sys/varargs.h>
-#include <sys/ddi.h>
+#if defined(_KERNEL)
#include <sys/sunddi.h>
#include <sys/sysmacros.h>
#else
#include <stdarg.h>
#include <stdlib.h>
-#include <string.h>
-#include <strings.h>
#include <stddef.h>
#endif
@@ -270,7 +265,7 @@ nvlist_nvflag(nvlist_t *nvl)
static nv_alloc_t *
nvlist_nv_alloc(int kmflag)
{
-#if defined(_KERNEL) && !defined(_BOOT)
+#if defined(_KERNEL)
switch (kmflag) {
case KM_SLEEP:
return (nv_alloc_sleep);
@@ -281,7 +276,7 @@ nvlist_nv_alloc(int kmflag)
}
#else
return (nv_alloc_nosleep);
-#endif /* _KERNEL && !_BOOT */
+#endif /* _KERNEL */
}
/*
@@ -1680,7 +1675,7 @@ nvlist_lookup_nvpair_ei_sep(nvlist_t *nvl, const char *name, const char sep,
sepp = idxp;
/* determine the index value */
-#if defined(_KERNEL) && !defined(_BOOT)
+#if defined(_KERNEL)
if (ddi_strtol(idxp, &idxep, 0, &idx))
goto fail;
#else
@@ -3320,7 +3315,7 @@ nvs_xdr(nvstream_t *nvs, nvlist_t *nvl, char *buf, size_t *buflen)
return (err);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
static int __init
nvpair_init(void)
{
diff --git a/module/nvpair/nvpair_alloc_fixed.c b/module/nvpair/nvpair_alloc_fixed.c
index 0d4e12b97..c8a604a2b 100644
--- a/module/nvpair/nvpair_alloc_fixed.c
+++ b/module/nvpair/nvpair_alloc_fixed.c
@@ -24,18 +24,9 @@
* Use is subject to license terms.
*/
-
-
-#include <sys/stropts.h>
#include <sys/isa_defs.h>
#include <sys/nvpair.h>
#include <sys/sysmacros.h>
-#if defined(_KERNEL) && !defined(_BOOT)
-#include <sys/varargs.h>
-#else
-#include <stdarg.h>
-#include <strings.h>
-#endif
/*
* This allocator is very simple.
@@ -119,6 +110,6 @@ const nv_alloc_ops_t nv_fixed_ops_def = {
const nv_alloc_ops_t *nv_fixed_ops = &nv_fixed_ops_def;
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(nv_fixed_ops);
#endif
diff --git a/module/spl/Makefile.in b/module/spl/Makefile.in
new file mode 100644
index 000000000..97a431f22
--- /dev/null
+++ b/module/spl/Makefile.in
@@ -0,0 +1,28 @@
+src = @abs_top_srcdir@/module/spl
+obj = @abs_builddir@
+
+MODULE := spl
+
+obj-$(CONFIG_ZFS) := $(MODULE).o
+
+ccflags-y := $(ZFS_MODULE_CFLAGS) $(ZFS_MODULE_CPPFLAGS)
+
+$(MODULE)-objs += spl-atomic.o
+$(MODULE)-objs += spl-condvar.o
+$(MODULE)-objs += spl-cred.o
+$(MODULE)-objs += spl-err.o
+$(MODULE)-objs += spl-generic.o
+$(MODULE)-objs += spl-kmem.o
+$(MODULE)-objs += spl-kmem-cache.o
+$(MODULE)-objs += spl-kobj.o
+$(MODULE)-objs += spl-kstat.o
+$(MODULE)-objs += spl-mutex.o
+$(MODULE)-objs += spl-proc.o
+$(MODULE)-objs += spl-rwlock.o
+$(MODULE)-objs += spl-taskq.o
+$(MODULE)-objs += spl-thread.o
+$(MODULE)-objs += spl-tsd.o
+$(MODULE)-objs += spl-vmem.o
+$(MODULE)-objs += spl-vnode.o
+$(MODULE)-objs += spl-xdr.o
+$(MODULE)-objs += spl-zlib.o
diff --git a/module/spl/README.md b/module/spl/README.md
new file mode 100644
index 000000000..57f635aed
--- /dev/null
+++ b/module/spl/README.md
@@ -0,0 +1,16 @@
+The Solaris Porting Layer, SPL, is a Linux kernel module which provides a
+compatibility layer used by the [ZFS on Linux](http://zfsonlinux.org) project.
+
+# Installation
+
+The latest version of the SPL is maintained as part of this repository.
+Only when building ZFS version 0.7.x or earlier must an external SPL release
+be used. These releases can be found at:
+
+ * Version 0.7.x: https://github.com/zfsonlinux/spl/tree/spl-0.7-release
+ * Version 0.6.5.x: https://github.com/zfsonlinux/spl/tree/spl-0.6.5-release
+
+# Release
+
+The SPL is released under a GPLv2 license.
+For more details see the NOTICE and THIRDPARTYLICENSE files; `UCRL-CODE-235197`
diff --git a/module/spl/spl-condvar.c b/module/spl/spl-condvar.c
index f0060bbdc..1e6e38b78 100644
--- a/module/spl/spl-condvar.c
+++ b/module/spl/spl-condvar.c
@@ -27,6 +27,7 @@
#include <sys/condvar.h>
#include <sys/time.h>
#include <linux/hrtimer.h>
+#include <linux/compiler_compat.h>
void
__cv_init(kcondvar_t *cvp, char *name, kcv_type_t type, void *arg)
@@ -89,7 +90,7 @@ cv_wait_common(kcondvar_t *cvp, kmutex_t *mp, int state, int io)
ASSERT(mutex_owned(mp));
atomic_inc(&cvp->cv_refs);
- m = ACCESS_ONCE(cvp->cv_mutex);
+ m = READ_ONCE(cvp->cv_mutex);
if (!m)
m = xchg(&cvp->cv_mutex, mp);
/* Ensure the same mutex is used by all callers */
@@ -202,7 +203,7 @@ __cv_timedwait_common(kcondvar_t *cvp, kmutex_t *mp, clock_t expire_time,
return (-1);
atomic_inc(&cvp->cv_refs);
- m = ACCESS_ONCE(cvp->cv_mutex);
+ m = READ_ONCE(cvp->cv_mutex);
if (!m)
m = xchg(&cvp->cv_mutex, mp);
/* Ensure the same mutex is used by all callers */
@@ -290,7 +291,7 @@ __cv_timedwait_hires(kcondvar_t *cvp, kmutex_t *mp, hrtime_t expire_time,
return (-1);
atomic_inc(&cvp->cv_refs);
- m = ACCESS_ONCE(cvp->cv_mutex);
+ m = READ_ONCE(cvp->cv_mutex);
if (!m)
m = xchg(&cvp->cv_mutex, mp);
/* Ensure the same mutex is used by all callers */
diff --git a/module/spl/spl-err.c b/module/spl/spl-err.c
index 6b71296e8..4c8f818a9 100644
--- a/module/spl/spl-err.c
+++ b/module/spl/spl-err.c
@@ -26,7 +26,6 @@
#include <sys/sysmacros.h>
#include <sys/cmn_err.h>
-#include <linux/ratelimit.h>
/*
* It is often useful to actually have the panic crash the node so you
@@ -40,19 +39,11 @@ module_param(spl_panic_halt, uint, 0644);
MODULE_PARM_DESC(spl_panic_halt, "Cause kernel panic on assertion failures");
/* END CSTYLED */
-/*
- * Limit the number of stack traces dumped to not more than 5 every
- * 60 seconds to prevent denial-of-service attacks from debug code.
- */
-DEFINE_RATELIMIT_STATE(dumpstack_ratelimit_state, 60 * HZ, 5);
-
void
spl_dumpstack(void)
{
- if (__ratelimit(&dumpstack_ratelimit_state)) {
- printk("Showing stack for process %d\n", current->pid);
- dump_stack();
- }
+ printk("Showing stack for process %d\n", current->pid);
+ dump_stack();
}
EXPORT_SYMBOL(spl_dumpstack);
diff --git a/module/spl/spl-generic.c b/module/spl/spl-generic.c
index b38fe254c..7c1ad390b 100644
--- a/module/spl/spl-generic.c
+++ b/module/spl/spl-generic.c
@@ -46,12 +46,13 @@
#include <sys/strings.h>
#include <linux/kmod.h>
-char spl_version[32] = "SPL v" SPL_META_VERSION "-" SPL_META_RELEASE;
+char spl_version[32] = "SPL v" ZFS_META_VERSION "-" ZFS_META_RELEASE;
EXPORT_SYMBOL(spl_version);
/* BEGIN CSTYLED */
unsigned long spl_hostid = 0;
EXPORT_SYMBOL(spl_hostid);
+/* BEGIN CSTYLED */
module_param(spl_hostid, ulong, 0644);
MODULE_PARM_DESC(spl_hostid, "The system hostid.");
/* END CSTYLED */
@@ -719,8 +720,6 @@ spl_init(void)
if ((rc = spl_zlib_init()))
goto out10;
- printk(KERN_NOTICE "SPL: Loaded module v%s-%s%s\n", SPL_META_VERSION,
- SPL_META_RELEASE, SPL_DEBUG_STR);
return (rc);
out10:
@@ -742,18 +741,12 @@ out3:
out2:
spl_kvmem_fini();
out1:
- printk(KERN_NOTICE "SPL: Failed to Load Solaris Porting Layer "
- "v%s-%s%s, rc = %d\n", SPL_META_VERSION, SPL_META_RELEASE,
- SPL_DEBUG_STR, rc);
-
return (rc);
}
static void __exit
spl_fini(void)
{
- printk(KERN_NOTICE "SPL: Unloaded module v%s-%s%s\n",
- SPL_META_VERSION, SPL_META_RELEASE, SPL_DEBUG_STR);
spl_zlib_fini();
spl_kstat_fini();
spl_proc_fini();
@@ -770,6 +763,6 @@ module_init(spl_init);
module_exit(spl_fini);
MODULE_DESCRIPTION("Solaris Porting Layer");
-MODULE_AUTHOR(SPL_META_AUTHOR);
-MODULE_LICENSE(SPL_META_LICENSE);
-MODULE_VERSION(SPL_META_VERSION "-" SPL_META_RELEASE);
+MODULE_AUTHOR(ZFS_META_AUTHOR);
+MODULE_LICENSE("GPL");
+MODULE_VERSION(ZFS_META_VERSION "-" ZFS_META_RELEASE);
diff --git a/module/spl/spl-kmem.c b/module/spl/spl-kmem.c
index e0d551041..1fdb61e6f 100644
--- a/module/spl/spl-kmem.c
+++ b/module/spl/spl-kmem.c
@@ -27,7 +27,6 @@
#include <sys/kmem.h>
#include <sys/vmem.h>
#include <linux/mm.h>
-#include <linux/ratelimit.h>
/*
* As a general rule kmem_alloc() allocations should be small, preferably
@@ -135,12 +134,6 @@ strfree(char *str)
EXPORT_SYMBOL(strfree);
/*
- * Limit the number of large allocation stack traces dumped to not more than
- * 5 every 60 seconds to prevent denial-of-service attacks from debug code.
- */
-DEFINE_RATELIMIT_STATE(kmem_alloc_ratelimit_state, 60 * HZ, 5);
-
-/*
* General purpose unified implementation of kmem_alloc(). It is an
* amalgamation of Linux and Illumos allocator design. It should never be
* exported to ensure that code using kmem_alloc()/kmem_zalloc() remains
@@ -160,7 +153,7 @@ spl_kmem_alloc_impl(size_t size, int flags, int node)
* through the vmem_alloc()/vmem_zalloc() interfaces.
*/
if ((spl_kmem_alloc_warn > 0) && (size > spl_kmem_alloc_warn) &&
- !(flags & KM_VMEM) && __ratelimit(&kmem_alloc_ratelimit_state)) {
+ !(flags & KM_VMEM)) {
printk(KERN_WARNING
"Large kmem_alloc(%lu, 0x%x), please file an issue at:\n"
"https://github.com/zfsonlinux/zfs/issues/new\n",
@@ -207,14 +200,6 @@ spl_kmem_alloc_impl(size_t size, int flags, int node)
continue;
}
- if (unlikely(__ratelimit(&kmem_alloc_ratelimit_state))) {
- printk(KERN_WARNING
- "Possible memory allocation deadlock: "
- "size=%lu lflags=0x%x",
- (unsigned long)size, lflags);
- dump_stack();
- }
-
/*
* Use cond_resched() instead of congestion_wait() to avoid
* deadlocking systems where there are no block devices.
@@ -535,9 +520,12 @@ spl_kmem_fini_tracking(struct list_head *list, spinlock_t *lock)
int
spl_kmem_init(void)
{
+
#ifdef DEBUG_KMEM
kmem_alloc_used_set(0);
+
+
#ifdef DEBUG_KMEM_TRACKING
spl_kmem_init_tracking(&kmem_list, &kmem_lock, KMEM_TABLE_SIZE);
#endif /* DEBUG_KMEM_TRACKING */
diff --git a/module/spl/spl-rwlock.c b/module/spl/spl-rwlock.c
index 9a992cc3a..cf03bc593 100644
--- a/module/spl/spl-rwlock.c
+++ b/module/spl/spl-rwlock.c
@@ -25,6 +25,7 @@
*/
#include <sys/rwlock.h>
+#include <linux/module.h>
#if defined(CONFIG_PREEMPT_RT_FULL)
diff --git a/module/spl/spl-taskq.c b/module/spl/spl-taskq.c
index 2919a942a..7684257be 100644
--- a/module/spl/spl-taskq.c
+++ b/module/spl/spl-taskq.c
@@ -60,7 +60,7 @@ static taskq_thread_t *taskq_thread_create(taskq_t *);
/* List of all taskqs */
LIST_HEAD(tq_list);
-DECLARE_RWSEM(tq_list_sem);
+struct rw_semaphore tq_list_sem;
static uint_t taskq_tsd;
static int
@@ -1257,6 +1257,7 @@ MODULE_PARM_DESC(spl_taskq_kick,
int
spl_taskq_init(void)
{
+ init_rwsem(&tq_list_sem);
tsd_create(&taskq_tsd, NULL);
system_taskq = taskq_create("spl_system_taskq", MAX(boot_ncpus, 64),
diff --git a/module/spl/spl-vnode.c b/module/spl/spl-vnode.c
index 28ce21276..aebee0a82 100644
--- a/module/spl/spl-vnode.c
+++ b/module/spl/spl-vnode.c
@@ -40,7 +40,7 @@ EXPORT_SYMBOL(rootdir);
static spl_kmem_cache_t *vn_cache;
static spl_kmem_cache_t *vn_file_cache;
-static DEFINE_SPINLOCK(vn_file_lock);
+static spinlock_t vn_file_lock;
static LIST_HEAD(vn_file_list);
static int
@@ -744,6 +744,8 @@ vn_file_cache_destructor(void *buf, void *cdrarg)
int
spl_vn_init(void)
{
+ vn_file_lock = __SPIN_LOCK_UNLOCKED(vn_file_lock);
+
vn_cache = kmem_cache_create("spl_vn_cache",
sizeof (struct vnode), 64, vn_cache_constructor,
vn_cache_destructor, NULL, NULL, NULL, 0);
diff --git a/module/spl/spl-xdr.c b/module/spl/spl-xdr.c
index 2cc3e2a03..1dd31ffc1 100644
--- a/module/spl/spl-xdr.c
+++ b/module/spl/spl-xdr.c
@@ -131,8 +131,6 @@
static struct xdr_ops xdrmem_encode_ops;
static struct xdr_ops xdrmem_decode_ops;
-typedef int bool_t;
-
void
xdrmem_create(XDR *xdrs, const caddr_t addr, const uint_t size,
const enum xdr_op op)
diff --git a/module/unicode/u8_textprep.c b/module/unicode/u8_textprep.c
index 0330032fa..4e6105b2e 100644
--- a/module/unicode/u8_textprep.c
+++ b/module/unicode/u8_textprep.c
@@ -36,18 +36,13 @@
*/
#include <sys/types.h>
-#ifdef _KERNEL
+#include <sys/strings.h>
#include <sys/param.h>
#include <sys/sysmacros.h>
-#include <sys/systm.h>
#include <sys/debug.h>
#include <sys/kmem.h>
-#include <sys/ddi.h>
#include <sys/sunddi.h>
-#else
#include <sys/u8_textprep.h>
-#include <strings.h>
-#endif /* _KERNEL */
#include <sys/byteorder.h>
#include <sys/errno.h>
#include <sys/u8_textprep_data.h>
@@ -2130,7 +2125,7 @@ u8_textprep_str(char *inarray, size_t *inlen, char *outarray, size_t *outlen,
return (ret_val);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
static int __init
unicode_init(void)
{
diff --git a/module/unicode/uconv.c b/module/unicode/uconv.c
index 7a8278322..d812d5f96 100644
--- a/module/unicode/uconv.c
+++ b/module/unicode/uconv.c
@@ -38,7 +38,6 @@
#ifdef _KERNEL
#include <sys/param.h>
#include <sys/sysmacros.h>
-#include <sys/systm.h>
#include <sys/debug.h>
#include <sys/kmem.h>
#include <sys/sunddi.h>
@@ -854,7 +853,7 @@ uconv_u8tou32(const uchar_t *u8s, size_t *utf8len,
return (0);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(uconv_u16tou32);
EXPORT_SYMBOL(uconv_u16tou8);
EXPORT_SYMBOL(uconv_u32tou16);
diff --git a/module/zcommon/zfeature_common.c b/module/zcommon/zfeature_common.c
index 6ab3abe11..ea1bccf50 100644
--- a/module/zcommon/zfeature_common.c
+++ b/module/zcommon/zfeature_common.c
@@ -26,9 +26,7 @@
* Copyright (c) 2014, Nexenta Systems, Inc. All rights reserved.
*/
-#ifdef _KERNEL
-#include <sys/systm.h>
-#else
+#ifndef _KERNEL
#include <errno.h>
#include <string.h>
#endif
@@ -351,7 +349,7 @@ zpool_feature_init(void)
}
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(zfeature_lookup_name);
EXPORT_SYMBOL(zfeature_is_supported);
EXPORT_SYMBOL(zfeature_is_valid_guid);
diff --git a/module/zcommon/zfs_comutil.c b/module/zcommon/zfs_comutil.c
index 685a20c44..b31e0ab27 100644
--- a/module/zcommon/zfs_comutil.c
+++ b/module/zcommon/zfs_comutil.c
@@ -29,15 +29,12 @@
* then a separate file should to be created.
*/
-#if defined(_KERNEL)
-#include <sys/systm.h>
-#else
+#if !defined(_KERNEL)
#include <string.h>
#endif
#include <sys/types.h>
#include <sys/fs/zfs.h>
-#include <sys/int_limits.h>
#include <sys/nvpair.h>
#include "zfs_comutil.h"
#include <sys/zfs_ratelimit.h>
@@ -207,7 +204,7 @@ const char *zfs_history_event_names[ZFS_NUM_LEGACY_HISTORY_EVENTS] = {
"pool split",
};
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(zfs_allocatable_devs);
EXPORT_SYMBOL(zpool_get_rewind_policy);
EXPORT_SYMBOL(zfs_zpl_version_map);
diff --git a/module/zcommon/zfs_deleg.c b/module/zcommon/zfs_deleg.c
index c6ba278cf..8d98f720a 100644
--- a/module/zcommon/zfs_deleg.c
+++ b/module/zcommon/zfs_deleg.c
@@ -28,16 +28,15 @@
#include <sys/zfs_context.h>
#if defined(_KERNEL)
-#include <sys/systm.h>
#include <sys/sunddi.h>
#include <sys/ctype.h>
#else
#include <stdio.h>
#include <unistd.h>
-#include <strings.h>
#include <libnvpair.h>
#include <ctype.h>
#endif
+#include <sys/strings.h>
#include <sys/dsl_deleg.h>
#include "zfs_prop.h"
#include "zfs_deleg.h"
@@ -244,7 +243,7 @@ zfs_deleg_whokey(char *attr, zfs_deleg_who_type_t type,
}
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(zfs_deleg_verify_nvlist);
EXPORT_SYMBOL(zfs_deleg_whokey);
EXPORT_SYMBOL(zfs_deleg_canonicalize_perm);
diff --git a/module/zcommon/zfs_fletcher.c b/module/zcommon/zfs_fletcher.c
index 0cd992979..5a991ba60 100644
--- a/module/zcommon/zfs_fletcher.c
+++ b/module/zcommon/zfs_fletcher.c
@@ -867,7 +867,7 @@ zio_abd_checksum_func_t fletcher_4_abd_ops = {
};
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
#include <linux/mod_compat.h>
static int
diff --git a/module/zcommon/zfs_fletcher_aarch64_neon.c b/module/zcommon/zfs_fletcher_aarch64_neon.c
index b72c1bafd..bd2db2b20 100644
--- a/module/zcommon/zfs_fletcher_aarch64_neon.c
+++ b/module/zcommon/zfs_fletcher_aarch64_neon.c
@@ -45,8 +45,8 @@
#include <linux/simd_aarch64.h>
#include <sys/spa_checksum.h>
+#include <sys/strings.h>
#include <zfs_fletcher.h>
-#include <strings.h>
static void
fletcher_4_aarch64_neon_init(fletcher_4_ctx_t *ctx)
diff --git a/module/zcommon/zfs_fletcher_avx512.c b/module/zcommon/zfs_fletcher_avx512.c
index ed93c1159..7260a9864 100644
--- a/module/zcommon/zfs_fletcher_avx512.c
+++ b/module/zcommon/zfs_fletcher_avx512.c
@@ -28,8 +28,8 @@
#include <sys/byteorder.h>
#include <sys/frame.h>
#include <sys/spa_checksum.h>
+#include <sys/strings.h>
#include <zfs_fletcher.h>
-#include <strings.h>
#define __asm __asm__ __volatile__
diff --git a/module/zcommon/zfs_fletcher_intel.c b/module/zcommon/zfs_fletcher_intel.c
index a479b9d56..6dac047da 100644
--- a/module/zcommon/zfs_fletcher_intel.c
+++ b/module/zcommon/zfs_fletcher_intel.c
@@ -44,8 +44,8 @@
#include <linux/simd_x86.h>
#include <sys/spa_checksum.h>
+#include <sys/strings.h>
#include <zfs_fletcher.h>
-#include <strings.h>
static void
fletcher_4_avx2_init(fletcher_4_ctx_t *ctx)
diff --git a/module/zcommon/zfs_fletcher_sse.c b/module/zcommon/zfs_fletcher_sse.c
index 90b7d7d4e..a0b42e5f5 100644
--- a/module/zcommon/zfs_fletcher_sse.c
+++ b/module/zcommon/zfs_fletcher_sse.c
@@ -46,8 +46,8 @@
#include <linux/simd_x86.h>
#include <sys/spa_checksum.h>
#include <sys/byteorder.h>
+#include <sys/strings.h>
#include <zfs_fletcher.h>
-#include <strings.h>
static void
fletcher_4_sse2_init(fletcher_4_ctx_t *ctx)
diff --git a/module/zcommon/zfs_fletcher_superscalar.c b/module/zcommon/zfs_fletcher_superscalar.c
index 02c5d53c7..fbbbf8060 100644
--- a/module/zcommon/zfs_fletcher_superscalar.c
+++ b/module/zcommon/zfs_fletcher_superscalar.c
@@ -43,8 +43,8 @@
#include <sys/byteorder.h>
#include <sys/spa_checksum.h>
+#include <sys/strings.h>
#include <zfs_fletcher.h>
-#include <strings.h>
static void
fletcher_4_superscalar_init(fletcher_4_ctx_t *ctx)
diff --git a/module/zcommon/zfs_fletcher_superscalar4.c b/module/zcommon/zfs_fletcher_superscalar4.c
index 4fd37d91c..97fdb7b7d 100644
--- a/module/zcommon/zfs_fletcher_superscalar4.c
+++ b/module/zcommon/zfs_fletcher_superscalar4.c
@@ -43,8 +43,8 @@
#include <sys/byteorder.h>
#include <sys/spa_checksum.h>
+#include <sys/strings.h>
#include <zfs_fletcher.h>
-#include <strings.h>
static void
fletcher_4_superscalar4_init(fletcher_4_ctx_t *ctx)
diff --git a/module/zcommon/zfs_namecheck.c b/module/zcommon/zfs_namecheck.c
index 42a7c6c93..aefde9087 100644
--- a/module/zcommon/zfs_namecheck.c
+++ b/module/zcommon/zfs_namecheck.c
@@ -38,9 +38,7 @@
* Each function returns 0 on success, -1 on error.
*/
-#if defined(_KERNEL)
-#include <sys/systm.h>
-#else
+#if !defined(_KERNEL)
#include <string.h>
#endif
@@ -349,7 +347,7 @@ pool_namecheck(const char *pool, namecheck_err_t *why, char *what)
return (0);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(pool_namecheck);
EXPORT_SYMBOL(dataset_namecheck);
EXPORT_SYMBOL(zfs_component_namecheck);
diff --git a/module/zcommon/zfs_prop.c b/module/zcommon/zfs_prop.c
index 34b7228ec..698fb8e21 100644
--- a/module/zcommon/zfs_prop.c
+++ b/module/zcommon/zfs_prop.c
@@ -39,9 +39,7 @@
#include "zfs_deleg.h"
#include "zfs_fletcher.h"
-#if defined(_KERNEL)
-#include <sys/systm.h>
-#else
+#if !defined(_KERNEL)
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
@@ -847,7 +845,7 @@ zfs_prop_align_right(zfs_prop_t prop)
#endif
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
static int __init
zcommon_init(void)
{
diff --git a/module/zcommon/zfs_uio.c b/module/zcommon/zfs_uio.c
index 7b4175bbe..af9716126 100644
--- a/module/zcommon/zfs_uio.c
+++ b/module/zcommon/zfs_uio.c
@@ -49,6 +49,8 @@
#include <sys/types.h>
#include <sys/uio_impl.h>
+#include <sys/sysmacros.h>
+#include <sys/strings.h>
#include <linux/kmap_compat.h>
/*
diff --git a/module/zcommon/zpool_prop.c b/module/zcommon/zpool_prop.c
index fd21f3117..bc38eca7d 100644
--- a/module/zcommon/zpool_prop.c
+++ b/module/zcommon/zpool_prop.c
@@ -32,9 +32,7 @@
#include "zfs_prop.h"
-#if defined(_KERNEL)
-#include <sys/systm.h>
-#else
+#if !defined(_KERNEL)
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
@@ -244,7 +242,7 @@ zpool_prop_align_right(zpool_prop_t prop)
}
#endif
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
/* zpool property functions */
EXPORT_SYMBOL(zpool_prop_init);
EXPORT_SYMBOL(zpool_prop_get_type);
diff --git a/module/zcommon/zprop_common.c b/module/zcommon/zprop_common.c
index a4528d248..838988a4c 100644
--- a/module/zcommon/zprop_common.c
+++ b/module/zcommon/zprop_common.c
@@ -41,8 +41,9 @@
#include "zfs_deleg.h"
#if defined(_KERNEL)
-#include <sys/systm.h>
-#include <util/qsort.h>
+#include <linux/sort.h>
+#define qsort(base, num, size, cmp) \
+ sort(base, num, size, cmp, NULL)
#else
#include <stdlib.h>
#include <string.h>
@@ -435,7 +436,7 @@ zprop_width(int prop, boolean_t *fixed, zfs_type_t type)
#endif
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
/* Common routines to initialize property tables */
EXPORT_SYMBOL(zprop_register_impl);
EXPORT_SYMBOL(zprop_register_string);
diff --git a/module/zfs/abd.c b/module/zfs/abd.c
index 0bd7a262f..555e8c1d2 100644
--- a/module/zfs/abd.c
+++ b/module/zfs/abd.c
@@ -1466,7 +1466,7 @@ abd_raidz_rec_iterate(abd_t **cabds, abd_t **tabds,
local_irq_restore(flags);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
/*
* bio_nr_pages for ABD.
* @off is the offset in @abd
diff --git a/module/zfs/arc.c b/module/zfs/arc.c
index 6662e0fae..be9964bff 100644
--- a/module/zfs/arc.c
+++ b/module/zfs/arc.c
@@ -292,11 +292,9 @@
#include <sys/zil.h>
#include <sys/fm/fs/zfs.h>
#ifdef _KERNEL
+#include <sys/shrinker.h>
#include <sys/vmsystm.h>
-#include <vm/anon.h>
-#include <sys/fs/swapnode.h>
#include <sys/zpl.h>
-#include <linux/mm_compat.h>
#include <linux/page_compat.h>
#endif
#include <sys/callb.h>
@@ -1199,7 +1197,7 @@ buf_fini(void)
{
int i;
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
/*
* Large allocations which do not require contiguous pages
* should be using vmem_free() in the linux kernel\
@@ -1360,7 +1358,7 @@ buf_init(void)
hsize <<= 1;
retry:
buf_hash_table.ht_mask = hsize - 1;
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
/*
* Large allocations which do not require contiguous pages
* should be using vmem_alloc() in the linux kernel
@@ -9050,7 +9048,7 @@ l2arc_stop(void)
mutex_exit(&l2arc_feed_thr_lock);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(arc_buf_size);
EXPORT_SYMBOL(arc_write);
EXPORT_SYMBOL(arc_read);
diff --git a/module/zfs/dbuf.c b/module/zfs/dbuf.c
index bc03317a2..a8c48167a 100644
--- a/module/zfs/dbuf.c
+++ b/module/zfs/dbuf.c
@@ -762,7 +762,7 @@ dbuf_init(void)
retry:
h->hash_table_mask = hsize - 1;
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
/*
* Large allocations which do not require contiguous pages
* should be using vmem_alloc() in the linux kernel
@@ -847,7 +847,7 @@ dbuf_fini(void)
for (i = 0; i < DBUF_MUTEXES; i++)
mutex_destroy(&h->hash_mutexes[i]);
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
/*
* Large allocations which do not require contiguous pages
* should be using vmem_free() in the linux kernel
@@ -4341,7 +4341,7 @@ dbuf_write(dbuf_dirty_record_t *dr, arc_buf_t *data, dmu_tx_t *tx)
}
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(dbuf_find);
EXPORT_SYMBOL(dbuf_is_metadata);
EXPORT_SYMBOL(dbuf_destroy);
diff --git a/module/zfs/dbuf_stats.c b/module/zfs/dbuf_stats.c
index 6c26718f2..84232338f 100644
--- a/module/zfs/dbuf_stats.c
+++ b/module/zfs/dbuf_stats.c
@@ -225,7 +225,7 @@ dbuf_stats_destroy(void)
dbuf_stats_hash_table_destroy();
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
module_param(zfs_dbuf_state_index, int, 0644);
MODULE_PARM_DESC(zfs_dbuf_state_index, "Calculate arc header index");
#endif
diff --git a/module/zfs/ddt.c b/module/zfs/ddt.c
index 681033d71..f7fe2ae80 100644
--- a/module/zfs/ddt.c
+++ b/module/zfs/ddt.c
@@ -1236,7 +1236,7 @@ ddt_walk(spa_t *spa, ddt_bookmark_t *ddb, ddt_entry_t *dde)
return (SET_ERROR(ENOENT));
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
module_param(zfs_dedup_prefetch, int, 0644);
MODULE_PARM_DESC(zfs_dedup_prefetch, "Enable prefetching dedup-ed blks");
#endif
diff --git a/module/zfs/ddt_zap.c b/module/zfs/ddt_zap.c
index fc9cfec04..77c0784cc 100644
--- a/module/zfs/ddt_zap.c
+++ b/module/zfs/ddt_zap.c
@@ -29,7 +29,6 @@
#include <sys/ddt.h>
#include <sys/zap.h>
#include <sys/dmu_tx.h>
-#include <util/sscanf.h>
int ddt_zap_leaf_blockshift = 12;
int ddt_zap_indirect_blockshift = 12;
diff --git a/module/zfs/dmu.c b/module/zfs/dmu.c
index 2d2586a8c..32a8fd319 100644
--- a/module/zfs/dmu.c
+++ b/module/zfs/dmu.c
@@ -2505,7 +2505,7 @@ dmu_fini(void)
abd_fini();
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(dmu_bonus_hold);
EXPORT_SYMBOL(dmu_buf_hold_array_by_bonus);
EXPORT_SYMBOL(dmu_buf_rele_array);
diff --git a/module/zfs/dmu_object.c b/module/zfs/dmu_object.c
index 1fc71d103..21e8e5a94 100644
--- a/module/zfs/dmu_object.c
+++ b/module/zfs/dmu_object.c
@@ -411,7 +411,7 @@ dmu_object_free_zapified(objset_t *mos, uint64_t object, dmu_tx_t *tx)
VERIFY0(dmu_object_free(mos, object, tx));
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(dmu_object_alloc);
EXPORT_SYMBOL(dmu_object_alloc_dnsize);
EXPORT_SYMBOL(dmu_object_claim);
diff --git a/module/zfs/dmu_objset.c b/module/zfs/dmu_objset.c
index b6371d382..92de37057 100644
--- a/module/zfs/dmu_objset.c
+++ b/module/zfs/dmu_objset.c
@@ -2950,7 +2950,7 @@ dmu_objset_willuse_space(objset_t *os, int64_t space, dmu_tx_t *tx)
}
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(dmu_objset_zil);
EXPORT_SYMBOL(dmu_objset_pool);
EXPORT_SYMBOL(dmu_objset_ds);
diff --git a/module/zfs/dmu_traverse.c b/module/zfs/dmu_traverse.c
index cffcd2d00..a5f468ac8 100644
--- a/module/zfs/dmu_traverse.c
+++ b/module/zfs/dmu_traverse.c
@@ -769,7 +769,7 @@ traverse_pool(spa_t *spa, uint64_t txg_start, int flags,
return (err);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(traverse_dataset);
EXPORT_SYMBOL(traverse_pool);
diff --git a/module/zfs/dmu_tx.c b/module/zfs/dmu_tx.c
index 861769b40..374bb710c 100644
--- a/module/zfs/dmu_tx.c
+++ b/module/zfs/dmu_tx.c
@@ -37,7 +37,6 @@
#include <sys/sa.h>
#include <sys/sa_impl.h>
#include <sys/zfs_context.h>
-#include <sys/varargs.h>
#include <sys/trace_dmu.h>
typedef void (*dmu_tx_hold_func_t)(dmu_tx_t *tx, struct dnode *dn,
@@ -1372,7 +1371,7 @@ dmu_tx_fini(void)
}
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(dmu_tx_create);
EXPORT_SYMBOL(dmu_tx_hold_write);
EXPORT_SYMBOL(dmu_tx_hold_write_by_dnode);
diff --git a/module/zfs/dmu_zfetch.c b/module/zfs/dmu_zfetch.c
index e22560ed1..2133518ff 100644
--- a/module/zfs/dmu_zfetch.c
+++ b/module/zfs/dmu_zfetch.c
@@ -357,7 +357,7 @@ dmu_zfetch(zfetch_t *zf, uint64_t blkid, uint64_t nblks, boolean_t fetch_data)
ZFETCHSTAT_BUMP(zfetchstat_hits);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
/* BEGIN CSTYLED */
module_param(zfs_prefetch_disable, int, 0644);
MODULE_PARM_DESC(zfs_prefetch_disable, "Disable all ZFS prefetching");
diff --git a/module/zfs/dsl_dataset.c b/module/zfs/dsl_dataset.c
index 9823f3183..7a4721e17 100644
--- a/module/zfs/dsl_dataset.c
+++ b/module/zfs/dsl_dataset.c
@@ -4237,7 +4237,7 @@ dsl_dataset_create_remap_deadlist(dsl_dataset_t *ds, dmu_tx_t *tx)
spa_feature_incr(spa, SPA_FEATURE_OBSOLETE_COUNTS, tx);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
#if defined(_LP64)
module_param(zfs_max_recordsize, int, 0644);
MODULE_PARM_DESC(zfs_max_recordsize, "Max allowed record size");
diff --git a/module/zfs/dsl_deleg.c b/module/zfs/dsl_deleg.c
index f17cedb08..cef460f02 100644
--- a/module/zfs/dsl_deleg.c
+++ b/module/zfs/dsl_deleg.c
@@ -768,7 +768,7 @@ dsl_delegation_on(objset_t *os)
return (!!spa_delegation(os->os_spa));
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(dsl_deleg_get);
EXPORT_SYMBOL(dsl_deleg_set);
#endif
diff --git a/module/zfs/dsl_destroy.c b/module/zfs/dsl_destroy.c
index e11508c90..b3296ceee 100644
--- a/module/zfs/dsl_destroy.c
+++ b/module/zfs/dsl_destroy.c
@@ -1095,7 +1095,7 @@ dsl_destroy_inconsistent(const char *dsname, void *arg)
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(dsl_destroy_head);
EXPORT_SYMBOL(dsl_destroy_head_sync_impl);
EXPORT_SYMBOL(dsl_dataset_user_hold_check_one);
diff --git a/module/zfs/dsl_dir.c b/module/zfs/dsl_dir.c
index a866c3074..4b85208d8 100644
--- a/module/zfs/dsl_dir.c
+++ b/module/zfs/dsl_dir.c
@@ -2165,7 +2165,7 @@ dsl_dir_is_zapified(dsl_dir_t *dd)
return (doi.doi_type == DMU_OTN_ZAP_METADATA);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(dsl_dir_set_quota);
EXPORT_SYMBOL(dsl_dir_set_reservation);
#endif
diff --git a/module/zfs/dsl_pool.c b/module/zfs/dsl_pool.c
index 094b6bec0..1bb49c13a 100644
--- a/module/zfs/dsl_pool.c
+++ b/module/zfs/dsl_pool.c
@@ -1208,7 +1208,7 @@ dsl_pool_config_held_writer(dsl_pool_t *dp)
return (RRW_WRITE_HELD(&dp->dp_config_rwlock));
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(dsl_pool_config_enter);
EXPORT_SYMBOL(dsl_pool_config_exit);
diff --git a/module/zfs/dsl_prop.c b/module/zfs/dsl_prop.c
index 57b8eb794..9f892acdb 100644
--- a/module/zfs/dsl_prop.c
+++ b/module/zfs/dsl_prop.c
@@ -1251,7 +1251,7 @@ dsl_prop_nvlist_add_string(nvlist_t *nv, zfs_prop_t prop, const char *value)
nvlist_free(propval);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(dsl_prop_register);
EXPORT_SYMBOL(dsl_prop_unregister);
EXPORT_SYMBOL(dsl_prop_unregister_all);
diff --git a/module/zfs/dsl_scan.c b/module/zfs/dsl_scan.c
index c19a1b75c..2c3494746 100644
--- a/module/zfs/dsl_scan.c
+++ b/module/zfs/dsl_scan.c
@@ -3909,7 +3909,7 @@ dsl_scan_freed(spa_t *spa, const blkptr_t *bp)
dsl_scan_freed_dva(spa, bp, i);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
/* CSTYLED */
module_param(zfs_scan_vdev_limit, ulong, 0644);
MODULE_PARM_DESC(zfs_scan_vdev_limit,
diff --git a/module/zfs/dsl_synctask.c b/module/zfs/dsl_synctask.c
index 28130d257..d8eb10d37 100644
--- a/module/zfs/dsl_synctask.c
+++ b/module/zfs/dsl_synctask.c
@@ -185,7 +185,7 @@ dsl_sync_task_sync(dsl_sync_task_t *dst, dmu_tx_t *tx)
kmem_free(dst, sizeof (*dst));
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(dsl_sync_task);
EXPORT_SYMBOL(dsl_sync_task_nowait);
#endif
diff --git a/module/zfs/fm.c b/module/zfs/fm.c
index 52d4acaa2..5c3006670 100644
--- a/module/zfs/fm.c
+++ b/module/zfs/fm.c
@@ -57,7 +57,6 @@
#include <sys/nvpair.h>
#include <sys/cmn_err.h>
#include <sys/sysmacros.h>
-#include <sys/compress.h>
#include <sys/sunddi.h>
#include <sys/systeminfo.h>
#include <sys/fm/util.h>
@@ -67,10 +66,6 @@
#ifdef _KERNEL
#include <sys/atomic.h>
#include <sys/condvar.h>
-#include <sys/cpuvar.h>
-#include <sys/systm.h>
-#include <sys/dumphdr.h>
-#include <sys/cpuvar.h>
#include <sys/console.h>
#include <sys/kobj.h>
#include <sys/time.h>
diff --git a/module/zfs/gzip.c b/module/zfs/gzip.c
index 40166b3fe..5cac2a7de 100644
--- a/module/zfs/gzip.c
+++ b/module/zfs/gzip.c
@@ -28,22 +28,19 @@
#include <sys/debug.h>
#include <sys/types.h>
+#include <sys/strings.h>
#include "qat.h"
#ifdef _KERNEL
-#include <sys/systm.h>
#include <sys/zmod.h>
-
typedef size_t zlen_t;
#define compress_func z_compress_level
#define uncompress_func z_uncompress
#else /* _KERNEL */
-#include <strings.h>
#include <zlib.h>
-
typedef uLongf zlen_t;
#define compress_func compress2
#define uncompress_func uncompress
diff --git a/module/zfs/metaslab.c b/module/zfs/metaslab.c
index 9f0065b53..c11e459e0 100644
--- a/module/zfs/metaslab.c
+++ b/module/zfs/metaslab.c
@@ -3850,7 +3850,7 @@ metaslab_check_free(spa_t *spa, const blkptr_t *bp)
spa_config_exit(spa, SCL_VDEV, FTAG);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
/* CSTYLED */
module_param(metaslab_aliquot, ulong, 0644);
MODULE_PARM_DESC(metaslab_aliquot,
@@ -3904,4 +3904,4 @@ MODULE_PARM_DESC(zfs_metaslab_switch_threshold,
module_param(metaslab_force_ganging, ulong, 0644);
MODULE_PARM_DESC(metaslab_force_ganging,
"blocks larger than this size are forced to be gang blocks");
-#endif /* _KERNEL && HAVE_SPL */
+#endif
diff --git a/module/zfs/mmp.c b/module/zfs/mmp.c
index f51952ee4..6fd5d3e9a 100644
--- a/module/zfs/mmp.c
+++ b/module/zfs/mmp.c
@@ -597,7 +597,7 @@ mmp_signal_all_threads(void)
mutex_exit(&spa_namespace_lock);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
#include <linux/mod_compat.h>
static int
diff --git a/module/zfs/multilist.c b/module/zfs/multilist.c
index 48137b3fc..2a594c56c 100644
--- a/module/zfs/multilist.c
+++ b/module/zfs/multilist.c
@@ -403,7 +403,7 @@ multilist_link_active(multilist_node_t *link)
return (list_link_active(link));
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
/* BEGIN CSTYLED */
diff --git a/module/zfs/pathname.c b/module/zfs/pathname.c
index 4ec132066..e3e97c9bb 100644
--- a/module/zfs/pathname.c
+++ b/module/zfs/pathname.c
@@ -38,9 +38,9 @@
#include <sys/types.h>
-#include <sys/systm.h>
#include <sys/pathname.h>
#include <sys/kmem.h>
+#include <sys/sysmacros.h>
/*
* Pathname utilities.
diff --git a/module/zfs/sa.c b/module/zfs/sa.c
index 4a863f9a5..5b6b90642 100644
--- a/module/zfs/sa.c
+++ b/module/zfs/sa.c
@@ -28,7 +28,6 @@
#include <sys/zfs_context.h>
#include <sys/types.h>
#include <sys/param.h>
-#include <sys/systm.h>
#include <sys/sysmacros.h>
#include <sys/dmu.h>
#include <sys/dmu_impl.h>
diff --git a/module/zfs/spa.c b/module/zfs/spa.c
index dba6efe7b..50862adcd 100644
--- a/module/zfs/spa.c
+++ b/module/zfs/spa.c
@@ -85,11 +85,7 @@
#ifdef _KERNEL
#include <sys/fm/protocol.h>
#include <sys/fm/util.h>
-#include <sys/bootprops.h>
#include <sys/callb.h>
-#include <sys/cpupart.h>
-#include <sys/pool.h>
-#include <sys/sysdc.h>
#include <sys/zone.h>
#endif /* _KERNEL */
@@ -162,7 +158,6 @@ static int spa_load_impl(spa_t *spa, spa_import_type_t type, char **ereport,
static void spa_vdev_resilver_done(spa_t *spa);
uint_t zio_taskq_batch_pct = 75; /* 1 thread per cpu in pset */
-id_t zio_taskq_psrset_bind = PS_NONE;
boolean_t zio_taskq_sysdc = B_TRUE; /* use SDC scheduling class */
uint_t zio_taskq_basedc = 80; /* base duty cycle */
@@ -1088,6 +1083,7 @@ spa_create_zio_taskqs(spa_t *spa)
static void
spa_thread(void *arg)
{
+ psetid_t zio_taskq_psrset_bind = PS_NONE;
callb_cpr_t cprinfo;
spa_t *spa = arg;
@@ -7795,7 +7791,7 @@ spa_event_notify(spa_t *spa, vdev_t *vd, nvlist_t *hist_nvl, const char *name)
spa_event_post(spa_event_create(spa, vd, hist_nvl, name));
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
/* state manipulation functions */
EXPORT_SYMBOL(spa_open);
EXPORT_SYMBOL(spa_open_rewind);
@@ -7852,7 +7848,7 @@ EXPORT_SYMBOL(spa_prop_clear_bootfs);
EXPORT_SYMBOL(spa_event_notify);
#endif
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
module_param(spa_load_verify_maxinflight, int, 0644);
MODULE_PARM_DESC(spa_load_verify_maxinflight,
"Max concurrent traversal I/Os while verifying pool during import -X");
diff --git a/module/zfs/spa_config.c b/module/zfs/spa_config.c
index 50bba2345..b94f0fc84 100644
--- a/module/zfs/spa_config.c
+++ b/module/zfs/spa_config.c
@@ -600,7 +600,7 @@ spa_config_update(spa_t *spa, int what)
spa_config_update(spa, SPA_CONFIG_UPDATE_VDEVS);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(spa_config_load);
EXPORT_SYMBOL(spa_all_configs);
EXPORT_SYMBOL(spa_config_set);
diff --git a/module/zfs/spa_errlog.c b/module/zfs/spa_errlog.c
index 1299faa58..e42f8a021 100644
--- a/module/zfs/spa_errlog.c
+++ b/module/zfs/spa_errlog.c
@@ -404,7 +404,7 @@ spa_errlog_sync(spa_t *spa, uint64_t txg)
mutex_exit(&spa->spa_errlog_lock);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
/* error handling */
EXPORT_SYMBOL(spa_log_error);
EXPORT_SYMBOL(spa_get_errlog_size);
diff --git a/module/zfs/spa_history.c b/module/zfs/spa_history.c
index 511bf1094..969fdb000 100644
--- a/module/zfs/spa_history.c
+++ b/module/zfs/spa_history.c
@@ -183,12 +183,8 @@ static char *
spa_history_zone(void)
{
#ifdef _KERNEL
-#ifdef HAVE_SPL
return ("linux");
#else
- return (curproc->p_zone->zone_name);
-#endif
-#else
return (NULL);
#endif
}
@@ -626,7 +622,7 @@ spa_history_log_version(spa_t *spa, const char *operation, dmu_tx_t *tx)
u->nodename, u->release, u->version, u->machine);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(spa_history_create_obj);
EXPORT_SYMBOL(spa_history_get);
EXPORT_SYMBOL(spa_history_log);
diff --git a/module/zfs/spa_misc.c b/module/zfs/spa_misc.c
index 234e5c60d..288e5378b 100644
--- a/module/zfs/spa_misc.c
+++ b/module/zfs/spa_misc.c
@@ -2254,7 +2254,7 @@ spa_set_missing_tvds(spa_t *spa, uint64_t missing)
spa->spa_missing_tvds = missing;
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
#include <linux/mod_compat.h>
diff --git a/module/zfs/spa_stats.c b/module/zfs/spa_stats.c
index f604836c8..3f137d9c7 100644
--- a/module/zfs/spa_stats.c
+++ b/module/zfs/spa_stats.c
@@ -1017,7 +1017,7 @@ spa_stats_destroy(spa_t *spa)
spa_mmp_history_destroy(spa);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
/* CSTYLED */
module_param(zfs_read_history, int, 0644);
MODULE_PARM_DESC(zfs_read_history,
diff --git a/module/zfs/txg.c b/module/zfs/txg.c
index 2c7f5303b..30f251573 100644
--- a/module/zfs/txg.c
+++ b/module/zfs/txg.c
@@ -934,7 +934,7 @@ txg_list_next(txg_list_t *tl, void *p, uint64_t txg)
return (tn == NULL ? NULL : (char *)tn - tl->tl_offset);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(txg_init);
EXPORT_SYMBOL(txg_fini);
EXPORT_SYMBOL(txg_sync_start);
diff --git a/module/zfs/vdev.c b/module/zfs/vdev.c
index 7bb27f0ec..388be3617 100644
--- a/module/zfs/vdev.c
+++ b/module/zfs/vdev.c
@@ -4237,7 +4237,7 @@ vdev_deadman(vdev_t *vd, char *tag)
}
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(vdev_fault);
EXPORT_SYMBOL(vdev_degrade);
EXPORT_SYMBOL(vdev_online);
diff --git a/module/zfs/vdev_cache.c b/module/zfs/vdev_cache.c
index 0570ceb2e..0f1d9448b 100644
--- a/module/zfs/vdev_cache.c
+++ b/module/zfs/vdev_cache.c
@@ -425,7 +425,7 @@ vdev_cache_stat_fini(void)
}
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
module_param(zfs_vdev_cache_max, int, 0644);
MODULE_PARM_DESC(zfs_vdev_cache_max, "Inflate reads small than max");
diff --git a/module/zfs/vdev_disk.c b/module/zfs/vdev_disk.c
index 9c3a1ba80..5cdfd960c 100644
--- a/module/zfs/vdev_disk.c
+++ b/module/zfs/vdev_disk.c
@@ -33,7 +33,6 @@
#include <sys/abd.h>
#include <sys/fs/zfs.h>
#include <sys/zio.h>
-#include <sys/sunldi.h>
#include <linux/mod_compat.h>
char *zfs_vdev_scheduler = VDEV_SCHEDULER;
diff --git a/module/zfs/vdev_indirect.c b/module/zfs/vdev_indirect.c
index ff0968384..a93e41258 100644
--- a/module/zfs/vdev_indirect.c
+++ b/module/zfs/vdev_indirect.c
@@ -1687,7 +1687,7 @@ vdev_ops_t vdev_indirect_ops = {
B_FALSE /* leaf vdev */
};
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(rs_alloc);
EXPORT_SYMBOL(spa_condense_fini);
EXPORT_SYMBOL(spa_start_indirect_condensing_thread);
diff --git a/module/zfs/vdev_indirect_births.c b/module/zfs/vdev_indirect_births.c
index a0163b2e5..1c44a6428 100644
--- a/module/zfs/vdev_indirect_births.c
+++ b/module/zfs/vdev_indirect_births.c
@@ -213,7 +213,7 @@ vdev_indirect_births_physbirth(vdev_indirect_births_t *vib, uint64_t offset,
return (-1);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(vdev_indirect_births_add_entry);
EXPORT_SYMBOL(vdev_indirect_births_alloc);
EXPORT_SYMBOL(vdev_indirect_births_close);
diff --git a/module/zfs/vdev_indirect_mapping.c b/module/zfs/vdev_indirect_mapping.c
index dbd6a7635..d91f23383 100644
--- a/module/zfs/vdev_indirect_mapping.c
+++ b/module/zfs/vdev_indirect_mapping.c
@@ -596,7 +596,7 @@ vdev_indirect_mapping_free_obsolete_counts(vdev_indirect_mapping_t *vim,
vmem_free(counts, vim->vim_phys->vimp_num_entries * sizeof (uint32_t));
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(vdev_indirect_mapping_add_entries);
EXPORT_SYMBOL(vdev_indirect_mapping_alloc);
EXPORT_SYMBOL(vdev_indirect_mapping_bytes_mapped);
diff --git a/module/zfs/vdev_mirror.c b/module/zfs/vdev_mirror.c
index 1c591cd64..65357d841 100644
--- a/module/zfs/vdev_mirror.c
+++ b/module/zfs/vdev_mirror.c
@@ -774,7 +774,7 @@ vdev_ops_t vdev_spare_ops = {
B_FALSE /* not a leaf vdev */
};
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
/* BEGIN CSTYLED */
module_param(zfs_vdev_mirror_rotating_inc, int, 0644);
MODULE_PARM_DESC(zfs_vdev_mirror_rotating_inc,
diff --git a/module/zfs/vdev_queue.c b/module/zfs/vdev_queue.c
index 3ac31a872..4f29d0043 100644
--- a/module/zfs/vdev_queue.c
+++ b/module/zfs/vdev_queue.c
@@ -883,7 +883,7 @@ vdev_queue_last_offset(vdev_t *vd)
return (vd->vdev_queue.vq_last_offset);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
module_param(zfs_vdev_aggregation_limit, int, 0644);
MODULE_PARM_DESC(zfs_vdev_aggregation_limit, "Max vdev I/O aggregation size");
diff --git a/module/zfs/vdev_raidz_math.c b/module/zfs/vdev_raidz_math.c
index ba4dcc480..e6112bc02 100644
--- a/module/zfs/vdev_raidz_math.c
+++ b/module/zfs/vdev_raidz_math.c
@@ -614,7 +614,7 @@ vdev_raidz_impl_set(const char *val)
return (err);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
#include <linux/mod_compat.h>
static int
diff --git a/module/zfs/vdev_removal.c b/module/zfs/vdev_removal.c
index 07c556ed0..f9084e8cf 100644
--- a/module/zfs/vdev_removal.c
+++ b/module/zfs/vdev_removal.c
@@ -2102,7 +2102,7 @@ spa_removal_get_stats(spa_t *spa, pool_removal_stat_t *prs)
return (0);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
module_param(zfs_remove_max_segment, int, 0644);
MODULE_PARM_DESC(zfs_remove_max_segment,
"Largest contiguous segment to allocate when removing device");
diff --git a/module/zfs/zap_micro.c b/module/zfs/zap_micro.c
index 791cbee88..6ab2551b6 100644
--- a/module/zfs/zap_micro.c
+++ b/module/zfs/zap_micro.c
@@ -1629,7 +1629,7 @@ zap_get_stats(objset_t *os, uint64_t zapobj, zap_stats_t *zs)
return (0);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(zap_create);
EXPORT_SYMBOL(zap_create_dnsize);
EXPORT_SYMBOL(zap_create_norm);
diff --git a/module/zfs/zcp.c b/module/zfs/zcp.c
index 31230dc52..e7194344b 100644
--- a/module/zfs/zcp.c
+++ b/module/zfs/zcp.c
@@ -100,7 +100,6 @@
#include <sys/zcp_iter.h>
#include <sys/zcp_prop.h>
#include <sys/zcp_global.h>
-#include <util/sscanf.h>
#ifndef KM_NORMALPRI
#define KM_NORMALPRI 0
diff --git a/module/zfs/zfs_acl.c b/module/zfs/zfs_acl.c
index 9fee47445..b1af4da2f 100644
--- a/module/zfs/zfs_acl.c
+++ b/module/zfs/zfs_acl.c
@@ -27,9 +27,7 @@
#include <sys/types.h>
#include <sys/param.h>
#include <sys/time.h>
-#include <sys/systm.h>
#include <sys/sysmacros.h>
-#include <sys/resource.h>
#include <sys/vfs.h>
#include <sys/vnode.h>
#include <sys/sid.h>
@@ -38,7 +36,6 @@
#include <sys/kmem.h>
#include <sys/cmn_err.h>
#include <sys/errno.h>
-#include <sys/unistd.h>
#include <sys/sdt.h>
#include <sys/fs/zfs.h>
#include <sys/mode.h>
@@ -54,7 +51,6 @@
#include <sys/sa.h>
#include <sys/trace_acl.h>
#include <sys/zpl.h>
-#include "fs/fs_subr.h"
#define ALLOW ACE_ACCESS_ALLOWED_ACE_TYPE
#define DENY ACE_ACCESS_DENIED_ACE_TYPE
@@ -98,6 +94,8 @@
#define ALL_MODE_EXECS (S_IXUSR | S_IXGRP | S_IXOTH)
+#define IDMAP_WK_CREATOR_OWNER_UID 2147483648U
+
static uint16_t
zfs_ace_v0_get_type(void *acep)
{
diff --git a/module/zfs/zfs_byteswap.c b/module/zfs/zfs_byteswap.c
index 16327a225..7893bde4e 100644
--- a/module/zfs/zfs_byteswap.c
+++ b/module/zfs/zfs_byteswap.c
@@ -198,7 +198,7 @@ zfs_znode_byteswap(void *buf, size_t size)
}
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(zfs_oldacl_byteswap);
EXPORT_SYMBOL(zfs_acl_byteswap);
EXPORT_SYMBOL(zfs_znode_byteswap);
diff --git a/module/zfs/zfs_ctldir.c b/module/zfs/zfs_ctldir.c
index 2b7272d4f..f0720e58a 100644
--- a/module/zfs/zfs_ctldir.c
+++ b/module/zfs/zfs_ctldir.c
@@ -71,11 +71,9 @@
#include <sys/types.h>
#include <sys/param.h>
#include <sys/time.h>
-#include <sys/systm.h>
#include <sys/sysmacros.h>
#include <sys/pathname.h>
#include <sys/vfs.h>
-#include <sys/vfs_opreg.h>
#include <sys/zfs_ctldir.h>
#include <sys/zfs_ioctl.h>
#include <sys/zfs_vfsops.h>
@@ -85,7 +83,6 @@
#include <sys/dmu_objset.h>
#include <sys/dsl_destroy.h>
#include <sys/dsl_deleg.h>
-#include <sys/mount.h>
#include <sys/zpl.h>
#include "zfs_namecheck.h"
diff --git a/module/zfs/zfs_dir.c b/module/zfs/zfs_dir.c
index 7eb426b78..8a591904f 100644
--- a/module/zfs/zfs_dir.c
+++ b/module/zfs/zfs_dir.c
@@ -28,9 +28,7 @@
#include <sys/types.h>
#include <sys/param.h>
#include <sys/time.h>
-#include <sys/systm.h>
#include <sys/sysmacros.h>
-#include <sys/resource.h>
#include <sys/vfs.h>
#include <sys/vnode.h>
#include <sys/file.h>
@@ -41,7 +39,6 @@
#include <sys/cmn_err.h>
#include <sys/errno.h>
#include <sys/stat.h>
-#include <sys/unistd.h>
#include <sys/sunddi.h>
#include <sys/random.h>
#include <sys/policy.h>
@@ -49,7 +46,6 @@
#include <sys/zfs_acl.h>
#include <sys/zfs_vnops.h>
#include <sys/fs/zfs.h>
-#include "fs/fs_subr.h"
#include <sys/zap.h>
#include <sys/dmu.h>
#include <sys/atomic.h>
@@ -57,8 +53,6 @@
#include <sys/zfs_fuid.h>
#include <sys/sa.h>
#include <sys/zfs_sa.h>
-#include <sys/dnlc.h>
-#include <sys/extdirent.h>
/*
* zfs_match_find() is used by zfs_dirent_lock() to peform zap lookups
diff --git a/module/zfs/zfs_fm.c b/module/zfs/zfs_fm.c
index e28e46e7a..e604f33c8 100644
--- a/module/zfs/zfs_fm.c
+++ b/module/zfs/zfs_fm.c
@@ -1041,7 +1041,7 @@ zfs_post_state_change(spa_t *spa, vdev_t *vd, uint64_t laststate)
#endif
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(zfs_ereport_post);
EXPORT_SYMBOL(zfs_ereport_post_checksum);
EXPORT_SYMBOL(zfs_post_remove);
diff --git a/module/zfs/zfs_fuid.c b/module/zfs/zfs_fuid.c
index 5cfb0c975..e57753593 100644
--- a/module/zfs/zfs_fuid.c
+++ b/module/zfs/zfs_fuid.c
@@ -29,7 +29,6 @@
#include <sys/refcount.h>
#include <sys/nvpair.h>
#ifdef _KERNEL
-#include <sys/kidmap.h>
#include <sys/sid.h>
#include <sys/zfs_vfsops.h>
#include <sys/zfs_znode.h>
diff --git a/module/zfs/zfs_ioctl.c b/module/zfs/zfs_ioctl.c
index eacbf930d..f95b77db7 100644
--- a/module/zfs/zfs_ioctl.c
+++ b/module/zfs/zfs_ioctl.c
@@ -144,12 +144,8 @@
#include <sys/param.h>
#include <sys/errno.h>
#include <sys/uio.h>
-#include <sys/buf.h>
-#include <sys/modctl.h>
-#include <sys/open.h>
#include <sys/file.h>
#include <sys/kmem.h>
-#include <sys/conf.h>
#include <sys/cmn_err.h>
#include <sys/stat.h>
#include <sys/zfs_ioctl.h>
@@ -160,7 +156,6 @@
#include <sys/spa_impl.h>
#include <sys/vdev.h>
#include <sys/vdev_impl.h>
-#include <sys/priv_impl.h>
#include <sys/dmu.h>
#include <sys/dsl_dir.h>
#include <sys/dsl_dataset.h>
@@ -169,14 +164,11 @@
#include <sys/dmu_objset.h>
#include <sys/dmu_impl.h>
#include <sys/dmu_tx.h>
-#include <sys/ddi.h>
#include <sys/sunddi.h>
-#include <sys/sunldi.h>
#include <sys/policy.h>
#include <sys/zone.h>
#include <sys/nvpair.h>
#include <sys/pathname.h>
-#include <sys/mount.h>
#include <sys/sdt.h>
#include <sys/fs/zfs.h>
#include <sys/zfs_ctldir.h>
@@ -184,7 +176,6 @@
#include <sys/zfs_onexit.h>
#include <sys/zvol.h>
#include <sys/dsl_scan.h>
-#include <sharefs/share.h>
#include <sys/fm/util.h>
#include <sys/dsl_crypt.h>
@@ -7115,7 +7106,7 @@ _fini(void)
ZFS_META_VERSION, ZFS_META_RELEASE, ZFS_DEBUG_STR);
}
-#ifdef HAVE_SPL
+#if defined(_KERNEL)
module_init(_init);
module_exit(_fini);
@@ -7123,4 +7114,4 @@ MODULE_DESCRIPTION("ZFS");
MODULE_AUTHOR(ZFS_META_AUTHOR);
MODULE_LICENSE(ZFS_META_LICENSE);
MODULE_VERSION(ZFS_META_VERSION "-" ZFS_META_RELEASE);
-#endif /* HAVE_SPL */
+#endif
diff --git a/module/zfs/zfs_log.c b/module/zfs/zfs_log.c
index ce7b84927..15c396ce0 100644
--- a/module/zfs/zfs_log.c
+++ b/module/zfs/zfs_log.c
@@ -26,7 +26,6 @@
#include <sys/types.h>
#include <sys/param.h>
-#include <sys/systm.h>
#include <sys/sysmacros.h>
#include <sys/cmn_err.h>
#include <sys/kmem.h>
@@ -45,7 +44,6 @@
#include <sys/dmu.h>
#include <sys/spa.h>
#include <sys/zfs_fuid.h>
-#include <sys/ddi.h>
#include <sys/dsl_dataset.h>
/*
@@ -720,7 +718,7 @@ zfs_log_acl(zilog_t *zilog, dmu_tx_t *tx, znode_t *zp,
zil_itx_assign(zilog, itx, tx);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
module_param(zfs_immediate_write_sz, long, 0644);
MODULE_PARM_DESC(zfs_immediate_write_sz, "Largest data block to write to zil");
#endif
diff --git a/module/zfs/zfs_onexit.c b/module/zfs/zfs_onexit.c
index bc3892645..31f77ce81 100644
--- a/module/zfs/zfs_onexit.c
+++ b/module/zfs/zfs_onexit.c
@@ -26,13 +26,9 @@
#include <sys/types.h>
#include <sys/param.h>
#include <sys/errno.h>
-#include <sys/open.h>
#include <sys/kmem.h>
-#include <sys/conf.h>
-#include <sys/ddi.h>
#include <sys/sunddi.h>
#include <sys/zfs_ioctl.h>
-#include <sys/mkdev.h>
#include <sys/zfs_onexit.h>
#include <sys/zvol.h>
diff --git a/module/zfs/zfs_replay.c b/module/zfs/zfs_replay.c
index e2ff00789..ba103084f 100644
--- a/module/zfs/zfs_replay.c
+++ b/module/zfs/zfs_replay.c
@@ -26,7 +26,6 @@
#include <sys/types.h>
#include <sys/param.h>
-#include <sys/systm.h>
#include <sys/sysmacros.h>
#include <sys/cmn_err.h>
#include <sys/kmem.h>
diff --git a/module/zfs/zfs_rlock.c b/module/zfs/zfs_rlock.c
index d7fc01496..7ecc353d2 100644
--- a/module/zfs/zfs_rlock.c
+++ b/module/zfs/zfs_rlock.c
@@ -96,6 +96,7 @@
*/
#include <sys/zfs_rlock.h>
+#include <sys/sysmacros.h>
/*
* Check if a write lock can be grabbed, or wait and recheck until available.
diff --git a/module/zfs/zfs_vfsops.c b/module/zfs/zfs_vfsops.c
index 2577860ac..b890bbaf9 100644
--- a/module/zfs/zfs_vfsops.c
+++ b/module/zfs/zfs_vfsops.c
@@ -27,17 +27,13 @@
#include <sys/types.h>
#include <sys/param.h>
-#include <sys/systm.h>
#include <sys/sysmacros.h>
#include <sys/kmem.h>
#include <sys/pathname.h>
#include <sys/vnode.h>
#include <sys/vfs.h>
-#include <sys/vfs_opreg.h>
#include <sys/mntent.h>
-#include <sys/mount.h>
#include <sys/cmn_err.h>
-#include "fs/fs_subr.h"
#include <sys/zfs_znode.h>
#include <sys/zfs_vnops.h>
#include <sys/zfs_dir.h>
@@ -51,18 +47,12 @@
#include <sys/zap.h>
#include <sys/sa.h>
#include <sys/sa_impl.h>
-#include <sys/varargs.h>
#include <sys/policy.h>
#include <sys/atomic.h>
-#include <sys/mkdev.h>
-#include <sys/modctl.h>
-#include <sys/refstr.h>
#include <sys/zfs_ioctl.h>
#include <sys/zfs_ctldir.h>
#include <sys/zfs_fuid.h>
-#include <sys/bootconf.h>
#include <sys/sunddi.h>
-#include <sys/dnlc.h>
#include <sys/dmu_objset.h>
#include <sys/spa_boot.h>
#include <sys/zpl.h>
@@ -2341,7 +2331,7 @@ zfs_fini(void)
zfsctl_fini();
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(zfs_suspend_fs);
EXPORT_SYMBOL(zfs_resume_fs);
EXPORT_SYMBOL(zfs_userspace_one);
diff --git a/module/zfs/zfs_vnops.c b/module/zfs/zfs_vnops.c
index d7d73201d..832e4bfc9 100644
--- a/module/zfs/zfs_vnops.c
+++ b/module/zfs/zfs_vnops.c
@@ -33,11 +33,8 @@
#include <sys/types.h>
#include <sys/param.h>
#include <sys/time.h>
-#include <sys/systm.h>
#include <sys/sysmacros.h>
-#include <sys/resource.h>
#include <sys/vfs.h>
-#include <sys/vfs_opreg.h>
#include <sys/file.h>
#include <sys/stat.h>
#include <sys/kmem.h>
@@ -45,11 +42,9 @@
#include <sys/uio.h>
#include <sys/vmsystm.h>
#include <sys/atomic.h>
-#include <vm/pvn.h>
#include <sys/pathname.h>
#include <sys/cmn_err.h>
#include <sys/errno.h>
-#include <sys/unistd.h>
#include <sys/zfs_dir.h>
#include <sys/zfs_acl.h>
#include <sys/zfs_ioctl.h>
@@ -61,22 +56,16 @@
#include <sys/dbuf.h>
#include <sys/zap.h>
#include <sys/sa.h>
-#include <sys/dirent.h>
#include <sys/policy.h>
#include <sys/sunddi.h>
#include <sys/sid.h>
#include <sys/mode.h>
-#include "fs/fs_subr.h"
#include <sys/zfs_ctldir.h>
#include <sys/zfs_fuid.h>
#include <sys/zfs_sa.h>
#include <sys/zfs_vnops.h>
-#include <sys/dnlc.h>
#include <sys/zfs_rlock.h>
-#include <sys/extdirent.h>
-#include <sys/kidmap.h>
#include <sys/cred.h>
-#include <sys/attr.h>
#include <sys/zpl.h>
#include <sys/zil.h>
#include <sys/sa_impl.h>
@@ -5234,7 +5223,7 @@ zfs_retzcbuf(struct inode *ip, xuio_t *xuio, cred_t *cr)
}
#endif /* HAVE_UIO_ZEROCOPY */
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(zfs_open);
EXPORT_SYMBOL(zfs_close);
EXPORT_SYMBOL(zfs_read);
diff --git a/module/zfs/zfs_znode.c b/module/zfs/zfs_znode.c
index c8a613f14..bb18c1b9a 100644
--- a/module/zfs/zfs_znode.c
+++ b/module/zfs/zfs_znode.c
@@ -29,24 +29,17 @@
#include <sys/types.h>
#include <sys/param.h>
#include <sys/time.h>
-#include <sys/systm.h>
#include <sys/sysmacros.h>
-#include <sys/resource.h>
#include <sys/mntent.h>
-#include <sys/mkdev.h>
#include <sys/u8_textprep.h>
#include <sys/dsl_dataset.h>
#include <sys/vfs.h>
-#include <sys/vfs_opreg.h>
#include <sys/vnode.h>
#include <sys/file.h>
#include <sys/kmem.h>
#include <sys/errno.h>
-#include <sys/unistd.h>
#include <sys/mode.h>
#include <sys/atomic.h>
-#include <vm/pvn.h>
-#include "fs/fs_subr.h"
#include <sys/zfs_dir.h>
#include <sys/zfs_acl.h>
#include <sys/zfs_ioctl.h>
@@ -56,7 +49,6 @@
#include <sys/zfs_ctldir.h>
#include <sys/dnode.h>
#include <sys/fs/zfs.h>
-#include <sys/kidmap.h>
#include <sys/zpl.h>
#endif /* _KERNEL */
@@ -2243,7 +2235,7 @@ zfs_obj_to_stats(objset_t *osp, uint64_t obj, zfs_stat_t *sb,
return (error);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(zfs_create_fs);
EXPORT_SYMBOL(zfs_obj_to_path);
diff --git a/module/zfs/zil.c b/module/zfs/zil.c
index d0a100252..da3ee4500 100644
--- a/module/zfs/zil.c
+++ b/module/zfs/zil.c
@@ -32,7 +32,6 @@
#include <sys/zap.h>
#include <sys/arc.h>
#include <sys/stat.h>
-#include <sys/resource.h>
#include <sys/zil.h>
#include <sys/zil_impl.h>
#include <sys/dsl_dataset.h>
@@ -3406,7 +3405,7 @@ zil_reset(const char *osname, void *arg)
return (0);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(zil_alloc);
EXPORT_SYMBOL(zil_free);
EXPORT_SYMBOL(zil_open);
diff --git a/module/zfs/zio.c b/module/zfs/zio.c
index 81ae65c31..8a495988b 100644
--- a/module/zfs/zio.c
+++ b/module/zfs/zio.c
@@ -4712,7 +4712,7 @@ zbookmark_subtree_completed(const dnode_phys_t *dnp,
last_block) <= 0);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(zio_type_name);
EXPORT_SYMBOL(zio_buf_alloc);
EXPORT_SYMBOL(zio_data_buf_alloc);
diff --git a/module/zfs/zio_compress.c b/module/zfs/zio_compress.c
index 974af03d1..971e8de8b 100644
--- a/module/zfs/zio_compress.c
+++ b/module/zfs/zio_compress.c
@@ -32,7 +32,6 @@
*/
#include <sys/zfs_context.h>
-#include <sys/compress.h>
#include <sys/spa.h>
#include <sys/zfeature.h>
#include <sys/zio.h>
diff --git a/module/zfs/zio_crypt.c b/module/zfs/zio_crypt.c
index 2e6176782..2533aee13 100644
--- a/module/zfs/zio_crypt.c
+++ b/module/zfs/zio_crypt.c
@@ -2026,7 +2026,7 @@ error:
return (ret);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
/* BEGIN CSTYLED */
module_param(zfs_key_max_salt_uses, ulong, 0644);
MODULE_PARM_DESC(zfs_key_max_salt_uses, "Max number of times a salt value "
diff --git a/module/zfs/zio_inject.c b/module/zfs/zio_inject.c
index 26f255c7b..87d32a115 100644
--- a/module/zfs/zio_inject.c
+++ b/module/zfs/zio_inject.c
@@ -855,7 +855,7 @@ zio_inject_fini(void)
rw_destroy(&inject_lock);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(zio_injection_enabled);
EXPORT_SYMBOL(zio_inject_fault);
EXPORT_SYMBOL(zio_inject_list_next);
diff --git a/module/zfs/zpl_file.c b/module/zfs/zpl_file.c
index e03a0481c..5b6839dd4 100644
--- a/module/zfs/zpl_file.c
+++ b/module/zfs/zpl_file.c
@@ -27,6 +27,7 @@
#ifdef CONFIG_COMPAT
#include <linux/compat.h>
#endif
+#include <sys/file.h>
#include <sys/dmu_objset.h>
#include <sys/zfs_vfsops.h>
#include <sys/zfs_vnops.h>
diff --git a/module/zfs/zpl_xattr.c b/module/zfs/zpl_xattr.c
index ebb6e7be2..09e38ee8b 100644
--- a/module/zfs/zpl_xattr.c
+++ b/module/zfs/zpl_xattr.c
@@ -1498,7 +1498,7 @@ zpl_posix_acl_free(void *arg)
* a is not last node, make sure next pointer is set
* by the adder and advance the head.
*/
- while (ACCESS_ONCE(a->next) == NULL)
+ while (READ_ONCE(a->next) == NULL)
cpu_relax();
acl_rel_head = a->next;
a->next = freelist;
diff --git a/module/zfs/zrlock.c b/module/zfs/zrlock.c
index 4f4854436..014a5cc6c 100644
--- a/module/zfs/zrlock.c
+++ b/module/zfs/zrlock.c
@@ -189,7 +189,7 @@ zrl_owner(zrlock_t *zrl)
}
#endif
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(zrl_add_impl);
EXPORT_SYMBOL(zrl_remove);
diff --git a/rpm/generic/zfs-dkms.spec.in b/rpm/generic/zfs-dkms.spec.in
index 58cbce477..6c800dcb8 100644
--- a/rpm/generic/zfs-dkms.spec.in
+++ b/rpm/generic/zfs-dkms.spec.in
@@ -21,10 +21,10 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildArch: noarch
Requires: dkms >= 2.2.0.3
-Requires: spl-dkms = %{version}
Requires: gcc, make, perl
%if 0%{?rhel}%{?fedora}%{?mageia}%{?suse_version}
Requires: kernel-devel
+Obsoletes: spl-dkms
%endif
Provides: %{module}-kmod = %{version}
AutoReqProv: no
diff --git a/rpm/generic/zfs-kmod.spec.in b/rpm/generic/zfs-kmod.spec.in
index e8d91b4e9..f7f462a11 100644
--- a/rpm/generic/zfs-kmod.spec.in
+++ b/rpm/generic/zfs-kmod.spec.in
@@ -79,13 +79,6 @@ BuildRequires: %{_bindir}/kmodtool
%endif
%endif
-%if 0%{?rhel}%{?fedora}%{?suse_version}
-BuildRequires: kmod-spl-devel = %{version}
-%global KmodsRequires kmod-spl
-%global KmodsDevelRequires kmod-spl-devel
-%global KmodsMetaRequires spl-kmod
-%endif
-
# LDFLAGS are not sanitized by arch/*/Makefile for these architectures.
%ifarch ppc ppc64 ppc64le aarch64
%global __global_ldflags %{nil}
@@ -98,7 +91,7 @@ BuildRequires: kmod-spl-devel = %{version}
# Kmodtool does its magic here. A patched version of kmodtool is shipped
# with the source rpm until kmod development packages are supported upstream.
# https://bugzilla.rpmfusion.org/show_bug.cgi?id=2714
-%{expand:%(bash %{SOURCE10} --target %{_target_cpu} %{?repo:--repo %{?repo}} --kmodname %{name} %{?buildforkernels:--%{buildforkernels}} --devel %{?prefix:--prefix "%{?prefix}"} %{?kernels:--for-kernels "%{?kernels}"} %{?kernelbuildroot:--buildroot "%{?kernelbuildroot}"} 2>/dev/null) }
+%{expand:%(bash %{SOURCE10} --target %{_target_cpu} %{?repo:--repo %{?repo}} --kmodname %{name} %{?buildforkernels:--%{buildforkernels}} --devel %{?prefix:--prefix "%{?prefix}"} %{?kernels:--for-kernels "%{?kernels}"} %{?kernelbuildroot:--buildroot "%{?kernelbuildroot}"} --obsolete-name spl --obsolete-version 0.8 2>/dev/null) }
%description
@@ -109,7 +102,7 @@ This package contains the ZFS kernel modules.
%{?kmodtool_check}
# Print kmodtool output for debugging purposes:
-bash %{SOURCE10} --target %{_target_cpu} %{?repo:--repo %{?repo}} --kmodname %{name} %{?buildforkernels:--%{buildforkernels}} --devel %{?prefix:--prefix "%{?prefix}"} %{?kernels:--for-kernels "%{?kernels}"} %{?kernelbuildroot:--buildroot "%{?kernelbuildroot}"} 2>/dev/null
+bash %{SOURCE10} --target %{_target_cpu} %{?repo:--repo %{?repo}} --kmodname %{name} %{?buildforkernels:--%{buildforkernels}} --devel %{?prefix:--prefix "%{?prefix}"} %{?kernels:--for-kernels "%{?kernels}"} %{?kernelbuildroot:--buildroot "%{?kernelbuildroot}"} --obsolete-name spl --obsolete-version 0.8 2>/dev/null
%if %{with debug}
%define debug --enable-debug
@@ -123,28 +116,6 @@ bash %{SOURCE10} --target %{_target_cpu} %{?repo:--repo %{?repo}} --kmodname %{
%define debuginfo --disable-debuginfo
%endif
-#
-# Allow the overriding of spl locations
-#
-%if %{defined require_splver}
-%define splver %{require_splver}
-%else
-%define splver %{version}
-%endif
-
-%if %{defined require_spldir}
-%define spldir %{require_spldir}
-%else
-%define spldir %{_usrsrc}/spl-%{splver}
-%endif
-
-%if %{defined require_splobj}
-%define splobj %{require_splobj}
-%else
-%define splobj %{spldir}/${kernel_version%%___*}
-%endif
-
-
# Leverage VPATH from configure to avoid making multiple copies.
%define _configure ../%{module}-%{version}/configure
@@ -161,8 +132,6 @@ for kernel_version in %{?kernel_versions}; do
--with-config=kernel \
--with-linux=%{ksrc} \
--with-linux-obj=%{kobj} \
- --with-spl="%{spldir}" \
- --with-spl-obj="%{splobj}" \
%{debug} \
%{debuginfo}
make %{?_smp_mflags}
diff --git a/rpm/generic/zfs.spec.in b/rpm/generic/zfs.spec.in
index e0862b14b..deca786f4 100644
--- a/rpm/generic/zfs.spec.in
+++ b/rpm/generic/zfs.spec.in
@@ -80,13 +80,13 @@ License: @ZFS_META_LICENSE@
URL: http://zfsonlinux.org/
Source0: %{name}-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-Requires: spl = %{version}
Requires: libzpool2 = %{version}
Requires: libnvpair1 = %{version}
Requires: libuutil1 = %{version}
Requires: libzfs2 = %{version}
Requires: %{name}-kmod = %{version}
Provides: %{name}-kmod-common = %{version}
+Obsoletes: spl
# zfs-fuse provides the same commands and man pages that ZoL does. Renaming
# those on either side would conflict with all available documentation.
@@ -396,8 +396,7 @@ systemctl --system daemon-reload >/dev/null || true
%{_datadir}/pkgconfig/libzfs_core.pc
%{_libdir}/*.so
%{_includedir}/*
-%doc AUTHORS COPYRIGHT DISCLAIMER
-%doc OPENSOLARIS.LICENSE README.markdown
+%doc AUTHORS COPYRIGHT LICENSE NOTICE README.md
%files test
%{_datadir}/%{name}
diff --git a/rpm/redhat/zfs-kmod.spec.in b/rpm/redhat/zfs-kmod.spec.in
index f43adba76..28a648418 100644
--- a/rpm/redhat/zfs-kmod.spec.in
+++ b/rpm/redhat/zfs-kmod.spec.in
@@ -10,16 +10,15 @@ Group: System Environment/Kernel
License: @ZFS_META_LICENSE@
URL: http://zfsonlinux.org/
BuildRequires: %kernel_module_package_buildreqs
-BuildRequires: kmod-spl-devel = %{version}
Source0: @PACKAGE@-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
# Additional dependency information for the kmod sub-package must be specified
# by generating a preamble text file which kmodtool can append to the spec file.
%(/bin/echo -e "\
-Requires: spl-kmod\n\
Requires: @PACKAGE@ = %{version}\n\
-Conflicts: @PACKAGE@-dkms\n\n" > %{_sourcedir}/kmod-preamble)
+Conflicts: @PACKAGE@-dkms\n\n" > %{_sourcedir}/kmod-preamble\n\
+Obsoletes: spl-kmod)
# LDFLAGS are not sanitized by arch/*/Makefile for these architectures.
%ifarch ppc ppc64 ppc64le aarch64
@@ -35,17 +34,13 @@ This package contains the ZFS kernel modules.
%define ksrc %{_usrsrc}/kernels/%{kverrel}
%define kobj %{ksrc}
-%define splsrc %{_usrsrc}/spl-%{version}
-%define splobj %{splsrc}/%{kverrel}
%package -n kmod-%{kmod_name}-devel
Summary: ZFS kernel module(s) devel common
Group: System Environment/Kernel
-Requires: kmod-spl-devel = %{version}
%description -n kmod-%{kmod_name}-devel
-This package provides the header files and objects to build kernel modules
-which depend on the spl kernel module.
+This package provides the header files and objects to build kernel modules.
%prep
if ! [ -d "%{ksrc}" ]; then
@@ -71,8 +66,6 @@ fi
--with-config=kernel \
--with-linux=%{ksrc} \
--with-linux-obj=%{kobj} \
- --with-spl="%{splsrc}" \
- --with-spl-obj="%{splobj}" \
%{debug} \
%{debuginfo}
make %{?_smp_mflags}
@@ -91,3 +84,4 @@ rm -rf $RPM_BUILD_ROOT
%files -n kmod-%{kmod_name}-devel
%{_usrsrc}/%{kmod_name}-%{version}
+%{_usrsrc}/spl-%{version}
diff --git a/scripts/Makefile.am b/scripts/Makefile.am
index 093cb1f90..28d618562 100644
--- a/scripts/Makefile.am
+++ b/scripts/Makefile.am
@@ -40,8 +40,7 @@ export INSTALL_MOUNT_HELPER_DIR=@mounthelperdir@
export INSTALL_SYSCONF_DIR=@sysconfdir@
export INSTALL_PYTHON_DIR=@pythonsitedir@
-export KMOD_SPL=@SPL_OBJ@/module/spl/spl.ko
-export KMOD_SPLAT=@SPL_OBJ@/module/splat/splat.ko
+export KMOD_SPL=@abs_top_builddir@/module/spl/spl.ko
export KMOD_ZAVL=@abs_top_builddir@/module/avl/zavl.ko
export KMOD_ZNVPAIR=@abs_top_builddir@/module/nvpair/znvpair.ko
export KMOD_ZUNICODE=@abs_top_builddir@/module/unicode/zunicode.ko
diff --git a/scripts/dkms.mkconf b/scripts/dkms.mkconf
index fbbdc5cdb..c40d0e828 100755
--- a/scripts/dkms.mkconf
+++ b/scripts/dkms.mkconf
@@ -42,9 +42,6 @@ PRE_BUILD="configure
esac
)
--with-linux-obj=\${kernel_source_dir}
- --with-spl=\${source_tree}/spl-\${PACKAGE_VERSION}
- --with-spl-obj=\${dkms_tree}/spl/\${PACKAGE_VERSION}/\${kernelver}/\${arch}
- --with-spl-timeout=300
\$(
[[ -n \"\${ICP_ROOT}\" ]] && \\
{
@@ -71,7 +68,6 @@ POST_BUILD="scripts/dkms.postbuild
-k \${kernelver}
-t \${dkms_tree}
"
-BUILD_DEPENDS[0]="spl"
AUTOINSTALL="yes"
REMAKE_INITRD="no"
MAKE[0]="make"
@@ -88,6 +84,7 @@ STRIP[3]="\${STRIP[0]}"
STRIP[4]="\${STRIP[0]}"
STRIP[5]="\${STRIP[0]}"
STRIP[6]="\${STRIP[0]}"
+STRIP[7]="\${STRIP[0]}"
BUILT_MODULE_NAME[0]="zavl"
BUILT_MODULE_LOCATION[0]="module/avl/"
DEST_MODULE_LOCATION[0]="/extra/avl/avl"
@@ -109,4 +106,7 @@ DEST_MODULE_LOCATION[5]="/extra/icp/icp"
BUILT_MODULE_NAME[6]="zlua"
BUILT_MODULE_LOCATION[6]="module/lua/"
DEST_MODULE_LOCATION[6]="/extra/lua/zlua"
+BUILT_MODULE_NAME[7]="spl"
+BUILT_MODULE_LOCATION[7]="module/spl/"
+DEST_MODULE_LOCATION[7]="/extra/spl/spl"
EOF
diff --git a/scripts/kmodtool b/scripts/kmodtool
index ce3f04294..27a14cdac 100755
--- a/scripts/kmodtool
+++ b/scripts/kmodtool
@@ -237,10 +237,16 @@ the ${kmodname}-devel-<kernel> objects for the newest kernel.
%defattr(644,root,root,755)
%{_usrsrc}/${kmodname}-%{version}
EOF
+ if [[ ${obsolete_name} ]]; then
+ echo "%{_usrsrc}/${obsolete_name}-%{version}"
+ fi
for kernel in ${1}; do
local kernel_uname_r=${kernel}
echo "%exclude %{_usrsrc}/${kmodname}-%{version}/${kernel_uname_r}"
+ if [[ ${obsolete_name} ]]; then
+ echo "%exclude %{_usrsrc}/${obsolete_name}-%{version}/${kernel_uname_r}"
+ fi
done
echo
@@ -295,9 +301,10 @@ kernel ${kernel_uname_r} for the %{_target_cpu} family of processors.
%files -n kmod-${kmodname}-devel-${kernel_uname_r}
%defattr(644,root,root,755)
%{_usrsrc}/${kmodname}-%{version}/${kernel_uname_r}
-
-
EOF
+ if [[ ${obsolete_name} ]]; then
+ echo "%{_usrsrc}/${obsolete_name}-%{version}/${kernel_uname_r}"
+ fi
}
print_rpmtemplate_kmodmetapkg ()
diff --git a/scripts/zfs.sh b/scripts/zfs.sh
index 185eb5279..5ff181fb9 100755
--- a/scripts/zfs.sh
+++ b/scripts/zfs.sh
@@ -21,7 +21,6 @@ LDMOD=${LDMOD:-/sbin/modprobe}
KMOD_ZLIB_DEFLATE=${KMOD_ZLIB_DEFLATE:-zlib_deflate}
KMOD_ZLIB_INFLATE=${KMOD_ZLIB_INFLATE:-zlib_inflate}
KMOD_SPL=${KMOD_SPL:-spl}
-KMOD_SPLAT=${KMOD_SPLAT:-splat}
KMOD_ZAVL=${KMOD_ZAVL:-zavl}
KMOD_ZNVPAIR=${KMOD_ZNVPAIR:-znvpair}
KMOD_ZUNICODE=${KMOD_ZUNICODE:-zunicode}
@@ -76,7 +75,7 @@ check_modules() {
LOADED_MODULES=""
MISSING_MODULES=""
- for KMOD in $KMOD_SPL $KMOD_SPLAT $KMOD_ZAVL $KMOD_ZNVPAIR \
+ for KMOD in $KMOD_SPL $KMOD_ZAVL $KMOD_ZNVPAIR \
$KMOD_ZUNICODE $KMOD_ZCOMMON $KMOD_ZLUA $KMOD_ICP $KMOD_ZFS; do
NAME=$(basename "$KMOD" .ko)
@@ -135,7 +134,7 @@ load_modules() {
modprobe "$KMOD_ZLIB_INFLATE" >/dev/null 2>&1
fi
- for KMOD in $KMOD_SPL $KMOD_SPLAT $KMOD_ZAVL $KMOD_ZNVPAIR \
+ for KMOD in $KMOD_SPL $KMOD_ZAVL $KMOD_ZNVPAIR \
$KMOD_ZUNICODE $KMOD_ZCOMMON $KMOD_ZLUA $KMOD_ICP $KMOD_ZFS; do
load_module "$KMOD" || return 1
done
@@ -165,7 +164,7 @@ unload_module() {
unload_modules() {
for KMOD in $KMOD_ZFS $KMOD_ICP $KMOD_ZLUA $KMOD_ZCOMMON $KMOD_ZUNICODE \
- $KMOD_ZNVPAIR $KMOD_ZAVL $KMOD_SPLAT $KMOD_SPL; do
+ $KMOD_ZNVPAIR $KMOD_ZAVL $KMOD_SPL; do
NAME=$(basename "$KMOD" .ko)
USE_COUNT=$(lsmod | grep -E "^${NAME} " | awk '{print $3}')
diff --git a/scripts/zimport.sh b/scripts/zimport.sh
index 61c9aba4a..426c329c9 100755
--- a/scripts/zimport.sh
+++ b/scripts/zimport.sh
@@ -42,9 +42,7 @@
# --------------------- ZFS on Linux Source Versions --------------
# zfs-0.6.2 master 0.6.2-175_g36eb554
# -----------------------------------------------------------------
-# Clone SPL Local Local Skip
# Clone ZFS Local Local Skip
-# Build SPL Pass Pass Skip
# Build ZFS Pass Pass Skip
# -----------------------------------------------------------------
# zevo-1.1.1 Pass Pass Pass
@@ -190,7 +188,6 @@ trap 'rm -Rf "$SRC_DIR"' INT TERM EXIT
populate "$SRC_DIR" 10 100
SRC_DIR="$TEST_DIR/src"
-SRC_DIR_SPL="$SRC_DIR/spl"
SRC_DIR_ZFS="$SRC_DIR/zfs"
if [ "$COLOR" = "no" ]; then
@@ -224,9 +221,6 @@ fail() {
#
# Set several helper variables which are derived from a source tag.
#
-# SPL_TAG - The tag zfs-x.y.z is translated to spl-x.y.z.
-# SPL_DIR - The spl directory name.
-# SPL_URL - The spl github URL to fetch the tarball.
# ZFS_TAG - The passed zfs-x.y.z tag
# ZFS_DIR - The zfs directory name
# ZFS_URL - The zfs github URL to fetch the tarball
@@ -234,10 +228,6 @@ fail() {
src_set_vars() {
local TAG=$1
- SPL_TAG="${TAG//zfs/spl}"
- SPL_DIR="$SRC_DIR_SPL/$SPL_TAG"
- SPL_URL="$REPO/spl/tarball/$SPL_TAG"
-
ZFS_TAG="$TAG"
ZFS_DIR="$SRC_DIR_ZFS/$ZFS_TAG"
ZFS_URL="$REPO/zfs/tarball/$ZFS_TAG"
@@ -397,43 +387,6 @@ echo -e "\n-----------------------------------------------------------------"
# Attempt to generate the tarball from your local git repository, if that
# fails then attempt to download the tarball from Github.
#
-printf "%-16s" "Clone SPL"
-for TAG in $SRC_TAGS; do
- src_set_vars "$TAG"
-
- if [ -d "$SPL_DIR" ]; then
- skip_nonewline
- elif [ "$SPL_TAG" = "installed" ]; then
- skip_nonewline
- else
- cd "$SRC_DIR" || fail "Failed 'cd $SRC_DIR'"
-
- if [ ! -d "$SRC_DIR_SPL" ]; then
- mkdir -p "$SRC_DIR_SPL"
- fi
-
- git archive --format=tar --prefix="$SPL_TAG/ $SPL_TAG" \
- -o "$SRC_DIR_SPL/$SPL_TAG.tar" &>/dev/null || \
- rm "$SRC_DIR_SPL/$SPL_TAG.tar"
- if [ -s "$SRC_DIR_SPL/$SPL_TAG.tar" ]; then
- tar -xf "$SRC_DIR_SPL/$SPL_TAG.tar" -C "$SRC_DIR_SPL"
- rm "$SRC_DIR_SPL/$SPL_TAG.tar"
- echo -n -e "${COLOR_GREEN}Local${COLOR_RESET}\t\t"
- else
- mkdir -p "$SPL_DIR" || fail "Failed to create $SPL_DIR"
- curl -sL "$SPL_URL" | tar -xz -C "$SPL_DIR" \
- --strip-components=1 || \
- fail "Failed to download $SPL_URL"
- echo -n -e "${COLOR_GREEN}Remote${COLOR_RESET}\t\t"
- fi
- fi
-done
-printf "\n"
-
-#
-# Attempt to generate the tarball from your local git repository, if that
-# fails then attempt to download the tarball from Github.
-#
printf "%-16s" "Clone ZFS"
for TAG in $SRC_TAGS; do
src_set_vars "$TAG"
@@ -468,31 +421,6 @@ done
printf "\n"
# Build the listed tags
-printf "%-16s" "Build SPL"
-for TAG in $SRC_TAGS; do
- src_set_vars "$TAG"
-
- if [ -f "$SPL_DIR/module/spl/spl.ko" ]; then
- skip_nonewline
- elif [ "$SPL_TAG" = "installed" ]; then
- skip_nonewline
- else
- cd "$SPL_DIR" || fail "Failed 'cd $SPL_DIR'"
- make distclean &>/dev/null
- ./autogen.sh >>"$CONFIG_LOG" 2>&1 || \
- fail "Failed SPL 'autogen.sh'"
- # shellcheck disable=SC2086
- ./configure $CONFIG_OPTIONS >>"$CONFIG_LOG" 2>&1 || \
- fail "Failed SPL 'configure $CONFIG_OPTIONS'"
- # shellcheck disable=SC2086
- make $MAKE_OPTIONS >>"$MAKE_LOG" 2>&1 || \
- fail "Failed SPL 'make $MAKE_OPTIONS'"
- pass_nonewline
- fi
-done
-printf "\n"
-
-# Build the listed tags
printf "%-16s" "Build ZFS"
for TAG in $SRC_TAGS; do
src_set_vars "$TAG"
@@ -507,8 +435,7 @@ for TAG in $SRC_TAGS; do
./autogen.sh >>"$CONFIG_LOG" 2>&1 || \
fail "Failed ZFS 'autogen.sh'"
# shellcheck disable=SC2086
- ./configure --with-spl="$SPL_DIR" $CONFIG_OPTIONS \
- >>"$CONFIG_LOG" 2>&1 || \
+ ./configure $CONFIG_OPTIONS >>"$CONFIG_LOG" 2>&1 || \
fail "Failed ZFS 'configure $CONFIG_OPTIONS'"
# shellcheck disable=SC2086
make $MAKE_OPTIONS >>"$MAKE_LOG" 2>&1 || \
diff --git a/tests/zfs-tests/tests/functional/checksum/edonr_test.c b/tests/zfs-tests/tests/functional/checksum/edonr_test.c
index 1ea8e991e..a2a924e5d 100644
--- a/tests/zfs-tests/tests/functional/checksum/edonr_test.c
+++ b/tests/zfs-tests/tests/functional/checksum/edonr_test.c
@@ -36,8 +36,9 @@
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
+#include <sys/note.h>
#include <sys/time.h>
-#define NOTE(x)
+
typedef enum boolean { B_FALSE, B_TRUE } boolean_t;
typedef unsigned long long u_longlong_t;