summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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;