diff --git a/AUTHORS b/AUTHORS index cf5c808e3e..8314a1c214 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 + Brian Behlendorf + Tony Hutter -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 -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 - Anurag Agarwal - Neependra Khare - Prasad Joshi - Rohan Puri - Sandip Divekar - Shoaib - Shrirang - -Additionally the following individuals have all made contributions -to the project and deserve to be acknowledged. - - Albert Lee - Alejandro R. Sedeño - Alex Zhuravlev - Alexander Eremin - Alexander Stetsenko - Alexey Shvetsov - Andreas Dilger - Andrew Reid - Andrew Stormont - Andrew Tselischev - Andriy Gapon - Aniruddha Shankar - Bill Pijewski - Chris Dunlap - Chris Dunlop - Chris Siden - Chris Wedgwood - Christian Kohlschütter - Christopher Siden - Craig Sanders - Cyril Plisko - Dan McDonald - Daniel Verite - Darik Horn - Eric Schrock - Etienne Dechamps - Fajar A. Nugraha - Frederik Wessels - Garrett D'Amore - George Wilson - Gordon Ross - Gregor Kopka - Gunnar Beutner - James H - Javen Wu - Jeremy Gill - Jorgen Lundman - KORN Andras - Kyle Fuller - Manuel Amador (Rudd-O) - Martin Matuska - Massimo Maggi - Matthew Ahrens - Michael Martin - Mike Harsch - Ned Bass - Oleg Stepura - P.SCH - Pawel Jakub Dawidek - Prakash Surya - Prasad Joshi - Ricardo M. Correia - Richard Laager - Richard Lowe - Richard Yao - Rohan Puri - Shampavman - Simon Klinkert - Suman Chakravartula - Tim Haley - Turbo Fredriksson - Xin Li - Yuxuan Shui - Zachary Bedell - nordaux + Aaron Fineman + Adam Leventhal + Adam Stevko + Ahmed G + Akash Ayare + Alan Somers + Alar Aun + Albert Lee + Alec Salazar + Alejandro R. Sedeño + Alek Pinchuk + Alex Braunegg + Alex McWhirter + Alex Reece + Alex Wilson + Alex Zhuravlev + Alexander Eremin + Alexander Motin + Alexander Pyhalov + Alexander Stetsenko + Alexey Shvetsov + Alexey Smirnoff + Allan Jude + AndCycle + Andreas Buschmann + Andreas Dilger + Andrew Barnes + Andrew Hamilton + Andrew Reid + Andrew Stormont + Andrew Tselischev + Andrey Vesnovaty + Andriy Gapon + Andy Bakun + Aniruddha Shankar + Antonio Russo + Arkadiusz Bubała + Arne Jansen + Aron Xu + Bart Coddens + Basil Crow + Huang Liu + Ben Allen + Ben Rubson + Benjamin Albrecht + Bill McGonigle + Bill Pijewski + Boris Protopopov + Brad Lewis + Brian Behlendorf + Brian J. Murrell + Caleb James DeLisle + Cao Xuewen + Carlo Landmeter + Carlos Alberto Lopez Perez + Chaoyu Zhang + Chen Can + Chen Haiquan + Chip Parker + Chris Burroughs + Chris Dunlap + Chris Dunlop + Chris Siden + Chris Wedgwood + Chris Williamson + Chris Zubrzycki + Christ Schlacta + Christer Ekholm + Christian Kohlschütter + Christian Neukirchen + Christian Schwarz + Christopher Voltz + Chunwei Chen + Clemens Fruhwirth + Colin Ian King + Craig Loomis + Craig Sanders + Cyril Plisko + DHE + Damian Wojsław + Dan Kimmel + Dan McDonald + Dan Swartzendruber + Dan Vatca + Daniel Hoffman + Daniel Verite + Daniil Lunev + Darik Horn + Dave Eddy + David Lamparter + David Qian + David Quigley + Debabrata Banerjee + Denys Rtveliashvili + Derek Dai + Dimitri John Ledkov + Dmitry Khasanov + Dominik Hassler + Dominik Honnef + Don Brady + Dr. András Korn + Eli Rosenthal + Eric Desrochers + Eric Dillmann + Eric Schrock + Etienne Dechamps + Evan Susarret + Fabian Grünbichler + Fajar A. Nugraha + Fan Yong + Feng Sun + Frederik Wessels + Frédéric Vanniere + Garrett D'Amore + Garrison Jensen + Gary Mills + Gaurav Kumar + GeLiXin + George Amanakis + George Melikov + George Wilson + Georgy Yakovlev + Giuseppe Di Natale + Gordan Bobic + Gordon Ross + Gregor Kopka + Grischa Zengel + Gunnar Beutner + Gvozden Neskovic + Hajo Möller + Hans Rosenfeld + Håkan Johansson + Igor Kozhukhov + Igor Lvovsky + Isaac Huang + JK Dingwall + Jacek Fefliński + James Cowgill + James Lee + James Pan + Jan Engelhardt + Jan Kryl + Jan Sanislo + Jason King + Jason Zaman + Javen Wu + Jeremy Gill + Jeremy Jones + Jerry Jelinek + Jinshan Xiong + Joe Stein + John Albietz + John Eismeier + John L. Hammond + John Layman + John Paul Adrian Glaubitz + John Wren Kennedy + Johnny Stenback + Jorgen Lundman + Josef 'Jeff' Sipek + Joshua M. Clulow + Justin Bedő + Justin Lecher + Justin T. Gibbs + Jörg Thalheim + KORN Andras + Kamil Domański + Karsten Kretschmer + Kash Pande + Keith M Wesolowski + Kevin Tanguy + KireinaHoro + Kohsuke Kawaguchi + Kyle Blatter + Kyle Fuller + Loli + Lars Johannsen + Li Dongyang + Li Wei + Lukas Wunner + Madhav Suresh + Manoj Joseph + Manuel Amador (Rudd-O) + Marcel Huber + Marcel Telka + Marcel Wysocki + Mark Shellenbaum + Mark Wright + Martin Matuska + Massimo Maggi + Matt Johnston + Matt Kemp + Matthew Ahrens + Matthew Thode + Matus Kral + Max Grossman + Maximilian Mehnert + Michael Gebetsroither + Michael Kjorling + Michael Martin + Mike Gerdts + Mike Harsch + Mike Leddy + Mike Swanson + Milan Jurik + Morgan Jones + Moritz Maxeiner + Nathaniel Clark + Nathaniel Wesley Filardo + Nav Ravindranath + Neal Gompa (ニール・ゴンパ) + Ned Bass + Neependra Khare + Neil Stockbridge + Nick Garvey + Nikolay Borisov + Olaf Faaland + Oleg Drokin + Oleg Stepura + Patrik Greco + Paul B. Henson + Paul Dagnelie + Paul Zuchowski + Pavel Boldin + Pavel Zakharov + Pawel Jakub Dawidek + Pedro Giffuni + Peng + Peter Ashford + Prakash Surya + Prasad Joshi + Ralf Ertzinger + Randall Mason + Remy Blank + Ricardo M. Correia + Rich Ercolani + Richard Elling + Richard Laager + Richard Lowe + Richard Sharpe + Richard Yao + Rohan Puri + Romain Dolbeau + Roman Strashkin + Ruben Kerkhof + Saso Kiselkov + Scot W. Stevenson + Sean Eric Fagan + Sen Haerens + Serapheim Dimitropoulos + Seth Forshee + Shampavman + Shen Yan + Simon Guest + Simon Klinkert + Sowrabha Gopal + Stanislav Seletskiy + Steffen Müthing + Stephen Blinick + Steve Dougherty + Steven Burgess + Steven Hartland + Steven Johnson + Stian Ellingsen + Suman Chakravartula + Sydney Vanda + Sören Tempel + Thijs Cramer + Tim Chase + Tim Connors + Tim Crawford + Tim Haley + Tobin Harding + Tom Caputi + Tom Matthews + Tom Prince + Tomohiro Kusumi + Tony Hutter + Toomas Soome + Trey Dockendorf + Turbo Fredriksson + Tyler J. Stachecki + Vitaut Bajaryn + Weigang Li + Will Andrews + Will Rouesnel + Wolfgang Bumiller + Xin Li + Ying Zhu + YunQiang Su + Yuri Pankov + Yuxuan Shui + Zachary Bedell diff --git a/COPYRIGHT b/COPYRIGHT index 9b94f927fe..54fbceade1 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: +Refer to the git commit log for authoritative copyright attribution. -http://dlc.sun.com/osol/on/downloads/b121/on-src.tar.bz2 +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: -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: - -http://zfsonlinux.org/ - -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 a0af1efe17..0000000000 --- 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 similarity index 100% rename from OPENSOLARIS.LICENSE rename to LICENSE diff --git a/Makefile.am b/Makefile.am index 20f7903287..669231c074 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 0000000000..3218920390 --- /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 similarity index 86% rename from README.markdown rename to README.md index b650805f1c..49b3bfe462 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 4c593a4570..ebe6ef963f 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 47f2a9ed9e..d0d65fb943 100644 --- a/cmd/mount_zfs/mount_zfs.c +++ b/cmd/mount_zfs/mount_zfs.c @@ -34,6 +34,7 @@ #include #include #include +#include #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 bb8db6af58..0b27f6702e 100644 --- a/cmd/zed/agents/zfs_diagnosis.c +++ b/cmd/zed/agents/zfs_diagnosis.c @@ -26,6 +26,7 @@ */ #include +#include #include #include #include diff --git a/cmd/zed/agents/zfs_mod.c b/cmd/zed/agents/zfs_mod.c index 54568e75ad..600d6527c0 100644 --- a/cmd/zed/agents/zfs_mod.c +++ b/cmd/zed/agents/zfs_mod.c @@ -85,6 +85,7 @@ #include #include #include +#include #include "zfs_agents.h" #include "../zed_log.h" diff --git a/cmd/zfs/zfs_iter.c b/cmd/zfs/zfs_iter.c index aeb98ab646..af4e4b4d2d 100644 --- a/cmd/zfs/zfs_iter.c +++ b/cmd/zfs/zfs_iter.c @@ -31,6 +31,7 @@ #include #include #include +#include #include #include diff --git a/config/kernel-ctl-table-name.m4 b/config/kernel-ctl-table-name.m4 index 8dd2e77cb9..3ce499968f 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 ],[ struct ctl_table ctl __attribute__ ((unused)); diff --git a/config/kernel-fallocate-pax.m4 b/config/kernel-fallocate-pax.m4 index ac75a4c8e1..e8948be176 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 ],[ 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 4db2bba5c9..849a1e246a 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 ],[ struct group_info *gi = groups_alloc(1); diff --git a/config/kernel-inode-lock.m4 b/config/kernel-inode-lock.m4 index 2cc06a5ec3..8dee014227 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 ],[ struct inode *inode = NULL; diff --git a/config/kernel-kmem-cache.m4 b/config/kernel-kmem-cache.m4 index 50a7fdb4b5..21cc53d349 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 ],[ 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 ],[ 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 static void ctor(void *foo) { diff --git a/config/kernel-kuidgid.m4 b/config/kernel-kuidgid.m4 index 47d193783c..82685d2636 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 ], [ - 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 ], [ - 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 6aa5765c32..8aa4c2204e 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 ], [ PDE_DATA(NULL); diff --git a/config/kernel-rw.m4 b/config/kernel-rw.m4 index 23c14b70fd..1c8a265e0a 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 ],[ 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 ],[ struct file *file = NULL; diff --git a/config/kernel-rwsem.m4 b/config/kernel-rwsem.m4 index aee20ae901..532c227181 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 ],[ 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 ],[ 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 ],[ DECLARE_RWSEM(dummy_semaphore); diff --git a/config/kernel-sched.m4 b/config/kernel-sched.m4 index 5ae21676ed..640b008aab 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 #include ],[ @@ -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 #include ],[ @@ -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 ], [ (void) io_schedule_timeout(1); diff --git a/config/kernel-set-fs-pwd.m4 b/config/kernel-set-fs-pwd.m4 index 849e7e6cbf..d5565b42cb 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 #include #include @@ -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 #include #include diff --git a/config/kernel-shrink.m4 b/config/kernel-shrink.m4 index a57c2afb0b..37da0ec721 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 + + 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 + + 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 + + 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 + + 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 + ],[ + 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 6fc9b5422a..0000000000 --- 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 - - 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 - - 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 - - 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 - - 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 - ],[ - 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 136262d0e6..d6d6640070 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 #include ],[ diff --git a/config/kernel-timer.m4 b/config/kernel-timer.m4 index 93b5158b97..4dc3f84ed4 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 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 d1ac2f3c83..0000000000 --- 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 85beca6dde..b5764de3ed 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 ],[ usleep_range(0, 0); diff --git a/config/kernel-vfs-fsync.m4 b/config/kernel-vfs-fsync.m4 index 3c42bf1a03..a474f9f174 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 ],[ vfs_fsync(NULL, 0); diff --git a/config/kernel-vfs-getattr.m4 b/config/kernel-vfs-getattr.m4 index 7772cb514c..b13723538f 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 ],[ 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 ],[ 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 ],[ vfs_getattr((struct vfsmount *)NULL, diff --git a/config/kernel-wait.m4 b/config/kernel-wait.m4 index 5f718a160f..d6442c1df6 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 ],[ 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 ],[ 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 #ifdef HAVE_WAIT_QUEUE_ENTRY_T diff --git a/config/kernel-zlib.m4 b/config/kernel-zlib.m4 index bb236466a8..3ca7cf682d 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 ],[ return zlib_deflate_workspacesize(MAX_WBITS, MAX_MEM_LEVEL); diff --git a/config/kernel.m4 b/config/kernel.m4 index e3daeffa81..8151cdc224 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 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 "; - 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 # @@ -672,6 +506,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 # diff --git a/config/zfs-build.m4 b/config/zfs-build.m4 index 49a4096d68..1d47b03848 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 3e1429d99d..aa0fc14209 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 a57724c13a..e171e785f6 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 795025b380..02c0926c32 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 23e15dac4b..5f13505f27 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 89c2689f6f..efb49520e6 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 f99980ab3e..c42cdd37a4 100644 --- a/include/linux/blkdev_compat.h +++ b/include/linux/blkdev_compat.h @@ -32,6 +32,7 @@ #include #include #include +#include #ifndef HAVE_FMODE_T typedef unsigned __bitwise__ fmode_t; diff --git a/lib/libspl/include/attr.h b/include/linux/compiler_compat.h similarity index 75% rename from lib/libspl/include/attr.h rename to include/linux/compiler_compat.h index da1671a756..921d32f246 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. + */ -#endif /* _LIBSPL_ATTR_H */ +#ifndef _ZFS_COMPILER_COMPAT_H +#define _ZFS_COMPILER_COMPAT_H + +#include + +#if !defined(READ_ONCE) +#define READ_ONCE(x) ACCESS_ONCE(x) +#endif + +#endif /* _ZFS_COMPILER_COMPAT_H */ diff --git a/include/spl/Makefile.am b/include/spl/Makefile.am new file mode 100644 index 0000000000..bd781c08f1 --- /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 0000000000..5110cc0f0c --- /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 0000000000..d58ed0e20b --- /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 a4a4580666..692d6c61ec 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 similarity index 60% rename from lib/libspl/include/sys/compress.h rename to include/spl/sys/errno.h index 282f178ba9..6015b1a3e2 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 + +#define ENOTSUP EOPNOTSUPP + +#endif /* _SYS_ERRNO_H */ diff --git a/include/spl/sys/mutex.h b/include/spl/sys/mutex.h index f906d49d4a..ed0cd4932c 100644 --- a/include/spl/sys/mutex.h +++ b/include/spl/sys/mutex.h @@ -28,6 +28,7 @@ #include #include #include +#include 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 b44ceab667..088e28b443 100644 --- a/include/spl/sys/rwlock.h +++ b/include/spl/sys/rwlock.h @@ -27,6 +27,7 @@ #include #include +#include /* Linux kernel compatibility */ #if defined(CONFIG_PREEMPT_RT_FULL) diff --git a/include/spl/sys/sysmacros.h b/include/spl/sys/sysmacros.h index 839e7fd8c4..e4bd80aa13 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 a5b478127a..3bb3ed3e25 100644 --- a/include/spl/sys/types.h +++ b/include/spl/sys/types.h @@ -28,11 +28,11 @@ #include #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 a3f7828e74..d3b903f13a 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 e73be52f3e..06306b8764 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 cd71050137..077bb9d176 100644 --- a/include/sys/abd.h +++ b/include/sys/abd.h @@ -27,7 +27,6 @@ #define _ABD_H #include -#include #include #include #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 74aef3a922..78031f7c15 100644 --- a/include/sys/fm/protocol.h +++ b/include/sys/fm/protocol.h @@ -31,7 +31,6 @@ extern "C" { #endif #ifdef _KERNEL -#include #include #else #include diff --git a/lib/libspl/include/sys/note.h b/include/sys/note.h similarity index 98% rename from lib/libspl/include/sys/note.h rename to include/sys/note.h index 6625b68d9e..33b5476686 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 d2dfad5ca2..a840c4b05b 100644 --- a/include/sys/nvpair.h +++ b/include/sys/nvpair.h @@ -29,11 +29,6 @@ #include #include #include -#include - -#if defined(_KERNEL) && !defined(_BOOT) -#include -#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 1c919454d8..68610c496b 100644 --- a/include/sys/xvattr.h +++ b/include/sys/xvattr.h @@ -40,6 +40,7 @@ #define _SYS_XVATTR_H #include +#include #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 37bdc533c4..170a909b4e 100644 --- a/include/sys/zfs_context.h +++ b/include/sys/zfs_context.h @@ -32,31 +32,25 @@ #include #include -#include #include #include -#include +#include +#include #include #include #include #include #include -#include #include -#include -#include #include -#include #include #include #include +#include #include -#include #include #include -#include #include -#include #include #include #include @@ -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 b56a7daa7c..40e617dba9 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 +#include /* * Generic wrapper to sleep until a given time. diff --git a/include/sys/zfs_fuid.h b/include/sys/zfs_fuid.h index 0feb3ce4bb..5c56f7fccc 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 #include #include #include diff --git a/include/sys/zfs_znode.h b/include/sys/zfs_znode.h index 311babe591..3f2bd1fbb1 100644 --- a/include/sys/zfs_znode.h +++ b/include/sys/zfs_znode.h @@ -30,7 +30,6 @@ #ifdef _KERNEL #include #include -#include #include #include #include diff --git a/include/sys/zpl.h b/include/sys/zpl.h index 65ed431360..5df7bd1ac9 100644 --- a/include/sys/zpl.h +++ b/include/sys/zpl.h @@ -31,7 +31,6 @@ #include #include #include -#include #include #include #include diff --git a/lib/libefi/rdwr_efi.c b/lib/libefi/rdwr_efi.c index e8a5ddd318..455fe527da 100644 --- a/lib/libefi/rdwr_efi.c +++ b/lib/libefi/rdwr_efi.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include diff --git a/lib/libnvpair/libnvpair.c b/lib/libnvpair/libnvpair.c index 0cf38c9505..2e9ea1c174 100644 --- a/lib/libnvpair/libnvpair.c +++ b/lib/libnvpair/libnvpair.c @@ -28,8 +28,8 @@ #include #include #include +#include #include -#include #include "libnvpair.h" /* diff --git a/lib/libshare/nfs.c b/lib/libshare/nfs.c index 0cfd42c1af..5c8976e15a 100644 --- a/lib/libshare/nfs.c +++ b/lib/libshare/nfs.c @@ -26,8 +26,10 @@ */ #include +#include #include #include +#include #include #include #include diff --git a/lib/libshare/smb.c b/lib/libshare/smb.c index 76145bd931..ffae5699c0 100644 --- a/lib/libshare/smb.c +++ b/lib/libshare/smb.c @@ -48,6 +48,7 @@ #include #include #include +#include #include #include #include diff --git a/lib/libspl/include/Makefile.am b/lib/libspl/include/Makefile.am index 7882c1b9c6..7f4098a16a 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 cb6b33e1d9..0000000000 --- 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 - -#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 9c67e14b07..e7af317e0c 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 similarity index 53% rename from lib/libspl/include/sys/systm.h rename to lib/libspl/include/sys/stdtypes.h index 1ed031d4e8..c26e2dc96c 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 -#endif /* _LIBSPL_SYS_SYSTM_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 /* __SYS_STDTYPES_H */ diff --git a/lib/libspl/include/strings.h b/lib/libspl/include/sys/strings.h similarity index 92% rename from lib/libspl/include/strings.h rename to lib/libspl/include/sys/strings.h index 3f35af4a4f..c142047dcd 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 -#include_next +#include #endif diff --git a/lib/libspl/include/sys/sysmacros.h b/lib/libspl/include/sys/sysmacros.h index 31f347c6fd..22fcb04b94 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 7fb53730f8..ea02ffac93 100644 --- a/lib/libspl/include/sys/types.h +++ b/lib/libspl/include/sys/types.h @@ -38,40 +38,15 @@ #include_next #include #include +#include #ifndef HAVE_INTTYPES #include - -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 9ab3b0782f..bb41aa34be 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 #ifdef __cplusplus diff --git a/lib/libspl/include/umem.h b/lib/libspl/include/umem.h index 5b10ac801d..59dc931442 100644 --- a/lib/libspl/include/umem.h +++ b/lib/libspl/include/umem.h @@ -39,6 +39,7 @@ #include #include +#include #ifdef __cplusplus extern "C" { diff --git a/lib/libuutil/uu_dprintf.c b/lib/libuutil/uu_dprintf.c index d51fa81e89..6958057b29 100644 --- a/lib/libuutil/uu_dprintf.c +++ b/lib/libuutil/uu_dprintf.c @@ -33,6 +33,7 @@ #include #include #include +#include #include #define FACILITY_FMT "%s (%s): " diff --git a/lib/libzfs/libzfs_diff.c b/lib/libzfs/libzfs_diff.c index 249334acd9..fb7a1fcf41 100644 --- a/lib/libzfs/libzfs_diff.c +++ b/lib/libzfs/libzfs_diff.c @@ -37,7 +37,6 @@ #include #include #include -#include #include #include #include @@ -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 96910119c1..11d300b700 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 . .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 4746914c59..1c0683ee30 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 4cd6988bba..82d155dd31 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 f024cdf61c..736dcee845 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 + static int __init avl_init(void) { diff --git a/module/icp/algs/edonr/edonr.c b/module/icp/algs/edonr/edonr.c index 8ae9898908..7c677095f1 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 -#else -#include -#endif +#include #include #include diff --git a/module/icp/algs/edonr/edonr_byteorder.h b/module/icp/algs/edonr/edonr_byteorder.h index d17e8f1fd4..532dfd7434 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 #include #if defined(__BYTE_ORDER) diff --git a/module/icp/algs/skein/skein.c b/module/icp/algs/skein/skein.c index 0981eee089..0187f7be6c 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 #include -#include #include /* 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 e83a06971b..ea834e6199 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 +#include +#include #include "skein_impl.h" #include "skein_port.h" -/* determine where we can get bcopy/bzero declarations */ -#ifdef _KERNEL -#include -#else -#include -#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 1b02252369..4fe268bb5a 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 /* get integer type definitions */ -#include /* 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 2585b7feda..1c9f6873e2 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 3f90674b0a..b9b9cb74e0 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 b58d3b4528..87090fd527 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 2b4691c037..21ab94fa5b 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 09d50f7be1..c0f415b264 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 a3986a2e5c..c2fcf1ff72 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 cb748a954e..544814a984 100644 --- a/module/icp/io/edonr_mod.c +++ b/module/icp/io/edonr_mod.c @@ -27,7 +27,6 @@ #include #include #include -#include #include /* diff --git a/module/icp/io/skein_mod.c b/module/icp/io/skein_mod.c index 90e8a6a025..88215fe89b 100644 --- a/module/icp/io/skein_mod.c +++ b/module/icp/io/skein_mod.c @@ -27,7 +27,6 @@ #include #include #include -#include #define SKEIN_MODULE_IMPL #include diff --git a/module/lua/lapi.c b/module/lua/lapi.c index 54c74d38e9..81969673b9 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 85ed00c64e..1e0356e7c0 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 004a1939d2..854649a0fb 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 af8bea6951..0300e7ee17 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 24a3321bde..49ba70fafd 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 d01b5ba076..be5b6375e4 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 a91b9524d8..ce151d6920 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 512f9a9984..97ab7de40e 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 #include #include -#include #include #include -#include +#include +#include #include -#if defined(_KERNEL) && !defined(_BOOT) -#include -#include +#if defined(_KERNEL) #include #include #else #include #include -#include -#include #include #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 0d4e12b972..c8a604a2bf 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 #include #include #include -#if defined(_KERNEL) && !defined(_BOOT) -#include -#else -#include -#include -#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 0000000000..97a431f22f --- /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 0000000000..57f635aed8 --- /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 f0060bbdcd..1e6e38b787 100644 --- a/module/spl/spl-condvar.c +++ b/module/spl/spl-condvar.c @@ -27,6 +27,7 @@ #include #include #include +#include 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 6b71296e8a..4c8f818a9c 100644 --- a/module/spl/spl-err.c +++ b/module/spl/spl-err.c @@ -26,7 +26,6 @@ #include #include -#include /* * 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 b38fe254cf..7c1ad390be 100644 --- a/module/spl/spl-generic.c +++ b/module/spl/spl-generic.c @@ -46,12 +46,13 @@ #include #include -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 e0d551041f..1fdb61e6fc 100644 --- a/module/spl/spl-kmem.c +++ b/module/spl/spl-kmem.c @@ -27,7 +27,6 @@ #include #include #include -#include /* * As a general rule kmem_alloc() allocations should be small, preferably @@ -134,12 +133,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 @@ -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 9a992cc3ab..cf03bc593f 100644 --- a/module/spl/spl-rwlock.c +++ b/module/spl/spl-rwlock.c @@ -25,6 +25,7 @@ */ #include +#include #if defined(CONFIG_PREEMPT_RT_FULL) diff --git a/module/spl/spl-taskq.c b/module/spl/spl-taskq.c index 2919a942a1..7684257be7 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 28ce21276e..aebee0a826 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 2cc3e2a036..1dd31ffc14 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 0330032fa0..4e6105b2e8 100644 --- a/module/unicode/u8_textprep.c +++ b/module/unicode/u8_textprep.c @@ -36,18 +36,13 @@ */ #include -#ifdef _KERNEL +#include #include #include -#include #include #include -#include #include -#else #include -#include -#endif /* _KERNEL */ #include #include #include @@ -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 7a82783226..d812d5f969 100644 --- a/module/unicode/uconv.c +++ b/module/unicode/uconv.c @@ -38,7 +38,6 @@ #ifdef _KERNEL #include #include -#include #include #include #include @@ -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 6ab3abe119..ea1bccf509 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 -#else +#ifndef _KERNEL #include #include #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 685a20c448..b31e0ab274 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 -#else +#if !defined(_KERNEL) #include #endif #include #include -#include #include #include "zfs_comutil.h" #include @@ -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 c6ba278cff..8d98f720a6 100644 --- a/module/zcommon/zfs_deleg.c +++ b/module/zcommon/zfs_deleg.c @@ -28,16 +28,15 @@ #include #if defined(_KERNEL) -#include #include #include #else #include #include -#include #include #include #endif +#include #include #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 0cd992979c..5a991ba607 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 static int diff --git a/module/zcommon/zfs_fletcher_aarch64_neon.c b/module/zcommon/zfs_fletcher_aarch64_neon.c index b72c1bafd2..bd2db2b20f 100644 --- a/module/zcommon/zfs_fletcher_aarch64_neon.c +++ b/module/zcommon/zfs_fletcher_aarch64_neon.c @@ -45,8 +45,8 @@ #include #include +#include #include -#include 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 ed93c11592..7260a9864b 100644 --- a/module/zcommon/zfs_fletcher_avx512.c +++ b/module/zcommon/zfs_fletcher_avx512.c @@ -28,8 +28,8 @@ #include #include #include +#include #include -#include #define __asm __asm__ __volatile__ diff --git a/module/zcommon/zfs_fletcher_intel.c b/module/zcommon/zfs_fletcher_intel.c index a479b9d569..6dac047dad 100644 --- a/module/zcommon/zfs_fletcher_intel.c +++ b/module/zcommon/zfs_fletcher_intel.c @@ -44,8 +44,8 @@ #include #include +#include #include -#include 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 90b7d7d4ef..a0b42e5f5f 100644 --- a/module/zcommon/zfs_fletcher_sse.c +++ b/module/zcommon/zfs_fletcher_sse.c @@ -46,8 +46,8 @@ #include #include #include +#include #include -#include 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 02c5d53c7d..fbbbf80603 100644 --- a/module/zcommon/zfs_fletcher_superscalar.c +++ b/module/zcommon/zfs_fletcher_superscalar.c @@ -43,8 +43,8 @@ #include #include +#include #include -#include 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 4fd37d91c4..97fdb7b7d3 100644 --- a/module/zcommon/zfs_fletcher_superscalar4.c +++ b/module/zcommon/zfs_fletcher_superscalar4.c @@ -43,8 +43,8 @@ #include #include +#include #include -#include 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 42a7c6c93b..aefde90876 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 -#else +#if !defined(_KERNEL) #include #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 34b7228ec9..698fb8e214 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 -#else +#if !defined(_KERNEL) #include #include #include @@ -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 7b4175bbee..af9716126f 100644 --- a/module/zcommon/zfs_uio.c +++ b/module/zcommon/zfs_uio.c @@ -49,6 +49,8 @@ #include #include +#include +#include #include /* diff --git a/module/zcommon/zpool_prop.c b/module/zcommon/zpool_prop.c index fd21f31176..bc38eca7de 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 -#else +#if !defined(_KERNEL) #include #include #include @@ -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 a4528d248e..838988a4cd 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 -#include +#include +#define qsort(base, num, size, cmp) \ + sort(base, num, size, cmp, NULL) #else #include #include @@ -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 0bd7a262f7..555e8c1d25 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 6662e0fae3..be9964bff2 100644 --- a/module/zfs/arc.c +++ b/module/zfs/arc.c @@ -292,11 +292,9 @@ #include #include #ifdef _KERNEL +#include #include -#include -#include #include -#include #include #endif #include @@ -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 bc03317a26..a8c48167ad 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 6c26718f2d..84232338fc 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 681033d717..f7fe2ae808 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 fc9cfec045..77c0784cca 100644 --- a/module/zfs/ddt_zap.c +++ b/module/zfs/ddt_zap.c @@ -29,7 +29,6 @@ #include #include #include -#include 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 2d2586a8c6..32a8fd319a 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 1fc71d1036..21e8e5a947 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 b6371d3823..92de370573 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 cffcd2d00e..a5f468ac8d 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 861769b406..374bb710c0 100644 --- a/module/zfs/dmu_tx.c +++ b/module/zfs/dmu_tx.c @@ -37,7 +37,6 @@ #include #include #include -#include #include 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 e22560ed1d..2133518ff4 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 9823f3183d..7a4721e17f 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 f17cedb082..cef460f020 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 e11508c90d..b3296ceee3 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 a866c3074d..4b85208d87 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 094b6bec01..1bb49c13ae 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 57b8eb7941..9f892acdbf 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 c19a1b75cd..2c34947461 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 28130d2571..d8eb10d376 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 52d4acaa23..5c30066700 100644 --- a/module/zfs/fm.c +++ b/module/zfs/fm.c @@ -57,7 +57,6 @@ #include #include #include -#include #include #include #include @@ -67,10 +66,6 @@ #ifdef _KERNEL #include #include -#include -#include -#include -#include #include #include #include diff --git a/module/zfs/gzip.c b/module/zfs/gzip.c index 40166b3fe5..5cac2a7de6 100644 --- a/module/zfs/gzip.c +++ b/module/zfs/gzip.c @@ -28,22 +28,19 @@ #include #include +#include #include "qat.h" #ifdef _KERNEL -#include #include - typedef size_t zlen_t; #define compress_func z_compress_level #define uncompress_func z_uncompress #else /* _KERNEL */ -#include #include - 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 9f0065b532..c11e459e0f 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 f51952ee40..6fd5d3e9a4 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 static int diff --git a/module/zfs/multilist.c b/module/zfs/multilist.c index 48137b3fc1..2a594c56cb 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 4ec1320661..e3e97c9bb3 100644 --- a/module/zfs/pathname.c +++ b/module/zfs/pathname.c @@ -38,9 +38,9 @@ #include -#include #include #include +#include /* * Pathname utilities. diff --git a/module/zfs/sa.c b/module/zfs/sa.c index 4a863f9a56..5b6b90642d 100644 --- a/module/zfs/sa.c +++ b/module/zfs/sa.c @@ -28,7 +28,6 @@ #include #include #include -#include #include #include #include diff --git a/module/zfs/spa.c b/module/zfs/spa.c index dba6efe7be..50862adcd9 100644 --- a/module/zfs/spa.c +++ b/module/zfs/spa.c @@ -85,11 +85,7 @@ #ifdef _KERNEL #include #include -#include #include -#include -#include -#include #include #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 50bba23454..b94f0fc844 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 1299faa58b..e42f8a0212 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 511bf10942..969fdb000d 100644 --- a/module/zfs/spa_history.c +++ b/module/zfs/spa_history.c @@ -183,11 +183,7 @@ 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 234e5c60d8..288e5378b0 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 diff --git a/module/zfs/spa_stats.c b/module/zfs/spa_stats.c index f604836c82..3f137d9c75 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 2c7f5303b1..30f2515730 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 7bb27f0ec7..388be36179 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 0570ceb2e6..0f1d9448b5 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 9c3a1ba802..5cdfd960c8 100644 --- a/module/zfs/vdev_disk.c +++ b/module/zfs/vdev_disk.c @@ -33,7 +33,6 @@ #include #include #include -#include #include char *zfs_vdev_scheduler = VDEV_SCHEDULER; diff --git a/module/zfs/vdev_indirect.c b/module/zfs/vdev_indirect.c index ff0968384c..a93e412589 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 a0163b2e5d..1c44a64287 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 dbd6a7635b..d91f233836 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 1c591cd647..65357d8418 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 3ac31a8727..4f29d0043b 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 ba4dcc480d..e6112bc021 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 static int diff --git a/module/zfs/vdev_removal.c b/module/zfs/vdev_removal.c index 07c556ed05..f9084e8cf6 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 791cbee888..6ab2551b62 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 31230dc52b..e7194344b7 100644 --- a/module/zfs/zcp.c +++ b/module/zfs/zcp.c @@ -100,7 +100,6 @@ #include #include #include -#include #ifndef KM_NORMALPRI #define KM_NORMALPRI 0 diff --git a/module/zfs/zfs_acl.c b/module/zfs/zfs_acl.c index 9fee474451..b1af4da2f4 100644 --- a/module/zfs/zfs_acl.c +++ b/module/zfs/zfs_acl.c @@ -27,9 +27,7 @@ #include #include #include -#include #include -#include #include #include #include @@ -38,7 +36,6 @@ #include #include #include -#include #include #include #include @@ -54,7 +51,6 @@ #include #include #include -#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 16327a2250..7893bde4e2 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 2b7272d4ff..f0720e58a1 100644 --- a/module/zfs/zfs_ctldir.c +++ b/module/zfs/zfs_ctldir.c @@ -71,11 +71,9 @@ #include #include #include -#include #include #include #include -#include #include #include #include @@ -85,7 +83,6 @@ #include #include #include -#include #include #include "zfs_namecheck.h" diff --git a/module/zfs/zfs_dir.c b/module/zfs/zfs_dir.c index 7eb426b781..8a591904f6 100644 --- a/module/zfs/zfs_dir.c +++ b/module/zfs/zfs_dir.c @@ -28,9 +28,7 @@ #include #include #include -#include #include -#include #include #include #include @@ -41,7 +39,6 @@ #include #include #include -#include #include #include #include @@ -49,7 +46,6 @@ #include #include #include -#include "fs/fs_subr.h" #include #include #include @@ -57,8 +53,6 @@ #include #include #include -#include -#include /* * 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 e28e46e7ad..e604f33c83 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 5cfb0c975c..e57753593c 100644 --- a/module/zfs/zfs_fuid.c +++ b/module/zfs/zfs_fuid.c @@ -29,7 +29,6 @@ #include #include #ifdef _KERNEL -#include #include #include #include diff --git a/module/zfs/zfs_ioctl.c b/module/zfs/zfs_ioctl.c index eacbf930d5..f95b77db72 100644 --- a/module/zfs/zfs_ioctl.c +++ b/module/zfs/zfs_ioctl.c @@ -144,12 +144,8 @@ #include #include #include -#include -#include -#include #include #include -#include #include #include #include @@ -160,7 +156,6 @@ #include #include #include -#include #include #include #include @@ -169,14 +164,11 @@ #include #include #include -#include #include -#include #include #include #include #include -#include #include #include #include @@ -184,7 +176,6 @@ #include #include #include -#include #include #include @@ -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 ce7b84927e..15c396ce03 100644 --- a/module/zfs/zfs_log.c +++ b/module/zfs/zfs_log.c @@ -26,7 +26,6 @@ #include #include -#include #include #include #include @@ -45,7 +44,6 @@ #include #include #include -#include #include /* @@ -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 bc3892645f..31f77ce81b 100644 --- a/module/zfs/zfs_onexit.c +++ b/module/zfs/zfs_onexit.c @@ -26,13 +26,9 @@ #include #include #include -#include #include -#include -#include #include #include -#include #include #include diff --git a/module/zfs/zfs_replay.c b/module/zfs/zfs_replay.c index e2ff007893..ba103084f0 100644 --- a/module/zfs/zfs_replay.c +++ b/module/zfs/zfs_replay.c @@ -26,7 +26,6 @@ #include #include -#include #include #include #include diff --git a/module/zfs/zfs_rlock.c b/module/zfs/zfs_rlock.c index d7fc014968..7ecc353d26 100644 --- a/module/zfs/zfs_rlock.c +++ b/module/zfs/zfs_rlock.c @@ -96,6 +96,7 @@ */ #include +#include /* * 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 2577860acb..b890bbaf94 100644 --- a/module/zfs/zfs_vfsops.c +++ b/module/zfs/zfs_vfsops.c @@ -27,17 +27,13 @@ #include #include -#include #include #include #include #include #include -#include #include -#include #include -#include "fs/fs_subr.h" #include #include #include @@ -51,18 +47,12 @@ #include #include #include -#include #include #include -#include -#include -#include #include #include #include -#include #include -#include #include #include #include @@ -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 d7d73201db..832e4bfc9b 100644 --- a/module/zfs/zfs_vnops.c +++ b/module/zfs/zfs_vnops.c @@ -33,11 +33,8 @@ #include #include #include -#include #include -#include #include -#include #include #include #include @@ -45,11 +42,9 @@ #include #include #include -#include #include #include #include -#include #include #include #include @@ -61,22 +56,16 @@ #include #include #include -#include #include #include #include #include -#include "fs/fs_subr.h" #include #include #include #include -#include #include -#include -#include #include -#include #include #include #include @@ -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 c8a613f14f..bb18c1b9a3 100644 --- a/module/zfs/zfs_znode.c +++ b/module/zfs/zfs_znode.c @@ -29,24 +29,17 @@ #include #include #include -#include #include -#include #include -#include #include #include #include -#include #include #include #include #include -#include #include #include -#include -#include "fs/fs_subr.h" #include #include #include @@ -56,7 +49,6 @@ #include #include #include -#include #include #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 d0a1002525..da3ee45000 100644 --- a/module/zfs/zil.c +++ b/module/zfs/zil.c @@ -32,7 +32,6 @@ #include #include #include -#include #include #include #include @@ -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 81ae65c319..8a495988b2 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 974af03d12..971e8de8b5 100644 --- a/module/zfs/zio_compress.c +++ b/module/zfs/zio_compress.c @@ -32,7 +32,6 @@ */ #include -#include #include #include #include diff --git a/module/zfs/zio_crypt.c b/module/zfs/zio_crypt.c index 2e61767829..2533aee139 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 26f255c7b2..87d32a1155 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 e03a0481cf..5b6839dd47 100644 --- a/module/zfs/zpl_file.c +++ b/module/zfs/zpl_file.c @@ -27,6 +27,7 @@ #ifdef CONFIG_COMPAT #include #endif +#include #include #include #include diff --git a/module/zfs/zpl_xattr.c b/module/zfs/zpl_xattr.c index ebb6e7be2c..09e38ee8bd 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 4f4854436e..014a5cc6c7 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 58cbce477b..6c800dcb87 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 e8d91b4e94..f7f462a11d 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 e0862b14b6..deca786f44 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 f43adba762..28a6484180 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 093cb1f90d..28d6185628 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 fbbdc5cdb1..c40d0e828d 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 ce3f042947..27a14cdac2 100755 --- a/scripts/kmodtool +++ b/scripts/kmodtool @@ -237,10 +237,16 @@ the ${kmodname}-devel- 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 185eb5279a..5ff181fb9e 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 61c9aba4a6..426c329c9e 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" @@ -393,43 +383,6 @@ for TAG in $SRC_TAGS; do done 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. @@ -467,31 +420,6 @@ for TAG in $SRC_TAGS; do 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 @@ -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 1ea8e991e9..a2a924e5d8 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 #include #include +#include #include -#define NOTE(x) + typedef enum boolean { B_FALSE, B_TRUE } boolean_t; typedef unsigned long long u_longlong_t;