-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 <behlendorf1@llnl.gov>
+ Brian Behlendorf <behlendorf1@llnl.gov>
+ Tony Hutter <hutter2@llnl.gov>
-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 <bass6@llnl.gov>
-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 <mitra@kqinfotech.com>
- Anurag Agarwal <anurag@kqinfotech.com>
- Neependra Khare <neependra@kqinfotech.com>
- Prasad Joshi <prasad@kqinfotech.com>
- Rohan Puri <rohan@kqinfotech.com>
- Sandip Divekar <sandipd@kqinfotech.com>
- Shoaib <shoaib@kqinfotech.com>
- Shrirang <shrirang@kqinfotech.com>
-
-Additionally the following individuals have all made contributions
-to the project and deserve to be acknowledged.
-
- Albert Lee <trisk@nexenta.com>
- Alejandro R. Sedeño <asedeno@mit.edu>
- Alex Zhuravlev <bzzz@whamcloud.com>
- Alexander Eremin <a.eremin@nexenta.com>
- Alexander Stetsenko <ams@nexenta.com>
- Alexey Shvetsov <alexxy@gentoo.org>
- Andreas Dilger <adilger@whamcloud.com>
- Andrew Reid <ColdCanuck@nailedtotheperch.com>
- Andrew Stormont <andrew.stormont@nexenta.com>
- Andrew Tselischev <andrewtselischev@gmail.com>
- Andriy Gapon <avg@FreeBSD.org>
- Aniruddha Shankar <k@191a.net>
- Bill Pijewski <wdp@joyent.com>
- Chris Dunlap <cdunlap@llnl.gov>
- Chris Dunlop <chris@onthe.net.au>
- Chris Siden <chris.siden@delphix.com>
- Chris Wedgwood <cw@f00f.org>
- Christian Kohlschütter <christian@kohlschutter.com>
- Christopher Siden <chris.siden@delphix.com>
- Craig Sanders <github@taz.net.au>
- Cyril Plisko <cyril.plisko@mountall.com>
- Dan McDonald <danmcd@nexenta.com>
- Daniel Verite <daniel@verite.pro>
- Darik Horn <dajhorn@vanadac.com>
- Eric Schrock <Eric.Schrock@delphix.com>
- Etienne Dechamps <etienne.dechamps@ovh.net>
- Fajar A. Nugraha <github@fajar.net>
- Frederik Wessels <wessels147@gmail.com>
- Garrett D'Amore <garrett@nexenta.com>
- George Wilson <george.wilson@delphix.com>
- Gordon Ross <gwr@nexenta.com>
- Gregor Kopka <mailfrom-github.com@kopka.net>
- Gunnar Beutner <gunnar@beutner.name>
- James H <james@kagisoft.co.uk>
- Javen Wu <wu.javen@gmail.com>
- Jeremy Gill <jgill@parallax-innovations.com>
- Jorgen Lundman <lundman@lundman.net>
- KORN Andras <korn@elan.rulez.org>
- Kyle Fuller <inbox@kylefuller.co.uk>
- Manuel Amador (Rudd-O) <rudd-o@rudd-o.com>
- Martin Matuska <mm@FreeBSD.org>
- Massimo Maggi <massimo@mmmm.it>
- Matthew Ahrens <mahrens@delphix.com>
- Michael Martin <mgmartin.mgm@gmail.com>
- Mike Harsch <mike@harschsystems.com>
- Ned Bass <bass6@llnl.gov>
- Oleg Stepura <oleg@stepura.com>
- P.SCH <p88@yahoo.com>
- Pawel Jakub Dawidek <pawel@dawidek.net>
- Prakash Surya <surya1@llnl.gov>
- Prasad Joshi <pjoshi@stec-inc.com>
- Ricardo M. Correia <Ricardo.M.Correia@Sun.COM>
- Richard Laager <rlaager@wiktel.com>
- Richard Lowe <richlowe@richlowe.net>
- Richard Yao <ryao@cs.stonybrook.edu>
- Rohan Puri <rohan.puri15@gmail.com>
- Shampavman <sham.pavman@nexenta.com>
- Simon Klinkert <klinkert@webgods.de>
- Suman Chakravartula <suman@gogrid.com>
- Tim Haley <Tim.Haley@Sun.COM>
- Turbo Fredriksson <turbo@bayour.com>
- Xin Li <delphij@FreeBSD.org>
- Yuxuan Shui <yshuiv7@gmail.com>
- Zachary Bedell <zac@thebedells.org>
- nordaux <nordaux@gmail.com>
+ Aaron Fineman <abyxcos@gmail.com>
+ Adam Leventhal <ahl@delphix.com>
+ Adam Stevko <adam.stevko@gmail.com>
+ Ahmed G <ahmedg@delphix.com>
+ Akash Ayare <aayare@delphix.com>
+ Alan Somers <asomers@gmail.com>
+ Alar Aun <spamtoaun@gmail.com>
+ Albert Lee <trisk@nexenta.com>
+ Alec Salazar <alec.j.salazar@gmail.com>
+ Alejandro R. Sedeño <asedeno@mit.edu>
+ Alek Pinchuk <alek@nexenta.com>
+ Alex Braunegg <alex.braunegg@gmail.com>
+ Alex McWhirter <alexmcwhirter@triadic.us>
+ Alex Reece <alex@delphix.com>
+ Alex Wilson <alex.wilson@joyent.com>
+ Alex Zhuravlev <alexey.zhuravlev@intel.com>
+ Alexander Eremin <a.eremin@nexenta.com>
+ Alexander Motin <mav@freebsd.org>
+ Alexander Pyhalov <apyhalov@gmail.com>
+ Alexander Stetsenko <ams@nexenta.com>
+ Alexey Shvetsov <alexxy@gentoo.org>
+ Alexey Smirnoff <fling@member.fsf.org>
+ Allan Jude <allanjude@freebsd.org>
+ AndCycle <andcycle@andcycle.idv.tw>
+ Andreas Buschmann <andreas.buschmann@tech.net.de>
+ Andreas Dilger <adilger@intel.com>
+ Andrew Barnes <barnes333@gmail.com>
+ Andrew Hamilton <ahamilto@tjhsst.edu>
+ Andrew Reid <ColdCanuck@nailedtotheperch.com>
+ Andrew Stormont <andrew.stormont@nexenta.com>
+ Andrew Tselischev <andrewtselischev@gmail.com>
+ Andrey Vesnovaty <andrey.vesnovaty@gmail.com>
+ Andriy Gapon <avg@freebsd.org>
+ Andy Bakun <github@thwartedefforts.org>
+ Aniruddha Shankar <k@191a.net>
+ Antonio Russo <antonio.e.russo@gmail.com>
+ Arkadiusz Bubała <arkadiusz.bubala@open-e.com>
+ Arne Jansen <arne@die-jansens.de>
+ Aron Xu <happyaron.xu@gmail.com>
+ Bart Coddens <bart.coddens@gmail.com>
+ Basil Crow <basil.crow@delphix.com>
+ Huang Liu <liu.huang@zte.com.cn>
+ Ben Allen <bsallen@alcf.anl.gov>
+ Ben Rubson <ben.rubson@gmail.com>
+ Benjamin Albrecht <git@albrecht.io>
+ Bill McGonigle <bill-github.com-public1@bfccomputing.com>
+ Bill Pijewski <wdp@joyent.com>
+ Boris Protopopov <boris.protopopov@nexenta.com>
+ Brad Lewis <brad.lewis@delphix.com>
+ Brian Behlendorf <behlendorf1@llnl.gov>
+ Brian J. Murrell <brian@sun.com>
+ Caleb James DeLisle <calebdelisle@lavabit.com>
+ Cao Xuewen <cao.xuewen@zte.com.cn>
+ Carlo Landmeter <clandmeter@gmail.com>
+ Carlos Alberto Lopez Perez <clopez@igalia.com>
+ Chaoyu Zhang <zhang.chaoyu@zte.com.cn>
+ Chen Can <chen.can2@zte.com.cn>
+ Chen Haiquan <oc@yunify.com>
+ Chip Parker <aparker@enthought.com>
+ Chris Burroughs <chris.burroughs@gmail.com>
+ Chris Dunlap <cdunlap@llnl.gov>
+ Chris Dunlop <chris@onthe.net.au>
+ Chris Siden <chris.siden@delphix.com>
+ Chris Wedgwood <cw@f00f.org>
+ Chris Williamson <chris.williamson@delphix.com>
+ Chris Zubrzycki <github@mid-earth.net>
+ Christ Schlacta <aarcane@aarcane.info>
+ Christer Ekholm <che@chrekh.se>
+ Christian Kohlschütter <christian@kohlschutter.com>
+ Christian Neukirchen <chneukirchen@gmail.com>
+ Christian Schwarz <me@cschwarz.com>
+ Christopher Voltz <cjunk@voltz.ws>
+ Chunwei Chen <david.chen@nutanix.com>
+ Clemens Fruhwirth <clemens@endorphin.org>
+ Colin Ian King <colin.king@canonical.com>
+ Craig Loomis <cloomis@astro.princeton.edu>
+ Craig Sanders <github@taz.net.au>
+ Cyril Plisko <cyril.plisko@infinidat.com>
+ DHE <git@dehacked.net>
+ Damian Wojsław <damian@wojslaw.pl>
+ Dan Kimmel <dan.kimmel@delphix.com>
+ Dan McDonald <danmcd@nexenta.com>
+ Dan Swartzendruber <dswartz@druber.com>
+ Dan Vatca <dan.vatca@gmail.com>
+ Daniel Hoffman <dj.hoffman@delphix.com>
+ Daniel Verite <daniel@verite.pro>
+ Daniil Lunev <d.lunev.mail@gmail.com>
+ Darik Horn <dajhorn@vanadac.com>
+ Dave Eddy <dave@daveeddy.com>
+ David Lamparter <equinox@diac24.net>
+ David Qian <david.qian@intel.com>
+ David Quigley <david.quigley@intel.com>
+ Debabrata Banerjee <dbanerje@akamai.com>
+ Denys Rtveliashvili <denys@rtveliashvili.name>
+ Derek Dai <daiderek@gmail.com>
+ Dimitri John Ledkov <xnox@ubuntu.com>
+ Dmitry Khasanov <pik4ez@gmail.com>
+ Dominik Hassler <hadfl@omniosce.org>
+ Dominik Honnef <dominikh@fork-bomb.org>
+ Don Brady <don.brady@delphix.com>
+ Dr. András Korn <korn-github.com@elan.rulez.org>
+ Eli Rosenthal <eli.rosenthal@delphix.com>
+ Eric Desrochers <eric.desrochers@canonical.com>
+ Eric Dillmann <eric@jave.fr>
+ Eric Schrock <Eric.Schrock@delphix.com>
+ Etienne Dechamps <etienne@edechamps.fr>
+ Evan Susarret <evansus@gmail.com>
+ Fabian Grünbichler <f.gruenbichler@proxmox.com>
+ Fajar A. Nugraha <github@fajar.net>
+ Fan Yong <fan.yong@intel.com>
+ Feng Sun <loyou85@gmail.com>
+ Frederik Wessels <wessels147@gmail.com>
+ Frédéric Vanniere <f.vanniere@planet-work.com>
+ Garrett D'Amore <garrett@nexenta.com>
+ Garrison Jensen <garrison.jensen@gmail.com>
+ Gary Mills <gary_mills@fastmail.fm>
+ Gaurav Kumar <gauravk.18@gmail.com>
+ GeLiXin <ge.lixin@zte.com.cn>
+ George Amanakis <g_amanakis@yahoo.com>
+ George Melikov <mail@gmelikov.ru>
+ George Wilson <gwilson@delphix.com>
+ Georgy Yakovlev <ya@sysdump.net>
+ Giuseppe Di Natale <guss80@gmail.com>
+ Gordan Bobic <gordan@redsleeve.org>
+ Gordon Ross <gwr@nexenta.com>
+ Gregor Kopka <gregor@kopka.net>
+ Grischa Zengel <github.zfsonlinux@zengel.info>
+ Gunnar Beutner <gunnar@beutner.name>
+ Gvozden Neskovic <neskovic@gmail.com>
+ Hajo Möller <dasjoe@gmail.com>
+ Hans Rosenfeld <hans.rosenfeld@nexenta.com>
+ HÃ¥kan Johansson <f96hajo@chalmers.se>
+ Igor Kozhukhov <ikozhukhov@gmail.com>
+ Igor Lvovsky <ilvovsky@gmail.com>
+ Isaac Huang <he.huang@intel.com>
+ JK Dingwall <james@dingwall.me.uk>
+ Jacek Fefliński <feflik@gmail.com>
+ James Cowgill <james.cowgill@mips.com>
+ James Lee <jlee@thestaticvoid.com>
+ James Pan <jiaming.pan@yahoo.com>
+ Jan Engelhardt <jengelh@inai.de>
+ Jan Kryl <jan.kryl@nexenta.com>
+ Jan Sanislo <oystr@cs.washington.edu>
+ Jason King <jason.brian.king@gmail.com>
+ Jason Zaman <jasonzaman@gmail.com>
+ Javen Wu <wu.javen@gmail.com>
+ Jeremy Gill <jgill@parallax-innovations.com>
+ Jeremy Jones <jeremy@delphix.com>
+ Jerry Jelinek <jerry.jelinek@joyent.com>
+ Jinshan Xiong <jinshan.xiong@intel.com>
+ Joe Stein <joe.stein@delphix.com>
+ John Albietz <inthecloud247@gmail.com>
+ John Eismeier <john.eismeier@gmail.com>
+ John L. Hammond <john.hammond@intel.com>
+ John Layman <jlayman@sagecloud.com>
+ John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
+ John Wren Kennedy <john.kennedy@delphix.com>
+ Johnny Stenback <github@jstenback.com>
+ Jorgen Lundman <lundman@lundman.net>
+ Josef 'Jeff' Sipek <josef.sipek@nexenta.com>
+ Joshua M. Clulow <josh@sysmgr.org>
+ Justin Bedő <cu@cua0.org>
+ Justin Lecher <jlec@gentoo.org>
+ Justin T. Gibbs <gibbs@FreeBSD.org>
+ Jörg Thalheim <joerg@higgsboson.tk>
+ KORN Andras <korn@elan.rulez.org>
+ Kamil Domański <kamil@domanski.co>
+ Karsten Kretschmer <kkretschmer@gmail.com>
+ Kash Pande <kash@tripleback.net>
+ Keith M Wesolowski <wesolows@foobazco.org>
+ Kevin Tanguy <kevin.tanguy@ovh.net>
+ KireinaHoro <i@jsteward.moe>
+ Kohsuke Kawaguchi <kk@kohsuke.org>
+ Kyle Blatter <kyleblatter@llnl.gov>
+ Kyle Fuller <inbox@kylefuller.co.uk>
+ Loli <ezomori.nozomu@gmail.com>
+ Lars Johannsen <laj@it.dk>
+ Li Dongyang <dongyang.li@anu.edu.au>
+ Li Wei <W.Li@Sun.COM>
+ Lukas Wunner <lukas@wunner.de>
+ Madhav Suresh <madhav.suresh@delphix.com>
+ Manoj Joseph <manoj.joseph@delphix.com>
+ Manuel Amador (Rudd-O) <rudd-o@rudd-o.com>
+ Marcel Huber <marcelhuberfoo@gmail.com>
+ Marcel Telka <marcel.telka@nexenta.com>
+ Marcel Wysocki <maci.stgn@gmail.com>
+ Mark Shellenbaum <Mark.Shellenbaum@Oracle.COM>
+ Mark Wright <markwright@internode.on.net>
+ Martin Matuska <mm@FreeBSD.org>
+ Massimo Maggi <me@massimo-maggi.eu>
+ Matt Johnston <matt@fugro-fsi.com.au>
+ Matt Kemp <matt@mattikus.com>
+ Matthew Ahrens <matt@delphix.com>
+ Matthew Thode <mthode@mthode.org>
+ Matus Kral <matuskral@me.com>
+ Max Grossman <max.grossman@delphix.com>
+ Maximilian Mehnert <maximilian.mehnert@gmx.de>
+ Michael Gebetsroither <michael@mgeb.org>
+ Michael Kjorling <michael@kjorling.se>
+ Michael Martin <mgmartin.mgm@gmail.com>
+ Mike Gerdts <mike.gerdts@joyent.com>
+ Mike Harsch <mike@harschsystems.com>
+ Mike Leddy <mike.leddy@gmail.com>
+ Mike Swanson <mikeonthecomputer@gmail.com>
+ Milan Jurik <milan.jurik@xylab.cz>
+ Morgan Jones <mjones@rice.edu>
+ Moritz Maxeiner <moritz@ucworks.org>
+ Nathaniel Clark <Nathaniel.Clark@misrule.us>
+ Nathaniel Wesley Filardo <nwf@cs.jhu.edu>
+ Nav Ravindranath <nav@delphix.com>
+ Neal Gompa (ニール・ゴンパ) <ngompa13@gmail.com>
+ Ned Bass <bass6@llnl.gov>
+ Neependra Khare <neependra@kqinfotech.com>
+ Neil Stockbridge <neil@dist.ro>
+ Nick Garvey <garvey.nick@gmail.com>
+ Nikolay Borisov <n.borisov.lkml@gmail.com>
+ Olaf Faaland <faaland1@llnl.gov>
+ Oleg Drokin <green@linuxhacker.ru>
+ Oleg Stepura <oleg@stepura.com>
+ Patrik Greco <sikevux@sikevux.se>
+ Paul B. Henson <henson@acm.org>
+ Paul Dagnelie <pcd@delphix.com>
+ Paul Zuchowski <pzuchowski@datto.com>
+ Pavel Boldin <boldin.pavel@gmail.com>
+ Pavel Zakharov <pavel.zakharov@delphix.com>
+ Pawel Jakub Dawidek <pjd@FreeBSD.org>
+ Pedro Giffuni <pfg@freebsd.org>
+ Peng <peng.hse@xtaotech.com>
+ Peter Ashford <ashford@accs.com>
+ Prakash Surya <prakash.surya@delphix.com>
+ Prasad Joshi <prasadjoshi124@gmail.com>
+ Ralf Ertzinger <ralf@skytale.net>
+ Randall Mason <ClashTheBunny@gmail.com>
+ Remy Blank <remy.blank@pobox.com>
+ Ricardo M. Correia <ricardo.correia@oracle.com>
+ Rich Ercolani <rincebrain@gmail.com>
+ Richard Elling <Richard.Elling@RichardElling.com>
+ Richard Laager <rlaager@wiktel.com>
+ Richard Lowe <richlowe@richlowe.net>
+ Richard Sharpe <rsharpe@samba.org>
+ Richard Yao <ryao@gentoo.org>
+ Rohan Puri <rohan.puri15@gmail.com>
+ Romain Dolbeau <romain.dolbeau@atos.net>
+ Roman Strashkin <roman.strashkin@nexenta.com>
+ Ruben Kerkhof <ruben@rubenkerkhof.com>
+ Saso Kiselkov <saso.kiselkov@nexenta.com>
+ Scot W. Stevenson <scot.stevenson@gmail.com>
+ Sean Eric Fagan <sef@ixsystems.com>
+ Sen Haerens <sen@senhaerens.be>
+ Serapheim Dimitropoulos <serapheim@delphix.com>
+ Seth Forshee <seth.forshee@canonical.com>
+ Shampavman <sham.pavman@nexenta.com>
+ Shen Yan <shenyanxxxy@qq.com>
+ Simon Guest <simon.guest@tesujimath.org>
+ Simon Klinkert <simon.klinkert@gmail.com>
+ Sowrabha Gopal <sowrabha.gopal@delphix.com>
+ Stanislav Seletskiy <s.seletskiy@gmail.com>
+ Steffen Müthing <steffen.muething@iwr.uni-heidelberg.de>
+ Stephen Blinick <stephen.blinick@delphix.com>
+ Steve Dougherty <sdougherty@barracuda.com>
+ Steven Burgess <sburgess@dattobackup.com>
+ Steven Hartland <smh@freebsd.org>
+ Steven Johnson <sjohnson@sakuraindustries.com>
+ Stian Ellingsen <stian@plaimi.net>
+ Suman Chakravartula <schakrava@gmail.com>
+ Sydney Vanda <sydney.m.vanda@intel.com>
+ Sören Tempel <soeren+git@soeren-tempel.net>
+ Thijs Cramer <thijs.cramer@gmail.com>
+ Tim Chase <tim@chase2k.com>
+ Tim Connors <tconnors@rather.puzzling.org>
+ Tim Crawford <tcrawford@datto.com>
+ Tim Haley <Tim.Haley@Sun.COM>
+ Tobin Harding <me@tobin.cc>
+ Tom Caputi <tcaputi@datto.com>
+ Tom Matthews <tom@axiom-partners.com>
+ Tom Prince <tom.prince@ualberta.net>
+ Tomohiro Kusumi <kusumi.tomohiro@gmail.com>
+ Tony Hutter <hutter2@llnl.gov>
+ Toomas Soome <tsoome@me.com>
+ Trey Dockendorf <treydock@gmail.com>
+ Turbo Fredriksson <turbo@bayour.com>
+ Tyler J. Stachecki <stachecki.tyler@gmail.com>
+ Vitaut Bajaryn <vitaut.bayaryn@gmail.com>
+ Weigang Li <weigang.li@intel.com>
+ Will Andrews <will@freebsd.org>
+ Will Rouesnel <w.rouesnel@gmail.com>
+ Wolfgang Bumiller <w.bumiller@proxmox.com>
+ Xin Li <delphij@FreeBSD.org>
+ Ying Zhu <casualfisher@gmail.com>
+ YunQiang Su <syq@debian.org>
+ Yuri Pankov <yuri.pankov@gmail.com>
+ Yuxuan Shui <yshuiv7@gmail.com>
+ Zachary Bedell <zac@thebedells.org>
-The majority of the code in the ZFS on Linux port comes from OpenSolaris
-which has been released under the terms of the CDDL open source license.
-This includes the core ZFS code, libavl, libnvpair, libefi, libunicode,
-and libutil. The original OpenSolaris source can be downloaded from:
-
-http://dlc.sun.com/osol/on/downloads/b121/on-src.tar.bz2
-
-Files which do not originate from OpenSolaris are noted in the file header
-and attributed properly. These exceptions include, but are not limited
-to, the vdev_disk.c and zvol.c implementation which are licensed under
-the CDDL.
-
-The latest stable and development versions of this port can be downloaded
-from the official ZFS on Linux site located at:
+Refer to the git commit log for authoritative copyright attribution.
-http://zfsonlinux.org/
+The original ZFS source code was obtained from Open Solaris which was
+released under the terms of the CDDL open source license. Additional
+changes have been included from OpenZFS and the Illumos project which
+are similarly licensed. These projects can be found on Github at:
-This ZFS on Linux port was produced at the Lawrence Livermore National
-Laboratory (LLNL) under Contract No. DE-AC52-07NA27344 (Contract 44)
-between the U.S. Department of Energy (DOE) and Lawrence Livermore
-National Security, LLC (LLNS) for the operation of LLNL. It has been
-approved for release under LLNL-CODE-403049.
+ * https://github.com/illumos/illumos-gate
+ * https://github.com/openzfs/openzfs
Unless otherwise noted, all files in this distribution are released
under the Common Development and Distribution License (CDDL).
-Exceptions are noted within the associated source files. A few notable
-exceptions and their respective licenses include:
-Skein Checksum Implementation: module/icp/algs/skein/THIRDPARTYLICENSE
-AES Implementation: module/icp/asm-x86_64/aes/THIRDPARTYLICENSE.gladman
-AES Implementation: module/icp/asm-x86_64/aes/THIRDPARTYLICENSE.openssl
-PBKDF2 Implementation: lib/libzfs/THIRDPARTYLICENSE.openssl
+Exceptions are noted within the associated source files headers and
+by including a THIRDPARTYLICENSE file with the license terms. A few
+notable exceptions and their respective licenses include:
+
+ * Skein Checksum Implementation: module/icp/algs/skein/THIRDPARTYLICENSE
+ * AES Implementation: module/icp/asm-x86_64/aes/THIRDPARTYLICENSE.gladman
+ * AES Implementation: module/icp/asm-x86_64/aes/THIRDPARTYLICENSE.openssl
+ * PBKDF2 Implementation: lib/libzfs/THIRDPARTYLICENSE.openssl
+ * SPL Implementation: module/spl/THIRDPARTYLICENSE.gplv2
This product includes software developed by the OpenSSL Project for use
in the OpenSSL Toolkit (http://www.openssl.org/)
-See the file OPENSOLARIS.LICENSE for more information.
-
-Refer to the git commit log for authoritative copyright attribution.
+See the LICENSE and NOTICE for more information.
+++ /dev/null
-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.
--- /dev/null
+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.
+
+--------------------------------------------------------------------
+
+
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE Version 1.0
+
+1. Definitions.
+
+ 1.1. "Contributor" means each individual or entity that creates
+ or contributes to the creation of Modifications.
+
+ 1.2. "Contributor Version" means the combination of the Original
+ Software, prior Modifications used by a Contributor (if any),
+ and the Modifications made by that particular Contributor.
+
+ 1.3. "Covered Software" means (a) the Original Software, or (b)
+ Modifications, or (c) the combination of files containing
+ Original Software with files containing Modifications, in
+ each case including portions thereof.
+
+ 1.4. "Executable" means the Covered Software in any form other
+ than Source Code.
+
+ 1.5. "Initial Developer" means the individual or entity that first
+ makes Original Software available under this License.
+
+ 1.6. "Larger Work" means a work which combines Covered Software or
+ portions thereof with code not governed by the terms of this
+ License.
+
+ 1.7. "License" means this document.
+
+ 1.8. "Licensable" means having the right to grant, to the maximum
+ extent possible, whether at the time of the initial grant or
+ subsequently acquired, any and all of the rights conveyed
+ herein.
+
+ 1.9. "Modifications" means the Source Code and Executable form of
+ any of the following:
+
+ A. Any file that results from an addition to, deletion from or
+ modification of the contents of a file containing Original
+ Software or previous Modifications;
+
+ B. Any new file that contains any part of the Original
+ Software or previous Modifications; or
+
+ C. Any new file that is contributed or otherwise made
+ available under the terms of this License.
+
+ 1.10. "Original Software" means the Source Code and Executable
+ form of computer software code that is originally released
+ under this License.
+
+ 1.11. "Patent Claims" means any patent claim(s), now owned or
+ hereafter acquired, including without limitation, method,
+ process, and apparatus claims, in any patent Licensable by
+ grantor.
+
+ 1.12. "Source Code" means (a) the common form of computer software
+ code in which modifications are made and (b) associated
+ documentation included in or with such code.
+
+ 1.13. "You" (or "Your") means an individual or a legal entity
+ exercising rights under, and complying with all of the terms
+ of, this License. For legal entities, "You" includes any
+ entity which controls, is controlled by, or is under common
+ control with You. For purposes of this definition,
+ "control" means (a) the power, direct or indirect, to cause
+ the direction or management of such entity, whether by
+ contract or otherwise, or (b) ownership of more than fifty
+ percent (50%) of the outstanding shares or beneficial
+ ownership of such entity.
+
+2. License Grants.
+
+ 2.1. The Initial Developer Grant.
+
+ Conditioned upon Your compliance with Section 3.1 below and
+ subject to third party intellectual property claims, the Initial
+ Developer hereby grants You a world-wide, royalty-free,
+ non-exclusive license:
+
+ (a) under intellectual property rights (other than patent or
+ trademark) Licensable by Initial Developer, to use,
+ reproduce, modify, display, perform, sublicense and
+ distribute the Original Software (or portions thereof),
+ with or without Modifications, and/or as part of a Larger
+ Work; and
+
+ (b) under Patent Claims infringed by the making, using or
+ selling of Original Software, to make, have made, use,
+ practice, sell, and offer for sale, and/or otherwise
+ dispose of the Original Software (or portions thereof).
+
+ (c) The licenses granted in Sections 2.1(a) and (b) are
+ effective on the date Initial Developer first distributes
+ or otherwise makes the Original Software available to a
+ third party under the terms of this License.
+
+ (d) Notwithstanding Section 2.1(b) above, no patent license is
+ granted: (1) for code that You delete from the Original
+ Software, or (2) for infringements caused by: (i) the
+ modification of the Original Software, or (ii) the
+ combination of the Original Software with other software
+ or devices.
+
+ 2.2. Contributor Grant.
+
+ Conditioned upon Your compliance with Section 3.1 below and
+ subject to third party intellectual property claims, each
+ Contributor hereby grants You a world-wide, royalty-free,
+ non-exclusive license:
+
+ (a) under intellectual property rights (other than patent or
+ trademark) Licensable by Contributor to use, reproduce,
+ modify, display, perform, sublicense and distribute the
+ Modifications created by such Contributor (or portions
+ thereof), either on an unmodified basis, with other
+ Modifications, as Covered Software and/or as part of a
+ Larger Work; and
+
+ (b) under Patent Claims infringed by the making, using, or
+ selling of Modifications made by that Contributor either
+ alone and/or in combination with its Contributor Version
+ (or portions of such combination), to make, use, sell,
+ offer for sale, have made, and/or otherwise dispose of:
+ (1) Modifications made by that Contributor (or portions
+ thereof); and (2) the combination of Modifications made by
+ that Contributor with its Contributor Version (or portions
+ of such combination).
+
+ (c) The licenses granted in Sections 2.2(a) and 2.2(b) are
+ effective on the date Contributor first distributes or
+ otherwise makes the Modifications available to a third
+ party.
+
+ (d) Notwithstanding Section 2.2(b) above, no patent license is
+ granted: (1) for any code that Contributor has deleted
+ from the Contributor Version; (2) for infringements caused
+ by: (i) third party modifications of Contributor Version,
+ or (ii) the combination of Modifications made by that
+ Contributor with other software (except as part of the
+ Contributor Version) or other devices; or (3) under Patent
+ Claims infringed by Covered Software in the absence of
+ Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+ 3.1. Availability of Source Code.
+
+ Any Covered Software that You distribute or otherwise make
+ available in Executable form must also be made available in Source
+ Code form and that Source Code form must be distributed only under
+ the terms of this License. You must include a copy of this
+ License with every copy of the Source Code form of the Covered
+ Software You distribute or otherwise make available. You must
+ inform recipients of any such Covered Software in Executable form
+ as to how they can obtain such Covered Software in Source Code
+ form in a reasonable manner on or through a medium customarily
+ used for software exchange.
+
+ 3.2. Modifications.
+
+ The Modifications that You create or to which You contribute are
+ governed by the terms of this License. You represent that You
+ believe Your Modifications are Your original creation(s) and/or
+ You have sufficient rights to grant the rights conveyed by this
+ License.
+
+ 3.3. Required Notices.
+
+ You must include a notice in each of Your Modifications that
+ identifies You as the Contributor of the Modification. You may
+ not remove or alter any copyright, patent or trademark notices
+ contained within the Covered Software, or any notices of licensing
+ or any descriptive text giving attribution to any Contributor or
+ the Initial Developer.
+
+ 3.4. Application of Additional Terms.
+
+ You may not offer or impose any terms on any Covered Software in
+ Source Code form that alters or restricts the applicable version
+ of this License or the recipients' rights hereunder. You may
+ choose to offer, and to charge a fee for, warranty, support,
+ indemnity or liability obligations to one or more recipients of
+ Covered Software. However, you may do so only on Your own behalf,
+ and not on behalf of the Initial Developer or any Contributor.
+ You must make it absolutely clear that any such warranty, support,
+ indemnity or liability obligation is offered by You alone, and You
+ hereby agree to indemnify the Initial Developer and every
+ Contributor for any liability incurred by the Initial Developer or
+ such Contributor as a result of warranty, support, indemnity or
+ liability terms You offer.
+
+ 3.5. Distribution of Executable Versions.
+
+ You may distribute the Executable form of the Covered Software
+ under the terms of this License or under the terms of a license of
+ Your choice, which may contain terms different from this License,
+ provided that You are in compliance with the terms of this License
+ and that the license for the Executable form does not attempt to
+ limit or alter the recipient's rights in the Source Code form from
+ the rights set forth in this License. If You distribute the
+ Covered Software in Executable form under a different license, You
+ must make it absolutely clear that any terms which differ from
+ this License are offered by You alone, not by the Initial
+ Developer or Contributor. You hereby agree to indemnify the
+ Initial Developer and every Contributor for any liability incurred
+ by the Initial Developer or such Contributor as a result of any
+ such terms You offer.
+
+ 3.6. Larger Works.
+
+ You may create a Larger Work by combining Covered Software with
+ other code not governed by the terms of this License and
+ distribute the Larger Work as a single product. In such a case,
+ You must make sure the requirements of this License are fulfilled
+ for the Covered Software.
+
+4. Versions of the License.
+
+ 4.1. New Versions.
+
+ Sun Microsystems, Inc. is the initial license steward and may
+ publish revised and/or new versions of this License from time to
+ time. Each version will be given a distinguishing version number.
+ Except as provided in Section 4.3, no one other than the license
+ steward has the right to modify this License.
+
+ 4.2. Effect of New Versions.
+
+ You may always continue to use, distribute or otherwise make the
+ Covered Software available under the terms of the version of the
+ License under which You originally received the Covered Software.
+ If the Initial Developer includes a notice in the Original
+ Software prohibiting it from being distributed or otherwise made
+ available under any subsequent version of the License, You must
+ distribute and make the Covered Software available under the terms
+ of the version of the License under which You originally received
+ the Covered Software. Otherwise, You may also choose to use,
+ distribute or otherwise make the Covered Software available under
+ the terms of any subsequent version of the License published by
+ the license steward.
+
+ 4.3. Modified Versions.
+
+ When You are an Initial Developer and You want to create a new
+ license for Your Original Software, You may create and use a
+ modified version of this License if You: (a) rename the license
+ and remove any references to the name of the license steward
+ (except to note that the license differs from this License); and
+ (b) otherwise make it clear that the license contains terms which
+ differ from this License.
+
+5. DISCLAIMER OF WARRANTY.
+
+ COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS"
+ BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+ INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED
+ SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR
+ PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND
+ PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY
+ COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
+ INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY
+ NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF
+ WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
+ ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
+ DISCLAIMER.
+
+6. TERMINATION.
+
+ 6.1. This License and the rights granted hereunder will terminate
+ automatically if You fail to comply with terms herein and fail to
+ cure such breach within 30 days of becoming aware of the breach.
+ Provisions which, by their nature, must remain in effect beyond
+ the termination of this License shall survive.
+
+ 6.2. If You assert a patent infringement claim (excluding
+ declaratory judgment actions) against Initial Developer or a
+ Contributor (the Initial Developer or Contributor against whom You
+ assert such claim is referred to as "Participant") alleging that
+ the Participant Software (meaning the Contributor Version where
+ the Participant is a Contributor or the Original Software where
+ the Participant is the Initial Developer) directly or indirectly
+ infringes any patent, then any and all rights granted directly or
+ indirectly to You by such Participant, the Initial Developer (if
+ the Initial Developer is not the Participant) and all Contributors
+ under Sections 2.1 and/or 2.2 of this License shall, upon 60 days
+ notice from Participant terminate prospectively and automatically
+ at the expiration of such 60 day notice period, unless if within
+ such 60 day period You withdraw Your claim with respect to the
+ Participant Software against such Participant either unilaterally
+ or pursuant to a written agreement with Participant.
+
+ 6.3. In the event of termination under Sections 6.1 or 6.2 above,
+ all end user licenses that have been validly granted by You or any
+ distributor hereunder prior to termination (excluding licenses
+ granted to You by any distributor) shall survive termination.
+
+7. LIMITATION OF LIABILITY.
+
+ UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+ (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE
+ INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
+ COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE
+ LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
+ CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
+ LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK
+ STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+ COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+ INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
+ LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL
+ INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT
+ APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO
+ NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+ CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT
+ APPLY TO YOU.
+
+8. U.S. GOVERNMENT END USERS.
+
+ The Covered Software is a "commercial item," as that term is
+ defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial
+ computer software" (as that term is defined at 48
+ C.F.R. 252.227-7014(a)(1)) and "commercial computer software
+ documentation" as such terms are used in 48 C.F.R. 12.212
+ (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48
+ C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all
+ U.S. Government End Users acquire Covered Software with only those
+ rights set forth herein. This U.S. Government Rights clause is in
+ lieu of, and supersedes, any other FAR, DFAR, or other clause or
+ provision that addresses Government rights in computer software
+ under this License.
+
+9. MISCELLANEOUS.
+
+ This License represents the complete agreement concerning subject
+ matter hereof. If any provision of this License is held to be
+ unenforceable, such provision shall be reformed only to the extent
+ necessary to make it enforceable. This License shall be governed
+ by the law of the jurisdiction specified in a notice contained
+ within the Original Software (except to the extent applicable law,
+ if any, provides otherwise), excluding such jurisdiction's
+ conflict-of-law provisions. Any litigation relating to this
+ License shall be subject to the jurisdiction of the courts located
+ in the jurisdiction and venue specified in a notice contained
+ within the Original Software, with the losing party responsible
+ for costs, including, without limitation, court costs and
+ reasonable attorneys' fees and expenses. The application of the
+ United Nations Convention on Contracts for the International Sale
+ of Goods is expressly excluded. Any law or regulation which
+ provides that the language of a contract shall be construed
+ against the drafter shall not apply to this License. You agree
+ that You alone are responsible for compliance with the United
+ States export administration regulations (and the export control
+ laws and regulation of any other countries) when You use,
+ distribute or otherwise make available any Covered Software.
+
+10. RESPONSIBILITY FOR CLAIMS.
+
+ As between Initial Developer and the Contributors, each party is
+ responsible for claims and damages arising, directly or
+ indirectly, out of its utilization of rights under this License
+ and You agree to work with Initial Developer and Contributors to
+ distribute such responsibility on an equitable basis. Nothing
+ herein is intended or shall be deemed to constitute any admission
+ of liability.
+
+--------------------------------------------------------------------
+
+NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND
+DISTRIBUTION LICENSE (CDDL)
+
+For Covered Software in this distribution, this License shall
+be governed by the laws of the State of California (excluding
+conflict-of-law provisions).
+
+Any litigation relating to this License shall be subject to the
+jurisdiction of the Federal Courts of the Northern District of
+California and the state courts of the State of California, with
+venue lying in Santa Clara County, California.
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@
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:
--- /dev/null
+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.
+++ /dev/null
-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.
-
---------------------------------------------------------------------
-
-
-COMMON DEVELOPMENT AND DISTRIBUTION LICENSE Version 1.0
-
-1. Definitions.
-
- 1.1. "Contributor" means each individual or entity that creates
- or contributes to the creation of Modifications.
-
- 1.2. "Contributor Version" means the combination of the Original
- Software, prior Modifications used by a Contributor (if any),
- and the Modifications made by that particular Contributor.
-
- 1.3. "Covered Software" means (a) the Original Software, or (b)
- Modifications, or (c) the combination of files containing
- Original Software with files containing Modifications, in
- each case including portions thereof.
-
- 1.4. "Executable" means the Covered Software in any form other
- than Source Code.
-
- 1.5. "Initial Developer" means the individual or entity that first
- makes Original Software available under this License.
-
- 1.6. "Larger Work" means a work which combines Covered Software or
- portions thereof with code not governed by the terms of this
- License.
-
- 1.7. "License" means this document.
-
- 1.8. "Licensable" means having the right to grant, to the maximum
- extent possible, whether at the time of the initial grant or
- subsequently acquired, any and all of the rights conveyed
- herein.
-
- 1.9. "Modifications" means the Source Code and Executable form of
- any of the following:
-
- A. Any file that results from an addition to, deletion from or
- modification of the contents of a file containing Original
- Software or previous Modifications;
-
- B. Any new file that contains any part of the Original
- Software or previous Modifications; or
-
- C. Any new file that is contributed or otherwise made
- available under the terms of this License.
-
- 1.10. "Original Software" means the Source Code and Executable
- form of computer software code that is originally released
- under this License.
-
- 1.11. "Patent Claims" means any patent claim(s), now owned or
- hereafter acquired, including without limitation, method,
- process, and apparatus claims, in any patent Licensable by
- grantor.
-
- 1.12. "Source Code" means (a) the common form of computer software
- code in which modifications are made and (b) associated
- documentation included in or with such code.
-
- 1.13. "You" (or "Your") means an individual or a legal entity
- exercising rights under, and complying with all of the terms
- of, this License. For legal entities, "You" includes any
- entity which controls, is controlled by, or is under common
- control with You. For purposes of this definition,
- "control" means (a) the power, direct or indirect, to cause
- the direction or management of such entity, whether by
- contract or otherwise, or (b) ownership of more than fifty
- percent (50%) of the outstanding shares or beneficial
- ownership of such entity.
-
-2. License Grants.
-
- 2.1. The Initial Developer Grant.
-
- Conditioned upon Your compliance with Section 3.1 below and
- subject to third party intellectual property claims, the Initial
- Developer hereby grants You a world-wide, royalty-free,
- non-exclusive license:
-
- (a) under intellectual property rights (other than patent or
- trademark) Licensable by Initial Developer, to use,
- reproduce, modify, display, perform, sublicense and
- distribute the Original Software (or portions thereof),
- with or without Modifications, and/or as part of a Larger
- Work; and
-
- (b) under Patent Claims infringed by the making, using or
- selling of Original Software, to make, have made, use,
- practice, sell, and offer for sale, and/or otherwise
- dispose of the Original Software (or portions thereof).
-
- (c) The licenses granted in Sections 2.1(a) and (b) are
- effective on the date Initial Developer first distributes
- or otherwise makes the Original Software available to a
- third party under the terms of this License.
-
- (d) Notwithstanding Section 2.1(b) above, no patent license is
- granted: (1) for code that You delete from the Original
- Software, or (2) for infringements caused by: (i) the
- modification of the Original Software, or (ii) the
- combination of the Original Software with other software
- or devices.
-
- 2.2. Contributor Grant.
-
- Conditioned upon Your compliance with Section 3.1 below and
- subject to third party intellectual property claims, each
- Contributor hereby grants You a world-wide, royalty-free,
- non-exclusive license:
-
- (a) under intellectual property rights (other than patent or
- trademark) Licensable by Contributor to use, reproduce,
- modify, display, perform, sublicense and distribute the
- Modifications created by such Contributor (or portions
- thereof), either on an unmodified basis, with other
- Modifications, as Covered Software and/or as part of a
- Larger Work; and
-
- (b) under Patent Claims infringed by the making, using, or
- selling of Modifications made by that Contributor either
- alone and/or in combination with its Contributor Version
- (or portions of such combination), to make, use, sell,
- offer for sale, have made, and/or otherwise dispose of:
- (1) Modifications made by that Contributor (or portions
- thereof); and (2) the combination of Modifications made by
- that Contributor with its Contributor Version (or portions
- of such combination).
-
- (c) The licenses granted in Sections 2.2(a) and 2.2(b) are
- effective on the date Contributor first distributes or
- otherwise makes the Modifications available to a third
- party.
-
- (d) Notwithstanding Section 2.2(b) above, no patent license is
- granted: (1) for any code that Contributor has deleted
- from the Contributor Version; (2) for infringements caused
- by: (i) third party modifications of Contributor Version,
- or (ii) the combination of Modifications made by that
- Contributor with other software (except as part of the
- Contributor Version) or other devices; or (3) under Patent
- Claims infringed by Covered Software in the absence of
- Modifications made by that Contributor.
-
-3. Distribution Obligations.
-
- 3.1. Availability of Source Code.
-
- Any Covered Software that You distribute or otherwise make
- available in Executable form must also be made available in Source
- Code form and that Source Code form must be distributed only under
- the terms of this License. You must include a copy of this
- License with every copy of the Source Code form of the Covered
- Software You distribute or otherwise make available. You must
- inform recipients of any such Covered Software in Executable form
- as to how they can obtain such Covered Software in Source Code
- form in a reasonable manner on or through a medium customarily
- used for software exchange.
-
- 3.2. Modifications.
-
- The Modifications that You create or to which You contribute are
- governed by the terms of this License. You represent that You
- believe Your Modifications are Your original creation(s) and/or
- You have sufficient rights to grant the rights conveyed by this
- License.
-
- 3.3. Required Notices.
-
- You must include a notice in each of Your Modifications that
- identifies You as the Contributor of the Modification. You may
- not remove or alter any copyright, patent or trademark notices
- contained within the Covered Software, or any notices of licensing
- or any descriptive text giving attribution to any Contributor or
- the Initial Developer.
-
- 3.4. Application of Additional Terms.
-
- You may not offer or impose any terms on any Covered Software in
- Source Code form that alters or restricts the applicable version
- of this License or the recipients' rights hereunder. You may
- choose to offer, and to charge a fee for, warranty, support,
- indemnity or liability obligations to one or more recipients of
- Covered Software. However, you may do so only on Your own behalf,
- and not on behalf of the Initial Developer or any Contributor.
- You must make it absolutely clear that any such warranty, support,
- indemnity or liability obligation is offered by You alone, and You
- hereby agree to indemnify the Initial Developer and every
- Contributor for any liability incurred by the Initial Developer or
- such Contributor as a result of warranty, support, indemnity or
- liability terms You offer.
-
- 3.5. Distribution of Executable Versions.
-
- You may distribute the Executable form of the Covered Software
- under the terms of this License or under the terms of a license of
- Your choice, which may contain terms different from this License,
- provided that You are in compliance with the terms of this License
- and that the license for the Executable form does not attempt to
- limit or alter the recipient's rights in the Source Code form from
- the rights set forth in this License. If You distribute the
- Covered Software in Executable form under a different license, You
- must make it absolutely clear that any terms which differ from
- this License are offered by You alone, not by the Initial
- Developer or Contributor. You hereby agree to indemnify the
- Initial Developer and every Contributor for any liability incurred
- by the Initial Developer or such Contributor as a result of any
- such terms You offer.
-
- 3.6. Larger Works.
-
- You may create a Larger Work by combining Covered Software with
- other code not governed by the terms of this License and
- distribute the Larger Work as a single product. In such a case,
- You must make sure the requirements of this License are fulfilled
- for the Covered Software.
-
-4. Versions of the License.
-
- 4.1. New Versions.
-
- Sun Microsystems, Inc. is the initial license steward and may
- publish revised and/or new versions of this License from time to
- time. Each version will be given a distinguishing version number.
- Except as provided in Section 4.3, no one other than the license
- steward has the right to modify this License.
-
- 4.2. Effect of New Versions.
-
- You may always continue to use, distribute or otherwise make the
- Covered Software available under the terms of the version of the
- License under which You originally received the Covered Software.
- If the Initial Developer includes a notice in the Original
- Software prohibiting it from being distributed or otherwise made
- available under any subsequent version of the License, You must
- distribute and make the Covered Software available under the terms
- of the version of the License under which You originally received
- the Covered Software. Otherwise, You may also choose to use,
- distribute or otherwise make the Covered Software available under
- the terms of any subsequent version of the License published by
- the license steward.
-
- 4.3. Modified Versions.
-
- When You are an Initial Developer and You want to create a new
- license for Your Original Software, You may create and use a
- modified version of this License if You: (a) rename the license
- and remove any references to the name of the license steward
- (except to note that the license differs from this License); and
- (b) otherwise make it clear that the license contains terms which
- differ from this License.
-
-5. DISCLAIMER OF WARRANTY.
-
- COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS"
- BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
- INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED
- SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR
- PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND
- PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY
- COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
- INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY
- NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF
- WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
- ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
- DISCLAIMER.
-
-6. TERMINATION.
-
- 6.1. This License and the rights granted hereunder will terminate
- automatically if You fail to comply with terms herein and fail to
- cure such breach within 30 days of becoming aware of the breach.
- Provisions which, by their nature, must remain in effect beyond
- the termination of this License shall survive.
-
- 6.2. If You assert a patent infringement claim (excluding
- declaratory judgment actions) against Initial Developer or a
- Contributor (the Initial Developer or Contributor against whom You
- assert such claim is referred to as "Participant") alleging that
- the Participant Software (meaning the Contributor Version where
- the Participant is a Contributor or the Original Software where
- the Participant is the Initial Developer) directly or indirectly
- infringes any patent, then any and all rights granted directly or
- indirectly to You by such Participant, the Initial Developer (if
- the Initial Developer is not the Participant) and all Contributors
- under Sections 2.1 and/or 2.2 of this License shall, upon 60 days
- notice from Participant terminate prospectively and automatically
- at the expiration of such 60 day notice period, unless if within
- such 60 day period You withdraw Your claim with respect to the
- Participant Software against such Participant either unilaterally
- or pursuant to a written agreement with Participant.
-
- 6.3. In the event of termination under Sections 6.1 or 6.2 above,
- all end user licenses that have been validly granted by You or any
- distributor hereunder prior to termination (excluding licenses
- granted to You by any distributor) shall survive termination.
-
-7. LIMITATION OF LIABILITY.
-
- UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
- (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE
- INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
- COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE
- LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
- CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
- LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK
- STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
- COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
- INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
- LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL
- INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT
- APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO
- NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
- CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT
- APPLY TO YOU.
-
-8. U.S. GOVERNMENT END USERS.
-
- The Covered Software is a "commercial item," as that term is
- defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial
- computer software" (as that term is defined at 48
- C.F.R. 252.227-7014(a)(1)) and "commercial computer software
- documentation" as such terms are used in 48 C.F.R. 12.212
- (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48
- C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all
- U.S. Government End Users acquire Covered Software with only those
- rights set forth herein. This U.S. Government Rights clause is in
- lieu of, and supersedes, any other FAR, DFAR, or other clause or
- provision that addresses Government rights in computer software
- under this License.
-
-9. MISCELLANEOUS.
-
- This License represents the complete agreement concerning subject
- matter hereof. If any provision of this License is held to be
- unenforceable, such provision shall be reformed only to the extent
- necessary to make it enforceable. This License shall be governed
- by the law of the jurisdiction specified in a notice contained
- within the Original Software (except to the extent applicable law,
- if any, provides otherwise), excluding such jurisdiction's
- conflict-of-law provisions. Any litigation relating to this
- License shall be subject to the jurisdiction of the courts located
- in the jurisdiction and venue specified in a notice contained
- within the Original Software, with the losing party responsible
- for costs, including, without limitation, court costs and
- reasonable attorneys' fees and expenses. The application of the
- United Nations Convention on Contracts for the International Sale
- of Goods is expressly excluded. Any law or regulation which
- provides that the language of a contract shall be construed
- against the drafter shall not apply to this License. You agree
- that You alone are responsible for compliance with the United
- States export administration regulations (and the export control
- laws and regulation of any other countries) when You use,
- distribute or otherwise make available any Covered Software.
-
-10. RESPONSIBILITY FOR CLAIMS.
-
- As between Initial Developer and the Contributors, each party is
- responsible for claims and damages arising, directly or
- indirectly, out of its utilization of rights under this License
- and You agree to work with Initial Developer and Contributors to
- distribute such responsibility on an equitable basis. Nothing
- herein is intended or shall be deemed to constitute any admission
- of liability.
-
---------------------------------------------------------------------
-
-NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND
-DISTRIBUTION LICENSE (CDDL)
-
-For Covered Software in this distribution, this License shall
-be governed by the laws of the State of California (excluding
-conflict-of-law provisions).
-
-Any litigation relating to this License shall be subject to the
-jurisdiction of the Federal Courts of the Northern District of
-California and the state courts of the State of California, with
-venue lying in Santa Clara County, California.
+++ /dev/null
-![img](http://zfsonlinux.org/images/zfs-linux.png)
-
-ZFS on Linux is an advanced file system and volume manager which was originally
-developed for Solaris and is now maintained by the OpenZFS community.
-
-[![codecov](https://codecov.io/gh/zfsonlinux/zfs/branch/master/graph/badge.svg)](https://codecov.io/gh/zfsonlinux/zfs)
-[![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).
--- /dev/null
+![img](http://zfsonlinux.org/images/zfs-linux.png)
+
+ZFS on Linux is an advanced file system and volume manager which was originally
+developed for Solaris and is now maintained by the OpenZFS community.
+
+[![codecov](https://codecov.io/gh/zfsonlinux/zfs/branch/master/graph/badge.svg)](https://codecov.io/gh/zfsonlinux/zfs)
+[![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`
#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
#include <locale.h>
#include <getopt.h>
#include <fcntl.h>
+#include <errno.h>
#define ZS_COMMENT 0x00000000 /* comment */
#define ZS_ZFSUTIL 0x00000001 /* caller is zfs(8) */
*/
#include <stddef.h>
+#include <string.h>
#include <strings.h>
#include <libuutil.h>
#include <libzfs.h>
#include <thread_pool.h>
#include <pthread.h>
#include <unistd.h>
+#include <errno.h>
#include "zfs_agents.h"
#include "../zed_log.h"
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include <strings.h>
#include <libzfs.h>
dnl # 2.6.33 API change,
dnl # Removed .ctl_name from struct ctl_table.
dnl #
-AC_DEFUN([SPL_AC_CTL_NAME], [
+AC_DEFUN([ZFS_AC_KERNEL_CTL_NAME], [
AC_MSG_CHECKING([whether struct ctl_table has ctl_name])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/sysctl.h>
],[
struct ctl_table ctl __attribute__ ((unused));
dnl #
dnl # PaX Linux 2.6.38 - 3.x API
dnl #
-AC_DEFUN([SPL_AC_PAX_KERNEL_FILE_FALLOCATE], [
+AC_DEFUN([ZFS_AC_PAX_KERNEL_FILE_FALLOCATE], [
AC_MSG_CHECKING([whether fops->fallocate() exists])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/fs.h>
],[
long (*fallocate) (struct file *, int, loff_t, loff_t) = NULL;
dnl # 4.9 API change
dnl # group_info changed from 2d array via >blocks to 1d array via ->gid
dnl #
-AC_DEFUN([SPL_AC_GROUP_INFO_GID], [
+AC_DEFUN([ZFS_AC_KERNEL_GROUP_INFO_GID], [
AC_MSG_CHECKING([whether group_info->gid exists])
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/cred.h>
],[
struct group_info *gi = groups_alloc(1);
dnl # i_mutex/i_rwsem, we should use inode_lock() and inode_lock_shared()
dnl # We test inode_lock_shared because inode_lock is introduced earlier.
dnl #
-AC_DEFUN([SPL_AC_INODE_LOCK], [
+AC_DEFUN([ZFS_AC_KERNEL_INODE_LOCK], [
AC_MSG_CHECKING([whether inode_lock_shared() exists])
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/fs.h>
],[
struct inode *inode = NULL;
dnl # in kmem_getpages(). Unfortunately there is no public API for setting
dnl # non-default flags.
dnl #
-AC_DEFUN([SPL_AC_KMEM_CACHE_ALLOCFLAGS], [
+AC_DEFUN([ZFS_AC_KERNEL_KMEM_CACHE_ALLOCFLAGS], [
AC_MSG_CHECKING([whether struct kmem_cache has allocflags])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/slab.h>
],[
struct kmem_cache cachep __attribute__ ((unused));
AC_MSG_RESULT(no)
AC_MSG_CHECKING([whether struct kmem_cache has gfpflags])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/slab.h>
],[
struct kmem_cache cachep __attribute__ ((unused));
dnl # kmem_cache_create() with SLAB_USERCOPY flag replaced by
dnl # kmem_cache_create_usercopy().
dnl #
-AC_DEFUN([SPL_AC_KMEM_CACHE_CREATE_USERCOPY], [
+AC_DEFUN([ZFS_AC_KERNEL_KMEM_CACHE_CREATE_USERCOPY], [
AC_MSG_CHECKING([whether kmem_cache_create_usercopy() exists])
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/slab.h>
static void ctor(void *foo)
{
dnl # where available. Not strictly a user namespaces thing
dnl # but it should prevent surprises
dnl #
-AC_DEFUN([SPL_AC_KUIDGID_T], [
+AC_DEFUN([ZFS_AC_KERNEL_KUIDGID_T], [
AC_MSG_CHECKING([whether kuid_t/kgid_t is available])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/uidgid.h>
], [
- kuid_t userid = KUIDT_INIT(0);
- kgid_t groupid = KGIDT_INIT(0);
+ kuid_t userid __attribute__ ((unused)) = KUIDT_INIT(0);
+ kgid_t groupid __attribute__ ((unused)) = KGIDT_INIT(0);
],[
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/uidgid.h>
], [
- kuid_t userid = 0;
- kgid_t groupid = 0;
+ kuid_t userid __attribute__ ((unused)) = 0;
+ kgid_t groupid __attribute__ ((unused)) = 0;
],[
AC_MSG_RESULT(yes; optional)
],[
dnl # 3.10 API change,
dnl # PDE is replaced by PDE_DATA
dnl #
-AC_DEFUN([SPL_AC_PDE_DATA], [
+AC_DEFUN([ZFS_AC_KERNEL_PDE_DATA], [
AC_MSG_CHECKING([whether PDE_DATA() is available])
- SPL_LINUX_TRY_COMPILE_SYMBOL([
+ ZFS_LINUX_TRY_COMPILE_SYMBOL([
#include <linux/proc_fs.h>
], [
PDE_DATA(NULL);
dnl # kernel_write() which was introduced in 3.9 was updated to take
dnl # the offset as a pointer which is needed by vn_rdwr().
dnl #
-AC_DEFUN([SPL_AC_KERNEL_WRITE], [
+AC_DEFUN([ZFS_AC_KERNEL_WRITE], [
AC_MSG_CHECKING([whether kernel_write() takes loff_t pointer])
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/fs.h>
],[
struct file *file = NULL;
dnl # kernel_read() which has existed for forever was updated to take
dnl # the offset as a pointer which is needed by vn_rdwr().
dnl #
-AC_DEFUN([SPL_AC_KERNEL_READ], [
+AC_DEFUN([ZFS_AC_KERNEL_READ], [
AC_MSG_CHECKING([whether kernel_read() takes loff_t pointer])
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/fs.h>
],[
struct file *file = NULL;
dnl # The rw_semaphore.wait_lock member was changed from spinlock_t to
dnl # raw_spinlock_t at commit ddb6c9b58a19edcfac93ac670b066c836ff729f1.
dnl #
-AC_DEFUN([SPL_AC_RWSEM_SPINLOCK_IS_RAW], [
+AC_DEFUN([ZFS_AC_KERNEL_RWSEM_SPINLOCK_IS_RAW], [
AC_MSG_CHECKING([whether struct rw_semaphore member wait_lock is raw])
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/rwsem.h>
],[
struct rw_semaphore dummy_semaphore __attribute__ ((unused));
dnl #
dnl # rwsem-spinlock "->activity" changed to "->count"
dnl #
-AC_DEFUN([SPL_AC_RWSEM_ACTIVITY], [
+AC_DEFUN([ZFS_AC_KERNEL_RWSEM_ACTIVITY], [
AC_MSG_CHECKING([whether struct rw_semaphore has member activity])
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/rwsem.h>
],[
struct rw_semaphore dummy_semaphore __attribute__ ((unused));
dnl #
dnl # rwsem "->count" changed to atomic_long_t type
dnl #
-AC_DEFUN([SPL_AC_RWSEM_ATOMIC_LONG_COUNT], [
+AC_DEFUN([ZFS_AC_KERNEL_RWSEM_ATOMIC_LONG_COUNT], [
AC_MSG_CHECKING(
[whether struct rw_semaphore has atomic_long_t member count])
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/rwsem.h>
],[
DECLARE_RWSEM(dummy_semaphore);
dnl # 3.9 API change,
dnl # Moved things from linux/sched.h to linux/sched/rt.h
dnl #
-AC_DEFUN([SPL_AC_SCHED_RT_HEADER],
+AC_DEFUN([ZFS_AC_KERNEL_SCHED_RT_HEADER],
[AC_MSG_CHECKING([whether header linux/sched/rt.h exists])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/sched.h>
#include <linux/sched/rt.h>
],[
dnl # 4.11 API change,
dnl # Moved things from linux/sched.h to linux/sched/signal.h
dnl #
-AC_DEFUN([SPL_AC_SCHED_SIGNAL_HEADER],
+AC_DEFUN([ZFS_AC_KERNEL_SCHED_SIGNAL_HEADER],
[AC_MSG_CHECKING([whether header linux/sched/signal.h exists])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/sched.h>
#include <linux/sched/signal.h>
],[
dnl # but it was not exported until Linux 3.19. The RHEL 7.x kernels which
dnl # are based on a 3.10 kernel do export this symbol.
dnl #
-AC_DEFUN([SPL_AC_IO_SCHEDULE_TIMEOUT], [
+AC_DEFUN([ZFS_AC_KERNEL_IO_SCHEDULE_TIMEOUT], [
AC_MSG_CHECKING([whether io_schedule_timeout() is available])
- SPL_LINUX_TRY_COMPILE_SYMBOL([
+ ZFS_LINUX_TRY_COMPILE_SYMBOL([
#include <linux/sched.h>
], [
(void) io_schedule_timeout(1);
dnl # 3.9 API change
dnl # set_fs_pwd takes const struct path *
dnl #
-AC_DEFUN([SPL_AC_SET_FS_PWD_WITH_CONST],
+AC_DEFUN([ZFS_AC_KERNEL_SET_FS_PWD_WITH_CONST],
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
[AC_MSG_CHECKING([whether set_fs_pwd() requires const struct path *])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/spinlock.h>
#include <linux/fs_struct.h>
#include <linux/path.h>
AC_DEFINE(HAVE_SET_FS_PWD_WITH_CONST, 1,
[set_fs_pwd() needs const path *])
],[
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/spinlock.h>
#include <linux/fs_struct.h>
#include <linux/path.h>
AC_MSG_RESULT(no)
])
])
+
+
+AC_DEFUN([ZFS_AC_KERNEL_SHRINKER_CALLBACK],[
+ tmp_flags="$EXTRA_KCFLAGS"
+ EXTRA_KCFLAGS="-Werror"
+ dnl #
+ dnl # 2.6.23 to 2.6.34 API change
+ dnl # ->shrink(int nr_to_scan, gfp_t gfp_mask)
+ dnl #
+ AC_MSG_CHECKING([whether old 2-argument shrinker exists])
+ ZFS_LINUX_TRY_COMPILE([
+ #include <linux/mm.h>
+
+ int shrinker_cb(int nr_to_scan, gfp_t gfp_mask);
+ ],[
+ struct shrinker cache_shrinker = {
+ .shrink = shrinker_cb,
+ .seeks = DEFAULT_SEEKS,
+ };
+ register_shrinker(&cache_shrinker);
+ ],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_2ARGS_OLD_SHRINKER_CALLBACK, 1,
+ [old shrinker callback wants 2 args])
+ ],[
+ AC_MSG_RESULT(no)
+ dnl #
+ dnl # 2.6.35 - 2.6.39 API change
+ dnl # ->shrink(struct shrinker *,
+ dnl # int nr_to_scan, gfp_t gfp_mask)
+ dnl #
+ AC_MSG_CHECKING([whether old 3-argument shrinker exists])
+ ZFS_LINUX_TRY_COMPILE([
+ #include <linux/mm.h>
+
+ int shrinker_cb(struct shrinker *, int nr_to_scan,
+ gfp_t gfp_mask);
+ ],[
+ struct shrinker cache_shrinker = {
+ .shrink = shrinker_cb,
+ .seeks = DEFAULT_SEEKS,
+ };
+ register_shrinker(&cache_shrinker);
+ ],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_3ARGS_SHRINKER_CALLBACK, 1,
+ [old shrinker callback wants 3 args])
+ ],[
+ AC_MSG_RESULT(no)
+ dnl #
+ dnl # 3.0 - 3.11 API change
+ dnl # ->shrink(struct shrinker *,
+ dnl # struct shrink_control *sc)
+ dnl #
+ AC_MSG_CHECKING(
+ [whether new 2-argument shrinker exists])
+ ZFS_LINUX_TRY_COMPILE([
+ #include <linux/mm.h>
+
+ int shrinker_cb(struct shrinker *,
+ struct shrink_control *sc);
+ ],[
+ struct shrinker cache_shrinker = {
+ .shrink = shrinker_cb,
+ .seeks = DEFAULT_SEEKS,
+ };
+ register_shrinker(&cache_shrinker);
+ ],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_2ARGS_NEW_SHRINKER_CALLBACK, 1,
+ [new shrinker callback wants 2 args])
+ ],[
+ AC_MSG_RESULT(no)
+ dnl #
+ dnl # 3.12 API change,
+ dnl # ->shrink() is logically split in to
+ dnl # ->count_objects() and ->scan_objects()
+ dnl #
+ AC_MSG_CHECKING(
+ [whether ->count_objects callback exists])
+ ZFS_LINUX_TRY_COMPILE([
+ #include <linux/mm.h>
+
+ unsigned long shrinker_cb(
+ struct shrinker *,
+ struct shrink_control *sc);
+ ],[
+ struct shrinker cache_shrinker = {
+ .count_objects = shrinker_cb,
+ .scan_objects = shrinker_cb,
+ .seeks = DEFAULT_SEEKS,
+ };
+ register_shrinker(&cache_shrinker);
+ ],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_SPLIT_SHRINKER_CALLBACK,
+ 1, [->count_objects exists])
+ ],[
+ AC_MSG_ERROR(error)
+ ])
+ ])
+ ])
+ ])
+ EXTRA_KCFLAGS="$tmp_flags"
+])
+
+dnl #
+dnl # 2.6.39 API change,
+dnl # Shrinker adjust to use common shrink_control structure.
+dnl #
+AC_DEFUN([ZFS_AC_KERNEL_SHRINK_CONTROL_STRUCT], [
+ AC_MSG_CHECKING([whether struct shrink_control exists])
+ ZFS_LINUX_TRY_COMPILE([
+ #include <linux/mm.h>
+ ],[
+ struct shrink_control sc __attribute__ ((unused));
+
+ sc.nr_to_scan = 0;
+ sc.gfp_mask = GFP_KERNEL;
+ ],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_SHRINK_CONTROL_STRUCT, 1,
+ [struct shrink_control exists])
+ ],[
+ AC_MSG_RESULT(no)
+ ])
+])
+++ /dev/null
-AC_DEFUN([SPL_AC_SHRINKER_CALLBACK],[
- tmp_flags="$EXTRA_KCFLAGS"
- EXTRA_KCFLAGS="-Werror"
- dnl #
- dnl # 2.6.23 to 2.6.34 API change
- dnl # ->shrink(int nr_to_scan, gfp_t gfp_mask)
- dnl #
- AC_MSG_CHECKING([whether old 2-argument shrinker exists])
- SPL_LINUX_TRY_COMPILE([
- #include <linux/mm.h>
-
- int shrinker_cb(int nr_to_scan, gfp_t gfp_mask);
- ],[
- struct shrinker cache_shrinker = {
- .shrink = shrinker_cb,
- .seeks = DEFAULT_SEEKS,
- };
- register_shrinker(&cache_shrinker);
- ],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_2ARGS_OLD_SHRINKER_CALLBACK, 1,
- [old shrinker callback wants 2 args])
- ],[
- AC_MSG_RESULT(no)
- dnl #
- dnl # 2.6.35 - 2.6.39 API change
- dnl # ->shrink(struct shrinker *,
- dnl # int nr_to_scan, gfp_t gfp_mask)
- dnl #
- AC_MSG_CHECKING([whether old 3-argument shrinker exists])
- SPL_LINUX_TRY_COMPILE([
- #include <linux/mm.h>
-
- int shrinker_cb(struct shrinker *, int nr_to_scan,
- gfp_t gfp_mask);
- ],[
- struct shrinker cache_shrinker = {
- .shrink = shrinker_cb,
- .seeks = DEFAULT_SEEKS,
- };
- register_shrinker(&cache_shrinker);
- ],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_3ARGS_SHRINKER_CALLBACK, 1,
- [old shrinker callback wants 3 args])
- ],[
- AC_MSG_RESULT(no)
- dnl #
- dnl # 3.0 - 3.11 API change
- dnl # ->shrink(struct shrinker *,
- dnl # struct shrink_control *sc)
- dnl #
- AC_MSG_CHECKING(
- [whether new 2-argument shrinker exists])
- SPL_LINUX_TRY_COMPILE([
- #include <linux/mm.h>
-
- int shrinker_cb(struct shrinker *,
- struct shrink_control *sc);
- ],[
- struct shrinker cache_shrinker = {
- .shrink = shrinker_cb,
- .seeks = DEFAULT_SEEKS,
- };
- register_shrinker(&cache_shrinker);
- ],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_2ARGS_NEW_SHRINKER_CALLBACK, 1,
- [new shrinker callback wants 2 args])
- ],[
- AC_MSG_RESULT(no)
- dnl #
- dnl # 3.12 API change,
- dnl # ->shrink() is logically split in to
- dnl # ->count_objects() and ->scan_objects()
- dnl #
- AC_MSG_CHECKING(
- [whether ->count_objects callback exists])
- SPL_LINUX_TRY_COMPILE([
- #include <linux/mm.h>
-
- unsigned long shrinker_cb(
- struct shrinker *,
- struct shrink_control *sc);
- ],[
- struct shrinker cache_shrinker = {
- .count_objects = shrinker_cb,
- .scan_objects = shrinker_cb,
- .seeks = DEFAULT_SEEKS,
- };
- register_shrinker(&cache_shrinker);
- ],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_SPLIT_SHRINKER_CALLBACK,
- 1, [->count_objects exists])
- ],[
- AC_MSG_ERROR(error)
- ])
- ])
- ])
- ])
- EXTRA_KCFLAGS="$tmp_flags"
-])
-
-dnl #
-dnl # 2.6.39 API change,
-dnl # Shrinker adjust to use common shrink_control structure.
-dnl #
-AC_DEFUN([SPL_AC_SHRINK_CONTROL_STRUCT], [
- AC_MSG_CHECKING([whether struct shrink_control exists])
- SPL_LINUX_TRY_COMPILE([
- #include <linux/mm.h>
- ],[
- struct shrink_control sc __attribute__ ((unused));
-
- sc.nr_to_scan = 0;
- sc.gfp_mask = GFP_KERNEL;
- ],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_SHRINK_CONTROL_STRUCT, 1,
- [struct shrink_control exists])
- ],[
- AC_MSG_RESULT(no)
- ])
-])
dnl # The 'struct fs_struct->lock' was changed from a rwlock_t to
dnl # a spinlock_t to improve the fastpath performance.
dnl #
-AC_DEFUN([SPL_AC_FS_STRUCT_SPINLOCK], [
+AC_DEFUN([ZFS_AC_KERNEL_FS_STRUCT_SPINLOCK], [
AC_MSG_CHECKING([whether struct fs_struct uses spinlock_t])
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/sched.h>
#include <linux/fs_struct.h>
],[
dnl # macros are available as well, since they will be used in the same newer
dnl # kernels that support the new timer_list.func signature.
dnl #
-AC_DEFUN([SPL_AC_KERNEL_TIMER_FUNCTION_TIMER_LIST], [
+AC_DEFUN([ZFS_AC_KERNEL_TIMER_FUNCTION_TIMER_LIST], [
AC_MSG_CHECKING([whether timer_list.function gets a timer_list])
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/timer.h>
void task_expire(struct timer_list *tl) {}
],[
+++ /dev/null
-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.])
- ])
-])
dnl # designed to be a drop-in replacement for udelay where a precise
dnl # sleep / busy-wait is unnecessary.
dnl #
-AC_DEFUN([SPL_AC_USLEEP_RANGE], [
+AC_DEFUN([ZFS_AC_KERNEL_USLEEP_RANGE], [
AC_MSG_CHECKING([whether usleep_range() is available])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/delay.h>
],[
usleep_range(0, 0);
dnl # 2.6.35 API change,
dnl # Unused 'struct dentry *' removed from vfs_fsync() prototype.
dnl #
-AC_DEFUN([SPL_AC_2ARGS_VFS_FSYNC], [
+AC_DEFUN([ZFS_AC_KERNEL_2ARGS_VFS_FSYNC], [
AC_MSG_CHECKING([whether vfs_fsync() wants 2 args])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/fs.h>
],[
vfs_fsync(NULL, 0);
dnl # 4.11 API, a528d35e@torvalds/linux
dnl # vfs_getattr(const struct path *p, struct kstat *s, u32 m, unsigned int f)
dnl #
-AC_DEFUN([SPL_AC_4ARGS_VFS_GETATTR], [
+AC_DEFUN([ZFS_AC_KERNEL_4ARGS_VFS_GETATTR], [
AC_MSG_CHECKING([whether vfs_getattr() wants 4 args])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/fs.h>
],[
vfs_getattr((const struct path *)NULL,
dnl # 3.9 API
dnl # vfs_getattr(struct path *p, struct kstat *s)
dnl #
-AC_DEFUN([SPL_AC_2ARGS_VFS_GETATTR], [
+AC_DEFUN([ZFS_AC_KERNEL_2ARGS_VFS_GETATTR], [
AC_MSG_CHECKING([whether vfs_getattr() wants 2 args])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/fs.h>
],[
vfs_getattr((struct path *) NULL,
dnl # <3.9 API
dnl # vfs_getattr(struct vfsmount *v, struct dentry *d, struct kstat *k)
dnl #
-AC_DEFUN([SPL_AC_3ARGS_VFS_GETATTR], [
+AC_DEFUN([ZFS_AC_KERNEL_3ARGS_VFS_GETATTR], [
AC_MSG_CHECKING([whether vfs_getattr() wants 3 args])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/fs.h>
],[
vfs_getattr((struct vfsmount *)NULL,
dnl # uses schedule(). This API change was made to consolidate all of those
dnl # redundant wait functions.
dnl #
-AC_DEFUN([SPL_AC_WAIT_ON_BIT], [
+AC_DEFUN([ZFS_AC_KERNEL_WAIT_ON_BIT], [
AC_MSG_CHECKING([whether wait_on_bit() takes an action])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/wait.h>
],[
int (*action)(void *) = NULL;
dnl # 4.13 API change
dnl # Renamed struct wait_queue -> struct wait_queue_entry.
dnl #
-AC_DEFUN([SPL_AC_WAIT_QUEUE_ENTRY_T], [
+AC_DEFUN([ZFS_AC_KERNEL_WAIT_QUEUE_ENTRY_T], [
AC_MSG_CHECKING([whether wait_queue_entry_t exists])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/wait.h>
],[
wait_queue_entry_t *entry __attribute__ ((unused));
dnl # Renamed wait_queue_head::task_list -> wait_queue_head::head
dnl # Renamed wait_queue_entry::task_list -> wait_queue_entry::entry
dnl #
-AC_DEFUN([SPL_AC_WAIT_QUEUE_HEAD_ENTRY], [
+AC_DEFUN([ZFS_AC_KERNEL_WAIT_QUEUE_HEAD_ENTRY], [
AC_MSG_CHECKING([whether wq_head->head and wq_entry->entry exist])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/wait.h>
#ifdef HAVE_WAIT_QUEUE_ENTRY_T
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
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
dnl # workspace (268K). The caller can now specific the windowBits and
dnl # memLevel compression parameters to get a smaller workspace.
dnl #
-AC_DEFUN([SPL_AC_2ARGS_ZLIB_DEFLATE_WORKSPACESIZE],
+AC_DEFUN([ZFS_AC_KERNEL_2ARGS_ZLIB_DEFLATE_WORKSPACESIZE],
[AC_MSG_CHECKING([whether zlib_deflate_workspacesize() wants 2 args])
- SPL_LINUX_TRY_COMPILE([
+ ZFS_LINUX_TRY_COMPILE([
#include <linux/zlib.h>
],[
return zlib_deflate_workspacesize(MAX_WBITS, MAX_MEM_LEVEL);
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
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
ZFS_AC_MODULE_SYMVERS
])
-
-dnl #
-dnl # Detect the SPL module to be built against
-dnl #
-AC_DEFUN([ZFS_AC_SPL], [
- AC_ARG_WITH([spl],
- AS_HELP_STRING([--with-spl=PATH],
- [Path to spl source]),
- AS_IF([test "$withval" = "yes"],
- AC_MSG_ERROR([--with-spl=PATH requires a PATH]),
- [splsrc="$withval"]))
-
- AC_ARG_WITH([spl-obj],
- AS_HELP_STRING([--with-spl-obj=PATH],
- [Path to spl build objects]),
- [splbuild="$withval"])
-
- AC_ARG_WITH([spl-timeout],
- AS_HELP_STRING([--with-spl-timeout=SECS],
- [Wait SECS for SPL header and symver file @<:@default=0@:>@]),
- [timeout="$withval"], [timeout=0])
-
- dnl #
- dnl # The existence of spl.release.in is used to identify a valid
- dnl # source directory. In order of preference:
- dnl #
- splsrc0="/var/lib/dkms/spl/${VERSION}/build"
- splsrc1="/usr/local/src/spl-${VERSION}/${LINUX_VERSION}"
- splsrc2="/usr/local/src/spl-${VERSION}"
- splsrc3="/usr/src/spl-${VERSION}/${LINUX_VERSION}"
- splsrc4="/usr/src/spl-${VERSION}"
- splsrc5="../spl/"
- splsrc6="$LINUX"
-
- AC_MSG_CHECKING([spl source directory])
- AS_IF([test -z "${splsrc}"], [
- [all_spl_sources="
- ${splsrc0}
- ${splsrc1}
- ${splsrc2}
- ${splsrc3}
- ${splsrc4}
- ${splsrc5}
- ${splsrc6}"],
- AS_IF([ test -e "${splsrc0}/spl.release.in"], [
- splsrc=${splsrc0}
- ], [ test -e "${splsrc1}/spl.release.in"], [
- splsrc=${splsrc1}
- ], [ test -e "${splsrc2}/spl.release.in"], [
- splsrc=${splsrc2}
- ], [ test -e "${splsrc3}/spl.release.in"], [
- splsrc=$(readlink -f "${splsrc3}")
- ], [ test -e "${splsrc4}/spl.release.in" ], [
- splsrc=${splsrc4}
- ], [ test -e "${splsrc5}/spl.release.in"], [
- splsrc=$(readlink -f "${splsrc5}")
- ], [ test -e "${splsrc6}/spl.release.in" ], [
- splsrc=${splsrc6}
- ], [
- splsrc="[Not found]"
- ])
- ], [
- [all_spl_sources="$withval"],
- AS_IF([test "$splsrc" = "NONE"], [
- splbuild=NONE
- splsrcver=NONE
- ])
- ])
-
- AC_MSG_RESULT([$splsrc])
- AS_IF([ test ! -e "$splsrc/spl.release.in"], [
- AC_MSG_ERROR([
- *** Please make sure the kmod spl devel package for your distribution
- *** is installed then try again. If that fails you can specify the
- *** location of the spl source with the '--with-spl=PATH' option.
- *** The spl version must match the version of ZFS you are building,
- *** ${VERSION}. Failed to find spl.release.in in the following:
- $all_spl_sources])
- ])
-
- dnl #
- dnl # The existence of the spl_config.h is used to identify a valid
- dnl # spl object directory. In many cases the object and source
- dnl # directory are the same, however the objects may also reside
- dnl # is a subdirectory named after the kernel version.
- dnl #
- dnl # This file is supposed to be available after DKMS finishes
- dnl # building the SPL kernel module for the target kernel. The
- dnl # '--with-spl-timeout' option can be passed to pause here,
- dnl # waiting for the file to appear from a concurrently building
- dnl # SPL package.
- dnl #
- AC_MSG_CHECKING([spl build directory])
-
- all_spl_config_locs="${splsrc}/${LINUX_VERSION}
- ${splsrc}"
-
- while true; do
- AS_IF([test -z "$splbuild"], [
- AS_IF([ test -e "${splsrc}/${LINUX_VERSION}/spl_config.h" ], [
- splbuild="${splsrc}/${LINUX_VERSION}"
- ], [ test -e "${splsrc}/spl_config.h" ], [
- splbuild="${splsrc}"
- ], [ find -L "${splsrc}" -name spl_config.h 2> /dev/null | grep -wq spl_config.h ], [
- splbuild=$(find -L "${splsrc}" -name spl_config.h | sed 's,/spl_config.h,,')
- ], [
- splbuild="[Not found]"
- ])
- ])
- AS_IF([test -e "$splbuild/spl_config.h" -o $timeout -le 0], [
- break;
- ], [
- sleep 1
- timeout=$((timeout-1))
- ])
- done
-
- AC_MSG_RESULT([$splbuild])
- AS_IF([ ! test -e "$splbuild/spl_config.h"], [
- AC_MSG_ERROR([
- *** Please make sure the kmod spl devel <kernel> package for your
- *** distribution is installed then try again. If that fails you
- *** can specify the location of the spl objects with the
- *** '--with-spl-obj=PATH' option. Failed to find spl_config.h in
- *** any of the following:
- $all_spl_config_locs])
- ])
-
- AC_MSG_CHECKING([spl source version])
- AS_IF([test -r $splbuild/spl_config.h &&
- fgrep -q SPL_META_VERSION $splbuild/spl_config.h], [
-
- splsrcver=`(echo "#include <spl_config.h>";
- echo "splsrcver=SPL_META_VERSION-SPL_META_RELEASE") |
- cpp -I $splbuild |
- grep "^splsrcver=" | tr -d \" | cut -d= -f2`
- ])
-
- AS_IF([test -z "$splsrcver"], [
- AC_MSG_RESULT([Not found])
- AC_MSG_ERROR([
- *** Cannot determine the version of the spl source.
- *** Please prepare the spl source before running this script])
- ])
-
- AC_MSG_RESULT([$splsrcver])
-
- SPL=${splsrc}
- SPL_OBJ=${splbuild}
- SPL_VERSION=${splsrcver}
-
- AC_SUBST(SPL)
- AC_SUBST(SPL_OBJ)
- AC_SUBST(SPL_VERSION)
-
- dnl #
- dnl # Detect the name used for the SPL Module.symvers file. If one
- dnl # does not exist this is likely because the SPL has been configured
- dnl # but not built. The '--with-spl-timeout' option can be passed
- dnl # to pause here, waiting for the file to appear from a concurrently
- dnl # building SPL package. If the file does not appear in time, a good
- dnl # guess is made as to what this file will be named based on what it
- dnl # is named in the kernel build products. This file will first be
- dnl # used at link time so if the guess is wrong the build will fail
- dnl # then. This unfortunately means the ZFS package does not contain a
- dnl # reliable mechanism to detect symbols exported by the SPL at
- dnl # configure time.
- dnl #
- AC_MSG_CHECKING([spl file name for module symbols])
- SPL_SYMBOLS=NONE
-
- while true; do
- AS_IF([test -r $SPL_OBJ/Module.symvers], [
- SPL_SYMBOLS=Module.symvers
- ], [test -r $SPL_OBJ/Modules.symvers], [
- SPL_SYMBOLS=Modules.symvers
- ], [test -r $SPL_OBJ/module/Module.symvers], [
- SPL_SYMBOLS=Module.symvers
- ], [test -r $SPL_OBJ/module/Modules.symvers], [
- SPL_SYMBOLS=Modules.symvers
- ])
-
- AS_IF([test $SPL_SYMBOLS != NONE -o $timeout -le 0], [
- break;
- ], [
- sleep 1
- timeout=$((timeout-1))
- ])
- done
-
- AS_IF([test "$SPL_SYMBOLS" = NONE], [
- SPL_SYMBOLS=$LINUX_SYMBOLS
- ])
-
- AC_MSG_RESULT([$SPL_SYMBOLS])
- AC_SUBST(SPL_SYMBOLS)
-])
-
dnl #
dnl # Detect the QAT module to be built against
dnl # QAT provides hardware acceleration for data compression:
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 #
], [])
])
+dnl #
+dnl # Check CONFIG_TRIM_UNUSED_KSYMS
+dnl #
+dnl # Verify the kernel has CONFIG_TRIM_UNUSED_KSYMS disabled.
+dnl #
+AC_DEFUN([ZFS_AC_KERNEL_CONFIG_TRIM_UNUSED_KSYMS], [
+ AC_MSG_CHECKING([whether CONFIG_TRIM_UNUSED_KSYM is disabled])
+ ZFS_LINUX_TRY_COMPILE([
+ #if defined(CONFIG_TRIM_UNUSED_KSYMS)
+ #error CONFIG_TRIM_UNUSED_KSYMS not defined
+ #endif
+ ],[ ],[
+ AC_MSG_RESULT([yes])
+ ],[
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([
+ *** This kernel has unused symbols trimming enabled, please disable.
+ *** Rebuild the kernel with CONFIG_TRIM_UNUSED_KSYMS=n set.])
+ ])
+])
+
dnl #
dnl # ZFS_LINUX_CONFTEST_H
dnl #
AC_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
])
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
])
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"'
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
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"
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
ZFS_AC_CONFIG
ZFS_AC_DEBUG
ZFS_AC_DEBUGINFO
+ZFS_AC_DEBUG_KMEM
+ZFS_AC_DEBUG_KMEM_TRACKING
AC_CONFIG_FILES([
Makefile
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
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
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
{
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
-SUBDIRS = linux sys
+SUBDIRS = linux spl sys
COMMON_H = \
$(top_srcdir)/include/zfeature_common.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 =
#include <linux/blkdev.h>
#include <linux/elevator.h>
#include <linux/backing-dev.h>
+#include <linux/hdreg.h>
#ifndef HAVE_FMODE_T
typedef unsigned __bitwise__ fmode_t;
--- /dev/null
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (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) 2018 Lawrence Livermore National Security, LLC.
+ */
+
+#ifndef _ZFS_COMPILER_COMPAT_H
+#define _ZFS_COMPILER_COMPAT_H
+
+#include <linux/compiler.h>
+
+#if !defined(READ_ONCE)
+#define READ_ONCE(x) ACCESS_ONCE(x)
+#endif
+
+#endif /* _ZFS_COMPILER_COMPAT_H */
--- /dev/null
+SUBDIRS = rpc sys
--- /dev/null
+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
--- /dev/null
+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
*/
#ifdef NDEBUG
-#define SPL_DEBUG_STR ""
#define ASSERT(x) ((void)0)
#define ASSERTV(x)
#define ASSERT3B(x,y,z) ((void)0)
*/
#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)
--- /dev/null
+/*
+ * 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 2000 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+/* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */
+/* All Rights Reserved */
+
+/*
+ * University Copyright- Copyright (c) 1982, 1986, 1988
+ * The Regents of the University of California
+ * All Rights Reserved
+ *
+ * University Acknowledgment- Portions of this document are derived from
+ * software developed by the University of California, Berkeley, and its
+ * contributors.
+ */
+
+#ifndef _SYS_ERRNO_H
+#define _SYS_ERRNO_H
+
+#include <linux/errno.h>
+
+#define ENOTSUP EOPNOTSUPP
+
+#endif /* _SYS_ERRNO_H */
#include <sys/types.h>
#include <linux/mutex.h>
#include <linux/lockdep.h>
+#include <linux/compiler_compat.h>
typedef enum {
MUTEX_DEFAULT = 0,
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))
#include <sys/types.h>
#include <linux/rwsem.h>
+#include <linux/sched.h>
/* Linux kernel compatibility */
#if defined(CONFIG_PREEMPT_RT_FULL)
#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
#include <linux/types.h>
#ifndef ULLONG_MAX
-#define ULLONG_MAX (~0ULL)
+#define ULLONG_MAX (~0ULL)
#endif
#ifndef LLONG_MAX
-#define LLONG_MAX ((long long)(~0ULL>>1))
+#define LLONG_MAX ((long long)(~0ULL>>1))
#endif
typedef enum {
#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 | \
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 */
$(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 \
#define _ABD_H
#include <sys/isa_defs.h>
-#include <sys/int_types.h>
#include <sys/debug.h>
#include <sys/refcount.h>
#ifdef _KERNEL
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);
#endif
#ifdef _KERNEL
-#include <sys/varargs.h>
#include <sys/nvpair.h>
#else
#include <libnvpair.h>
--- /dev/null
+/*
+ * 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.
+ */
+
+/*
+ * sys/note.h: interface for annotating source with info for tools
+ *
+ * This is the underlying interface; NOTE (/usr/include/note.h) is the
+ * preferred interface, but all exported header files should include this
+ * file directly and use _NOTE so as not to take "NOTE" from the user's
+ * namespace. For consistency, *all* kernel source should use _NOTE.
+ *
+ * By default, annotations expand to nothing. This file implements
+ * that. Tools using annotations will interpose a different version
+ * of this file that will expand annotations as needed.
+ */
+
+#ifndef _SYS_NOTE_H
+#define _SYS_NOTE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _NOTE
+#define _NOTE(s)
+#endif
+
+#define NOTE(s) _NOTE(s)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SYS_NOTE_H */
#include <sys/types.h>
#include <sys/time.h>
#include <sys/errno.h>
-#include <sys/va_list.h>
-
-#if defined(_KERNEL) && !defined(_BOOT)
-#include <sys/kmem.h>
-#endif
#ifdef __cplusplus
extern "C" {
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
#define _SYS_XVATTR_H
#include <sys/vnode.h>
+#include <sys/strings.h>
#define AV_SCANSTAMP_SZ 32 /* length of anti-virus scanstamp */
#include <sys/note.h>
#include <sys/types.h>
-#include <sys/t_lock.h>
#include <sys/atomic.h>
#include <sys/sysmacros.h>
-#include <sys/bitmap.h>
+#include <sys/vmsystm.h>
+#include <sys/condvar.h>
#include <sys/cmn_err.h>
#include <sys/kmem.h>
#include <sys/kmem_cache.h>
#include <sys/vmem.h>
#include <sys/taskq.h>
-#include <sys/buf.h>
#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/cpuvar.h>
#include <sys/kobj.h>
-#include <sys/conf.h>
#include <sys/disp.h>
#include <sys/debug.h>
#include <sys/random.h>
+#include <sys/strings.h>
#include <sys/byteorder.h>
-#include <sys/systm.h>
#include <sys/list.h>
#include <sys/uio_impl.h>
-#include <sys/dirent.h>
#include <sys/time.h>
-#include <vm/seg_kmem.h>
#include <sys/zone.h>
#include <sys/sdt.h>
#include <sys/kstat.h>
#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
#ifndef _SYS_FS_ZFS_DELAY_H
#define _SYS_FS_ZFS_DELAY_H
-#include <linux/delay_compat.h>
+#include <sys/timer.h>
/*
* Generic wrapper to sleep until a given time.
#define _SYS_FS_ZFS_FUID_H
#ifdef _KERNEL
-#include <sys/kidmap.h>
#include <sys/sid.h>
#include <sys/dmu.h>
#include <sys/zfs_vfsops.h>
#ifdef _KERNEL
#include <sys/isa_defs.h>
#include <sys/types32.h>
-#include <sys/attr.h>
#include <sys/list.h>
#include <sys/dmu.h>
#include <sys/sa.h>
#include <linux/dcache_compat.h>
#include <linux/exportfs.h>
#include <linux/falloc.h>
-#include <linux/file_compat.h>
#include <linux/parser.h>
#include <linux/task_io_accounting_ops.h>
#include <linux/vfs_compat.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
+#include <string.h>
#include <strings.h>
#include <unistd.h>
#include <uuid/uuid.h>
#include <libintl.h>
#include <sys/types.h>
#include <sys/inttypes.h>
+#include <sys/note.h>
#include <stdarg.h>
-#include <note.h>
#include "libnvpair.h"
/*
*/
#include <stdio.h>
+#include <string.h>
#include <strings.h>
#include <fcntl.h>
+#include <errno.h>
#include <sys/wait.h>
#include <unistd.h>
#include <libzfs.h>
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
+#include <string.h>
#include <strings.h>
#include <fcntl.h>
#include <sys/wait.h>
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 \
+++ /dev/null
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License (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
- */
-
-#ifndef _LIBSPL_ATTR_H
-#define _LIBSPL_ATTR_H
-
-#endif /* _LIBSPL_ATTR_H */
+++ /dev/null
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License"). You may not use this file except in compliance
- * with the License.
- *
- * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-/*
- * Copyright (c) 1994 by Sun Microsystems, Inc.
- */
-
-/*
- * note.h: interface for annotating source with info for tools
- *
- * NOTE is the default interface, but if the identifier NOTE is in use for
- * some other purpose, you may prepare a similar header file using your own
- * identifier, mapping that identifier to _NOTE. Also, exported header
- * files should *not* use NOTE, since the name may already be in use in
- * a program's namespace. Rather, exported header files should include
- * sys/note.h directly and use _NOTE. For consistency, all kernel source
- * should use _NOTE.
- */
-
-#ifndef _NOTE_H
-#define _NOTE_H
-
-#include <sys/note.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define NOTE _NOTE
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _NOTE_H */
+++ /dev/null
-/*
- * 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 2006 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
- */
-
-#ifndef _LIBSPL_STRINGS_H
-#define _LIBSPL_STRINGS_H
-
-#include <string.h>
-#include_next <strings.h>
-
-#endif
$(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 \
$(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 \
$(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 \
+++ /dev/null
-/*
- * 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 2008 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
- */
-
-#ifndef _LIBSPL_SYS_COMPRESS_H
-#define _LIBSPL_SYS_COMPRESS_H
-
-#endif /* _LIBSPL_SYS_COMPRESS_H */
+++ /dev/null
-/*
- * 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.
- */
-
-/*
- * sys/note.h: interface for annotating source with info for tools
- *
- * This is the underlying interface; NOTE (/usr/include/note.h) is the
- * preferred interface, but all exported header files should include this
- * file directly and use _NOTE so as not to take "NOTE" from the user's
- * namespace. For consistency, *all* kernel source should use _NOTE.
- *
- * By default, annotations expand to nothing. This file implements
- * that. Tools using annotations will interpose a different version
- * of this file that will expand annotations as needed.
- */
-
-#ifndef _SYS_NOTE_H
-#define _SYS_NOTE_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef _NOTE
-#define _NOTE(s)
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _SYS_NOTE_H */
--- /dev/null
+/*
+ * 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
+ */
+
+#ifndef __SYS_STDTYPES_H
+#define __SYS_STDTYPES_H
+
+typedef enum {
+ B_FALSE = 0,
+ B_TRUE = 1
+} boolean_t;
+
+typedef unsigned char uchar_t;
+typedef unsigned short ushort_t;
+typedef unsigned int uint_t;
+typedef unsigned long ulong_t;
+typedef unsigned long long u_longlong_t;
+typedef long long longlong_t;
+
+typedef longlong_t offset_t;
+typedef u_longlong_t u_offset_t;
+typedef u_longlong_t len_t;
+typedef longlong_t diskaddr_t;
+
+typedef ulong_t pgcnt_t; /* number of pages */
+typedef long spgcnt_t; /* signed number of pages */
+
+typedef short pri_t;
+typedef ushort_t o_mode_t; /* old file attribute type */
+
+typedef int major_t;
+typedef int minor_t;
+
+typedef short index_t;
+
+#endif /* __SYS_STDTYPES_H */
--- /dev/null
+/*
+ * 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 2006 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#ifndef _LIBSPL_SYS_STRINGS_H
+#define _LIBSPL_SYS_STRINGS_H
+
+#include <string.h>
+#include <strings.h>
+
+#endif
#define offsetof(s, m) ((size_t)(&(((s *)0)->m)))
#endif
+#define _NOTE(x)
+
#endif /* _LIBSPL_SYS_SYSMACROS_H */
+++ /dev/null
-/*
- * 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 2009 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
- */
-
-#ifndef _LIBSPL_SYS_SYSTM_H
-#define _LIBSPL_SYS_SYSTM_H
-
-#endif /* _LIBSPL_SYS_SYSTM_H */
#include_next <sys/types.h>
#include <sys/types32.h>
#include <sys/va_list.h>
+#include <sys/stdtypes.h>
#ifndef HAVE_INTTYPES
#include <inttypes.h>
-
-typedef enum boolean { B_FALSE, B_TRUE } boolean_t;
-
-typedef unsigned char uchar_t;
-typedef unsigned short ushort_t;
-typedef unsigned int uint_t;
-typedef unsigned long ulong_t;
-
-typedef long long longlong_t;
-typedef unsigned long long u_longlong_t;
#endif /* HAVE_INTTYPES */
-typedef longlong_t offset_t;
-typedef u_longlong_t u_offset_t;
-typedef u_longlong_t len_t;
-typedef longlong_t diskaddr_t;
-
-typedef ulong_t pgcnt_t; /* number of pages */
-typedef long spgcnt_t; /* signed number of pages */
-
-typedef short pri_t;
-
typedef int zoneid_t;
typedef int projid_t;
-typedef int major_t;
-typedef int minor_t;
-
-typedef ushort_t o_mode_t; /* old file attribute type */
-typedef short index_t;
-
/*
* Definitions remaining from previous partial support for 64-bit file
* offsets. This partial support for devices greater than 2gb requires
#ifndef _SYS_TYPES32_H
#define _SYS_TYPES32_H
-
-
#include <sys/inttypes.h>
#ifdef __cplusplus
#include <stdlib.h>
#include <stdio.h>
+#include <string.h>
#ifdef __cplusplus
extern "C" {
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include <strings.h>
#define FACILITY_FMT "%s (%s): "
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
-#include <attr.h>
#include <stddef.h>
#include <unistd.h>
#include <stdio.h>
#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 '+'
.SH AUTHORS
This man page was written by Darik Horn <dajhorn@vanadac.com>.
.SH SEE ALSO
-.BR splat (1),
.BR zfs (8),
.BR zpool-features (5),
.BR ztest (1)
-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"
subdir-m += icp
subdir-m += lua
subdir-m += nvpair
+subdir-m += spl
subdir-m += unicode
subdir-m += zcommon
subdir-m += zfs
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
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
@# 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
return (AVL_NODE2DATA(node, off));
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
+#include <linux/module.h>
+
static int __init
avl_init(void)
{
* Portions copyright (c) 2013, Saso Kiselkov, All rights reserved
*/
-/* determine where we can get bcopy/bzero declarations */
-#ifdef _KERNEL
-#include <sys/systm.h>
-#else
-#include <strings.h>
-#endif
+#include <sys/strings.h>
#include <sys/edonr.h>
#include <sys/debug.h>
#ifndef _CRYPTO_EDONR_BYTEORDER_H
#define _CRYPTO_EDONR_BYTEORDER_H
-
+#include <sys/sysmacros.h>
#include <sys/param.h>
#if defined(__BYTE_ORDER)
#define SKEIN_PORT_CODE /* instantiate any code in skein_port.h */
+#include <sys/sysmacros.h>
#include <sys/types.h>
-#include <sys/note.h>
#include <sys/skein.h> /* get the Skein API definitions */
#include "skein_impl.h" /* get internal definitions */
#define _SKEIN_IMPL_H_
#include <sys/skein.h>
+#include <sys/strings.h>
+#include <sys/note.h>
#include "skein_impl.h"
#include "skein_port.h"
-/* determine where we can get bcopy/bzero declarations */
-#ifdef _KERNEL
-#include <sys/systm.h>
-#else
-#include <strings.h>
-#endif
-
/*
* "Internal" Skein definitions
* -- not needed for sequential hashing API, but will be
#define _SKEIN_PORT_H_
#include <sys/types.h> /* get integer type definitions */
-#include <sys/systm.h> /* for bcopy() */
#ifndef RotL_64
#define RotL_64(x, N) (((x) << (N)) | ((x) >> (64 - (N))))
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);
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
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);
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);
mutex_exit(&ntfy_list_lock);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(crypto_mech2id);
#endif
return (0);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
module_exit(icp_fini);
module_init(icp_init);
MODULE_AUTHOR(ZFS_META_AUTHOR);
#include <sys/crypto/common.h>
#include <sys/crypto/spi.h>
#include <sys/sysmacros.h>
-#include <sys/systm.h>
#include <sys/edonr.h>
/*
#include <sys/crypto/common.h>
#include <sys/crypto/spi.h>
#include <sys/sysmacros.h>
-#include <sys/systm.h>
#define SKEIN_MODULE_IMPL
#include <sys/skein.h>
luaC_objbarrier(L, f1, *up2);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
static int __init
lua_init(void)
lua_pop(L, 1);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(luaL_argerror);
EXPORT_SYMBOL(luaL_error);
return 1;
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(luaopen_base);
return 1;
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(luaopen_coroutine);
return 1;
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(luaopen_string);
return 1;
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(luaopen_table);
return (rv);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(fnvlist_alloc);
EXPORT_SYMBOL(fnvlist_free);
* Copyright (c) 2015, 2017 by Delphix. All rights reserved.
*/
-#include <sys/stropts.h>
#include <sys/debug.h>
#include <sys/isa_defs.h>
-#include <sys/int_limits.h>
#include <sys/nvpair.h>
#include <sys/nvpair_impl.h>
-#include <rpc/types.h>
+#include <sys/types.h>
+#include <sys/strings.h>
#include <rpc/xdr.h>
-#if defined(_KERNEL) && !defined(_BOOT)
-#include <sys/varargs.h>
-#include <sys/ddi.h>
+#if defined(_KERNEL)
#include <sys/sunddi.h>
#include <sys/sysmacros.h>
#else
#include <stdarg.h>
#include <stdlib.h>
-#include <string.h>
-#include <strings.h>
#include <stddef.h>
#endif
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);
}
#else
return (nv_alloc_nosleep);
-#endif /* _KERNEL && !_BOOT */
+#endif /* _KERNEL */
}
/*
sepp = idxp;
/* determine the index value */
-#if defined(_KERNEL) && !defined(_BOOT)
+#if defined(_KERNEL)
if (ddi_strtol(idxp, &idxep, 0, &idx))
goto fail;
#else
return (err);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
static int __init
nvpair_init(void)
{
* Use is subject to license terms.
*/
-
-
-#include <sys/stropts.h>
#include <sys/isa_defs.h>
#include <sys/nvpair.h>
#include <sys/sysmacros.h>
-#if defined(_KERNEL) && !defined(_BOOT)
-#include <sys/varargs.h>
-#else
-#include <stdarg.h>
-#include <strings.h>
-#endif
/*
* This allocator is very simple.
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
--- /dev/null
+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
--- /dev/null
+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`
#include <sys/condvar.h>
#include <sys/time.h>
#include <linux/hrtimer.h>
+#include <linux/compiler_compat.h>
void
__cv_init(kcondvar_t *cvp, char *name, kcv_type_t type, void *arg)
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 */
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 */
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 */
#include <sys/sysmacros.h>
#include <sys/cmn_err.h>
-#include <linux/ratelimit.h>
/*
* It is often useful to actually have the panic crash the node so you
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);
#include <sys/strings.h>
#include <linux/kmod.h>
-char spl_version[32] = "SPL v" SPL_META_VERSION "-" SPL_META_RELEASE;
+char spl_version[32] = "SPL v" ZFS_META_VERSION "-" ZFS_META_RELEASE;
EXPORT_SYMBOL(spl_version);
/* BEGIN CSTYLED */
unsigned long spl_hostid = 0;
EXPORT_SYMBOL(spl_hostid);
+/* BEGIN CSTYLED */
module_param(spl_hostid, ulong, 0644);
MODULE_PARM_DESC(spl_hostid, "The system hostid.");
/* END CSTYLED */
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:
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();
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);
#include <sys/kmem.h>
#include <sys/vmem.h>
#include <linux/mm.h>
-#include <linux/ratelimit.h>
/*
* As a general rule kmem_alloc() allocations should be small, preferably
}
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
* 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",
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.
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 */
*/
#include <sys/rwlock.h>
+#include <linux/module.h>
#if defined(CONFIG_PREEMPT_RT_FULL)
/* 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
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),
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
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);
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)
*/
#include <sys/types.h>
-#ifdef _KERNEL
+#include <sys/strings.h>
#include <sys/param.h>
#include <sys/sysmacros.h>
-#include <sys/systm.h>
#include <sys/debug.h>
#include <sys/kmem.h>
-#include <sys/ddi.h>
#include <sys/sunddi.h>
-#else
#include <sys/u8_textprep.h>
-#include <strings.h>
-#endif /* _KERNEL */
#include <sys/byteorder.h>
#include <sys/errno.h>
#include <sys/u8_textprep_data.h>
return (ret_val);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
static int __init
unicode_init(void)
{
#ifdef _KERNEL
#include <sys/param.h>
#include <sys/sysmacros.h>
-#include <sys/systm.h>
#include <sys/debug.h>
#include <sys/kmem.h>
#include <sys/sunddi.h>
return (0);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(uconv_u16tou32);
EXPORT_SYMBOL(uconv_u16tou8);
EXPORT_SYMBOL(uconv_u32tou16);
* Copyright (c) 2014, Nexenta Systems, Inc. All rights reserved.
*/
-#ifdef _KERNEL
-#include <sys/systm.h>
-#else
+#ifndef _KERNEL
#include <errno.h>
#include <string.h>
#endif
}
}
-#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);
* then a separate file should to be created.
*/
-#if defined(_KERNEL)
-#include <sys/systm.h>
-#else
+#if !defined(_KERNEL)
#include <string.h>
#endif
#include <sys/types.h>
#include <sys/fs/zfs.h>
-#include <sys/int_limits.h>
#include <sys/nvpair.h>
#include "zfs_comutil.h"
#include <sys/zfs_ratelimit.h>
"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);
#include <sys/zfs_context.h>
#if defined(_KERNEL)
-#include <sys/systm.h>
#include <sys/sunddi.h>
#include <sys/ctype.h>
#else
#include <stdio.h>
#include <unistd.h>
-#include <strings.h>
#include <libnvpair.h>
#include <ctype.h>
#endif
+#include <sys/strings.h>
#include <sys/dsl_deleg.h>
#include "zfs_prop.h"
#include "zfs_deleg.h"
}
}
-#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);
};
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
#include <linux/mod_compat.h>
static int
#include <linux/simd_aarch64.h>
#include <sys/spa_checksum.h>
+#include <sys/strings.h>
#include <zfs_fletcher.h>
-#include <strings.h>
static void
fletcher_4_aarch64_neon_init(fletcher_4_ctx_t *ctx)
#include <sys/byteorder.h>
#include <sys/frame.h>
#include <sys/spa_checksum.h>
+#include <sys/strings.h>
#include <zfs_fletcher.h>
-#include <strings.h>
#define __asm __asm__ __volatile__
#include <linux/simd_x86.h>
#include <sys/spa_checksum.h>
+#include <sys/strings.h>
#include <zfs_fletcher.h>
-#include <strings.h>
static void
fletcher_4_avx2_init(fletcher_4_ctx_t *ctx)
#include <linux/simd_x86.h>
#include <sys/spa_checksum.h>
#include <sys/byteorder.h>
+#include <sys/strings.h>
#include <zfs_fletcher.h>
-#include <strings.h>
static void
fletcher_4_sse2_init(fletcher_4_ctx_t *ctx)
#include <sys/byteorder.h>
#include <sys/spa_checksum.h>
+#include <sys/strings.h>
#include <zfs_fletcher.h>
-#include <strings.h>
static void
fletcher_4_superscalar_init(fletcher_4_ctx_t *ctx)
#include <sys/byteorder.h>
#include <sys/spa_checksum.h>
+#include <sys/strings.h>
#include <zfs_fletcher.h>
-#include <strings.h>
static void
fletcher_4_superscalar4_init(fletcher_4_ctx_t *ctx)
* Each function returns 0 on success, -1 on error.
*/
-#if defined(_KERNEL)
-#include <sys/systm.h>
-#else
+#if !defined(_KERNEL)
#include <string.h>
#endif
return (0);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(pool_namecheck);
EXPORT_SYMBOL(dataset_namecheck);
EXPORT_SYMBOL(zfs_component_namecheck);
#include "zfs_deleg.h"
#include "zfs_fletcher.h"
-#if defined(_KERNEL)
-#include <sys/systm.h>
-#else
+#if !defined(_KERNEL)
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#endif
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
static int __init
zcommon_init(void)
{
#include <sys/types.h>
#include <sys/uio_impl.h>
+#include <sys/sysmacros.h>
+#include <sys/strings.h>
#include <linux/kmap_compat.h>
/*
#include "zfs_prop.h"
-#if defined(_KERNEL)
-#include <sys/systm.h>
-#else
+#if !defined(_KERNEL)
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
}
#endif
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
/* zpool property functions */
EXPORT_SYMBOL(zpool_prop_init);
EXPORT_SYMBOL(zpool_prop_get_type);
#include "zfs_deleg.h"
#if defined(_KERNEL)
-#include <sys/systm.h>
-#include <util/qsort.h>
+#include <linux/sort.h>
+#define qsort(base, num, size, cmp) \
+ sort(base, num, size, cmp, NULL)
#else
#include <stdlib.h>
#include <string.h>
#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);
local_irq_restore(flags);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
/*
* bio_nr_pages for ABD.
* @off is the offset in @abd
#include <sys/zil.h>
#include <sys/fm/fs/zfs.h>
#ifdef _KERNEL
+#include <sys/shrinker.h>
#include <sys/vmsystm.h>
-#include <vm/anon.h>
-#include <sys/fs/swapnode.h>
#include <sys/zpl.h>
-#include <linux/mm_compat.h>
#include <linux/page_compat.h>
#endif
#include <sys/callb.h>
{
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\
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
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);
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
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
}
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(dbuf_find);
EXPORT_SYMBOL(dbuf_is_metadata);
EXPORT_SYMBOL(dbuf_destroy);
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
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
#include <sys/ddt.h>
#include <sys/zap.h>
#include <sys/dmu_tx.h>
-#include <util/sscanf.h>
int ddt_zap_leaf_blockshift = 12;
int ddt_zap_indirect_blockshift = 12;
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);
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);
}
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(dmu_objset_zil);
EXPORT_SYMBOL(dmu_objset_pool);
EXPORT_SYMBOL(dmu_objset_ds);
return (err);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(traverse_dataset);
EXPORT_SYMBOL(traverse_pool);
#include <sys/sa.h>
#include <sys/sa_impl.h>
#include <sys/zfs_context.h>
-#include <sys/varargs.h>
#include <sys/trace_dmu.h>
typedef void (*dmu_tx_hold_func_t)(dmu_tx_t *tx, struct dnode *dn,
}
}
-#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);
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");
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");
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
}
-#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);
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
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);
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);
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,
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
#include <sys/nvpair.h>
#include <sys/cmn_err.h>
#include <sys/sysmacros.h>
-#include <sys/compress.h>
#include <sys/sunddi.h>
#include <sys/systeminfo.h>
#include <sys/fm/util.h>
#ifdef _KERNEL
#include <sys/atomic.h>
#include <sys/condvar.h>
-#include <sys/cpuvar.h>
-#include <sys/systm.h>
-#include <sys/dumphdr.h>
-#include <sys/cpuvar.h>
#include <sys/console.h>
#include <sys/kobj.h>
#include <sys/time.h>
#include <sys/debug.h>
#include <sys/types.h>
+#include <sys/strings.h>
#include "qat.h"
#ifdef _KERNEL
-#include <sys/systm.h>
#include <sys/zmod.h>
-
typedef size_t zlen_t;
#define compress_func z_compress_level
#define uncompress_func z_uncompress
#else /* _KERNEL */
-#include <strings.h>
#include <zlib.h>
-
typedef uLongf zlen_t;
#define compress_func compress2
#define uncompress_func uncompress
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,
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
mutex_exit(&spa_namespace_lock);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
#include <linux/mod_compat.h>
static int
return (list_link_active(link));
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
/* BEGIN CSTYLED */
#include <sys/types.h>
-#include <sys/systm.h>
#include <sys/pathname.h>
#include <sys/kmem.h>
+#include <sys/sysmacros.h>
/*
* Pathname utilities.
#include <sys/zfs_context.h>
#include <sys/types.h>
#include <sys/param.h>
-#include <sys/systm.h>
#include <sys/sysmacros.h>
#include <sys/dmu.h>
#include <sys/dmu_impl.h>
#ifdef _KERNEL
#include <sys/fm/protocol.h>
#include <sys/fm/util.h>
-#include <sys/bootprops.h>
#include <sys/callb.h>
-#include <sys/cpupart.h>
-#include <sys/pool.h>
-#include <sys/sysdc.h>
#include <sys/zone.h>
#endif /* _KERNEL */
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 */
static void
spa_thread(void *arg)
{
+ psetid_t zio_taskq_psrset_bind = PS_NONE;
callb_cpr_t cprinfo;
spa_t *spa = arg;
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);
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");
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);
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);
spa_history_zone(void)
{
#ifdef _KERNEL
-#ifdef HAVE_SPL
return ("linux");
-#else
- return (curproc->p_zone->zone_name);
-#endif
#else
return (NULL);
#endif
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);
spa->spa_missing_tvds = missing;
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
#include <linux/mod_compat.h>
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,
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);
}
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(vdev_fault);
EXPORT_SYMBOL(vdev_degrade);
EXPORT_SYMBOL(vdev_online);
}
}
-#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");
#include <sys/abd.h>
#include <sys/fs/zfs.h>
#include <sys/zio.h>
-#include <sys/sunldi.h>
#include <linux/mod_compat.h>
char *zfs_vdev_scheduler = VDEV_SCHEDULER;
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);
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);
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);
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,
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");
return (err);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
#include <linux/mod_compat.h>
static int
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");
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);
#include <sys/zcp_iter.h>
#include <sys/zcp_prop.h>
#include <sys/zcp_global.h>
-#include <util/sscanf.h>
#ifndef KM_NORMALPRI
#define KM_NORMALPRI 0
#include <sys/types.h>
#include <sys/param.h>
#include <sys/time.h>
-#include <sys/systm.h>
#include <sys/sysmacros.h>
-#include <sys/resource.h>
#include <sys/vfs.h>
#include <sys/vnode.h>
#include <sys/sid.h>
#include <sys/kmem.h>
#include <sys/cmn_err.h>
#include <sys/errno.h>
-#include <sys/unistd.h>
#include <sys/sdt.h>
#include <sys/fs/zfs.h>
#include <sys/mode.h>
#include <sys/sa.h>
#include <sys/trace_acl.h>
#include <sys/zpl.h>
-#include "fs/fs_subr.h"
#define ALLOW ACE_ACCESS_ALLOWED_ACE_TYPE
#define DENY ACE_ACCESS_DENIED_ACE_TYPE
#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)
{
}
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(zfs_oldacl_byteswap);
EXPORT_SYMBOL(zfs_acl_byteswap);
EXPORT_SYMBOL(zfs_znode_byteswap);
#include <sys/types.h>
#include <sys/param.h>
#include <sys/time.h>
-#include <sys/systm.h>
#include <sys/sysmacros.h>
#include <sys/pathname.h>
#include <sys/vfs.h>
-#include <sys/vfs_opreg.h>
#include <sys/zfs_ctldir.h>
#include <sys/zfs_ioctl.h>
#include <sys/zfs_vfsops.h>
#include <sys/dmu_objset.h>
#include <sys/dsl_destroy.h>
#include <sys/dsl_deleg.h>
-#include <sys/mount.h>
#include <sys/zpl.h>
#include "zfs_namecheck.h"
#include <sys/types.h>
#include <sys/param.h>
#include <sys/time.h>
-#include <sys/systm.h>
#include <sys/sysmacros.h>
-#include <sys/resource.h>
#include <sys/vfs.h>
#include <sys/vnode.h>
#include <sys/file.h>
#include <sys/cmn_err.h>
#include <sys/errno.h>
#include <sys/stat.h>
-#include <sys/unistd.h>
#include <sys/sunddi.h>
#include <sys/random.h>
#include <sys/policy.h>
#include <sys/zfs_acl.h>
#include <sys/zfs_vnops.h>
#include <sys/fs/zfs.h>
-#include "fs/fs_subr.h"
#include <sys/zap.h>
#include <sys/dmu.h>
#include <sys/atomic.h>
#include <sys/zfs_fuid.h>
#include <sys/sa.h>
#include <sys/zfs_sa.h>
-#include <sys/dnlc.h>
-#include <sys/extdirent.h>
/*
* zfs_match_find() is used by zfs_dirent_lock() to peform zap lookups
#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);
#include <sys/refcount.h>
#include <sys/nvpair.h>
#ifdef _KERNEL
-#include <sys/kidmap.h>
#include <sys/sid.h>
#include <sys/zfs_vfsops.h>
#include <sys/zfs_znode.h>
#include <sys/param.h>
#include <sys/errno.h>
#include <sys/uio.h>
-#include <sys/buf.h>
-#include <sys/modctl.h>
-#include <sys/open.h>
#include <sys/file.h>
#include <sys/kmem.h>
-#include <sys/conf.h>
#include <sys/cmn_err.h>
#include <sys/stat.h>
#include <sys/zfs_ioctl.h>
#include <sys/spa_impl.h>
#include <sys/vdev.h>
#include <sys/vdev_impl.h>
-#include <sys/priv_impl.h>
#include <sys/dmu.h>
#include <sys/dsl_dir.h>
#include <sys/dsl_dataset.h>
#include <sys/dmu_objset.h>
#include <sys/dmu_impl.h>
#include <sys/dmu_tx.h>
-#include <sys/ddi.h>
#include <sys/sunddi.h>
-#include <sys/sunldi.h>
#include <sys/policy.h>
#include <sys/zone.h>
#include <sys/nvpair.h>
#include <sys/pathname.h>
-#include <sys/mount.h>
#include <sys/sdt.h>
#include <sys/fs/zfs.h>
#include <sys/zfs_ctldir.h>
#include <sys/zfs_onexit.h>
#include <sys/zvol.h>
#include <sys/dsl_scan.h>
-#include <sharefs/share.h>
#include <sys/fm/util.h>
#include <sys/dsl_crypt.h>
ZFS_META_VERSION, ZFS_META_RELEASE, ZFS_DEBUG_STR);
}
-#ifdef HAVE_SPL
+#if defined(_KERNEL)
module_init(_init);
module_exit(_fini);
MODULE_AUTHOR(ZFS_META_AUTHOR);
MODULE_LICENSE(ZFS_META_LICENSE);
MODULE_VERSION(ZFS_META_VERSION "-" ZFS_META_RELEASE);
-#endif /* HAVE_SPL */
+#endif
#include <sys/types.h>
#include <sys/param.h>
-#include <sys/systm.h>
#include <sys/sysmacros.h>
#include <sys/cmn_err.h>
#include <sys/kmem.h>
#include <sys/dmu.h>
#include <sys/spa.h>
#include <sys/zfs_fuid.h>
-#include <sys/ddi.h>
#include <sys/dsl_dataset.h>
/*
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
#include <sys/types.h>
#include <sys/param.h>
#include <sys/errno.h>
-#include <sys/open.h>
#include <sys/kmem.h>
-#include <sys/conf.h>
-#include <sys/ddi.h>
#include <sys/sunddi.h>
#include <sys/zfs_ioctl.h>
-#include <sys/mkdev.h>
#include <sys/zfs_onexit.h>
#include <sys/zvol.h>
#include <sys/types.h>
#include <sys/param.h>
-#include <sys/systm.h>
#include <sys/sysmacros.h>
#include <sys/cmn_err.h>
#include <sys/kmem.h>
*/
#include <sys/zfs_rlock.h>
+#include <sys/sysmacros.h>
/*
* Check if a write lock can be grabbed, or wait and recheck until available.
#include <sys/types.h>
#include <sys/param.h>
-#include <sys/systm.h>
#include <sys/sysmacros.h>
#include <sys/kmem.h>
#include <sys/pathname.h>
#include <sys/vnode.h>
#include <sys/vfs.h>
-#include <sys/vfs_opreg.h>
#include <sys/mntent.h>
-#include <sys/mount.h>
#include <sys/cmn_err.h>
-#include "fs/fs_subr.h"
#include <sys/zfs_znode.h>
#include <sys/zfs_vnops.h>
#include <sys/zfs_dir.h>
#include <sys/zap.h>
#include <sys/sa.h>
#include <sys/sa_impl.h>
-#include <sys/varargs.h>
#include <sys/policy.h>
#include <sys/atomic.h>
-#include <sys/mkdev.h>
-#include <sys/modctl.h>
-#include <sys/refstr.h>
#include <sys/zfs_ioctl.h>
#include <sys/zfs_ctldir.h>
#include <sys/zfs_fuid.h>
-#include <sys/bootconf.h>
#include <sys/sunddi.h>
-#include <sys/dnlc.h>
#include <sys/dmu_objset.h>
#include <sys/spa_boot.h>
#include <sys/zpl.h>
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);
#include <sys/types.h>
#include <sys/param.h>
#include <sys/time.h>
-#include <sys/systm.h>
#include <sys/sysmacros.h>
-#include <sys/resource.h>
#include <sys/vfs.h>
-#include <sys/vfs_opreg.h>
#include <sys/file.h>
#include <sys/stat.h>
#include <sys/kmem.h>
#include <sys/uio.h>
#include <sys/vmsystm.h>
#include <sys/atomic.h>
-#include <vm/pvn.h>
#include <sys/pathname.h>
#include <sys/cmn_err.h>
#include <sys/errno.h>
-#include <sys/unistd.h>
#include <sys/zfs_dir.h>
#include <sys/zfs_acl.h>
#include <sys/zfs_ioctl.h>
#include <sys/dbuf.h>
#include <sys/zap.h>
#include <sys/sa.h>
-#include <sys/dirent.h>
#include <sys/policy.h>
#include <sys/sunddi.h>
#include <sys/sid.h>
#include <sys/mode.h>
-#include "fs/fs_subr.h"
#include <sys/zfs_ctldir.h>
#include <sys/zfs_fuid.h>
#include <sys/zfs_sa.h>
#include <sys/zfs_vnops.h>
-#include <sys/dnlc.h>
#include <sys/zfs_rlock.h>
-#include <sys/extdirent.h>
-#include <sys/kidmap.h>
#include <sys/cred.h>
-#include <sys/attr.h>
#include <sys/zpl.h>
#include <sys/zil.h>
#include <sys/sa_impl.h>
}
#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);
#include <sys/types.h>
#include <sys/param.h>
#include <sys/time.h>
-#include <sys/systm.h>
#include <sys/sysmacros.h>
-#include <sys/resource.h>
#include <sys/mntent.h>
-#include <sys/mkdev.h>
#include <sys/u8_textprep.h>
#include <sys/dsl_dataset.h>
#include <sys/vfs.h>
-#include <sys/vfs_opreg.h>
#include <sys/vnode.h>
#include <sys/file.h>
#include <sys/kmem.h>
#include <sys/errno.h>
-#include <sys/unistd.h>
#include <sys/mode.h>
#include <sys/atomic.h>
-#include <vm/pvn.h>
-#include "fs/fs_subr.h"
#include <sys/zfs_dir.h>
#include <sys/zfs_acl.h>
#include <sys/zfs_ioctl.h>
#include <sys/zfs_ctldir.h>
#include <sys/dnode.h>
#include <sys/fs/zfs.h>
-#include <sys/kidmap.h>
#include <sys/zpl.h>
#endif /* _KERNEL */
return (error);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(zfs_create_fs);
EXPORT_SYMBOL(zfs_obj_to_path);
#include <sys/zap.h>
#include <sys/arc.h>
#include <sys/stat.h>
-#include <sys/resource.h>
#include <sys/zil.h>
#include <sys/zil_impl.h>
#include <sys/dsl_dataset.h>
return (0);
}
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(zil_alloc);
EXPORT_SYMBOL(zil_free);
EXPORT_SYMBOL(zil_open);
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);
*/
#include <sys/zfs_context.h>
-#include <sys/compress.h>
#include <sys/spa.h>
#include <sys/zfeature.h>
#include <sys/zio.h>
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 "
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);
#ifdef CONFIG_COMPAT
#include <linux/compat.h>
#endif
+#include <sys/file.h>
#include <sys/dmu_objset.h>
#include <sys/zfs_vfsops.h>
#include <sys/zfs_vnops.h>
* 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;
}
#endif
-#if defined(_KERNEL) && defined(HAVE_SPL)
+#if defined(_KERNEL)
EXPORT_SYMBOL(zrl_add_impl);
EXPORT_SYMBOL(zrl_remove);
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
%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}
# 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
%{?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
%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
--with-config=kernel \
--with-linux=%{ksrc} \
--with-linux-obj=%{kobj} \
- --with-spl="%{spldir}" \
- --with-spl-obj="%{splobj}" \
%{debug} \
%{debuginfo}
make %{?_smp_mflags}
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.
%{_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}
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
%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
--with-config=kernel \
--with-linux=%{ksrc} \
--with-linux-obj=%{kobj} \
- --with-spl="%{splsrc}" \
- --with-spl-obj="%{splobj}" \
%{debug} \
%{debuginfo}
make %{?_smp_mflags}
%files -n kmod-%{kmod_name}-devel
%{_usrsrc}/%{kmod_name}-%{version}
+%{_usrsrc}/spl-%{version}
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
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}\" ]] && \\
{
-k \${kernelver}
-t \${dkms_tree}
"
-BUILD_DEPENDS[0]="spl"
AUTOINSTALL="yes"
REMAKE_INITRD="no"
MAKE[0]="make"
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"
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
%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
%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 ()
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}
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)
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
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}')
# --------------------- 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
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
#
# 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
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"
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.
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
./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 || \
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
+#include <sys/note.h>
#include <sys/time.h>
-#define NOTE(x)
+
typedef enum boolean { B_FALSE, B_TRUE } boolean_t;
typedef unsigned long long u_longlong_t;