aboutsummaryrefslogtreecommitdiff
path: root/sys/contrib/openzfs
diff options
context:
space:
mode:
Diffstat (limited to 'sys/contrib/openzfs')
-rw-r--r--sys/contrib/openzfs/.gitignore1
-rw-r--r--sys/contrib/openzfs/.mailmap189
-rw-r--r--sys/contrib/openzfs/AUTHORS361
-rw-r--r--sys/contrib/openzfs/config/zfs-build.m41
-rw-r--r--sys/contrib/openzfs/include/os/freebsd/spl/sys/ctype.h2
-rw-r--r--sys/contrib/openzfs/man/man4/zfs.457
-rw-r--r--sys/contrib/openzfs/module/os/linux/zfs/zpl_file_range.c8
-rw-r--r--sys/contrib/openzfs/module/os/linux/zfs/zvol_os.c12
-rw-r--r--sys/contrib/openzfs/module/zfs/vdev_trim.c28
-rw-r--r--sys/contrib/openzfs/rpm/generic/zfs.spec.in9
-rw-r--r--sys/contrib/openzfs/scripts/Makefile.am1
-rwxr-xr-xsys/contrib/openzfs/scripts/update_authors.pl322
-rw-r--r--sys/contrib/openzfs/tests/runfiles/common.run4
-rw-r--r--sys/contrib/openzfs/tests/runfiles/linux.run7
-rwxr-xr-xsys/contrib/openzfs/tests/test-runner/bin/zts-report.py.in1
-rw-r--r--sys/contrib/openzfs/tests/zfs-tests/include/tunables.cfg2
-rwxr-xr-xsys/contrib/openzfs/tests/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_concurrent_shares.ksh39
-rw-r--r--sys/contrib/openzfs/tests/zfs-tests/tests/functional/delegate/delegate_common.kshlib4
18 files changed, 930 insertions, 118 deletions
diff --git a/sys/contrib/openzfs/.gitignore b/sys/contrib/openzfs/.gitignore
index 1ef47d921c28..47d17ae16d34 100644
--- a/sys/contrib/openzfs/.gitignore
+++ b/sys/contrib/openzfs/.gitignore
@@ -45,6 +45,7 @@
!.cirrus.yml
!.gitignore
!.gitmodules
+!.mailmap
!AUTHORS
!autogen.sh
!CODE_OF_CONDUCT.md
diff --git a/sys/contrib/openzfs/.mailmap b/sys/contrib/openzfs/.mailmap
new file mode 100644
index 000000000000..46ef016b93f8
--- /dev/null
+++ b/sys/contrib/openzfs/.mailmap
@@ -0,0 +1,189 @@
+# This file maps the name+email seen in a commit back to a canonical
+# name+email. Git will replace the commit name/email with the canonical version
+# wherever it sees it.
+#
+# If there is a commit in the history with a "wrong" name or email, list it
+# here. If you regularly commit with an alternate name or email address and
+# would like to ensure that you are always listed consistently in the repo, add
+# mapping here.
+#
+# On the other hand, if you use multiple names or email addresses legitimately
+# (eg you use a company email address for your paid OpenZFS work, and a
+# personal address for your evening side projects), then don't map one to the
+# other here.
+#
+# The most common formats are:
+#
+# Canonical Name <canonical-email>
+# Canonical Name <canonical-email> <commit-email>
+# Canonical Name <canonical-email> Commit Name <commit-email>
+#
+# See https://git-scm.com/docs/gitmailmap for more info.
+
+# These maps are making names consistent where they have varied but the email
+# address has never changed. In most cases, the full name is in the
+# Signed-off-by of a commit with a matching author.
+Ahelenia Ziemiańska <nabijaczleweli@gmail.com>
+Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
+Alex John <alex@stty.io>
+Andreas Dilger <adilger@dilger.ca>
+Andrew Walker <awalker@ixsystems.com>
+Benedikt Neuffer <github@itfriend.de>
+Chengfei Zhu <chengfeix.zhu@intel.com>
+Chris Lindee <chris.lindee+github@gmail.com>
+Colm Buckley <colm@tuatha.org>
+Crag Wang <crag0715@gmail.com>
+Damian Szuberski <szuberskidamian@gmail.com>
+Daniel Kolesa <daniel@octaforge.org>
+Debabrata Banerjee <dbavatar@gmail.com>
+Finix Yan <yanchongwen@hotmail.com>
+Gaurav Kumar <gauravk.18@gmail.com>
+Gionatan Danti <g.danti@assyoma.it>
+Glenn Washburn <development@efficientek.com>
+Gordan Bobic <gordan.bobic@gmail.com>
+Gregory Bartholomew <gregory.lee.bartholomew@gmail.com>
+hedong zhang <h_d_zhang@163.com>
+InsanePrawn <Insane.Prawny@gmail.com>
+Jason Cohen <jwittlincohen@gmail.com>
+Jason Harmening <jason.harmening@gmail.com>
+Jeremy Faulkner <gldisater@gmail.com>
+Jinshan Xiong <jinshan.xiong@gmail.com>
+John Poduska <jpoduska@datto.com>
+Justin Scholz <git@justinscholz.de>
+Ka Ho Ng <khng300@gmail.com>
+Kash Pande <github@tripleback.net>
+Kay Pedersen <christianpe96@gmail.com>
+KernelOfTruth <kerneloftruth@gmail.com>
+Liu Hua <liu.hua130@zte.com.cn>
+Liu Qing <winglq@gmail.com>
+loli10K <ezomori.nozomu@gmail.com>
+Matthias Blankertz <matthias@blankertz.org>
+Michael Gmelin <grembo@FreeBSD.org>
+Olivier Mazouffre <olivier.mazouffre@ims-bordeaux.fr>
+Piotr Kubaj <pkubaj@anongoth.pl>
+Quentin Zdanis <zdanisq@gmail.com>
+Roberto Ricci <ricci@disroot.org>
+Rob Norris <robn@despairlabs.com>
+Rob Norris <rob.norris@klarasystems.com>
+Sam Lunt <samuel.j.lunt@gmail.com>
+Sanjeev Bagewadi <sanjeev.bagewadi@gmail.com>
+Stoiko Ivanov <github@nomore.at>
+Tamas TEVESZ <ice@extreme.hu>
+WHR <msl0000023508@gmail.com>
+Yanping Gao <yanping.gao@xtaotech.com>
+Youzhong Yang <youzhong@gmail.com>
+
+# Commits from strange places, long ago
+Brian Behlendorf <behlendorf1@llnl.gov> <behlendo@7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c>
+Brian Behlendorf <behlendorf1@llnl.gov> <behlendo@fedora-17-amd64.(none)>
+Brian Behlendorf <behlendorf1@llnl.gov> <behlendo@myhost.(none)>
+Brian Behlendorf <behlendorf1@llnl.gov> <ubuntu@ip-172-31-16-145.us-west-1.compute.internal>
+Brian Behlendorf <behlendorf1@llnl.gov> <ubuntu@ip-172-31-20-6.us-west-1.compute.internal>
+Herb Wartens <wartens2@llnl.gov> <wartens2@7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c>
+Ned Bass <bass6@llnl.gov> <bass6@zeno1.(none)>
+Tulsi Jain <tulsi.jain@delphix.com> <tulsi.jain@Tulsi-Jains-MacBook-Pro.local>
+
+# Mappings from Github no-reply addresses
+ajs124 <git@ajs124.de> <ajs124@users.noreply.github.com>
+Alek Pinchuk <apinchuk@axcient.com> <alek-p@users.noreply.github.com>
+Alexander Lobakin <alobakin@pm.me> <solbjorn@users.noreply.github.com>
+Alexey Smirnoff <fling@member.fsf.org> <fling-@users.noreply.github.com>
+Allen Holl <allen.m.holl@gmail.com> <65494904+allen-4@users.noreply.github.com>
+Ameer Hamza <ahamza@ixsystems.com> <106930537+ixhamza@users.noreply.github.com>
+Andrew J. Hesford <ajh@sideband.org> <48421688+ahesford@users.noreply.github.com>>
+Andrew Sun <me@andrewsun.com> <as-com@users.noreply.github.com>
+Aron Xu <happyaron.xu@gmail.com> <happyaron@users.noreply.github.com>
+Arun KV <arun.kv@datacore.com> <65647132+arun-kv@users.noreply.github.com>
+Ben Wolsieffer <benwolsieffer@gmail.com> <lopsided98@users.noreply.github.com>
+bernie1995 <bernie.pikes@gmail.com> <42413912+bernie1995@users.noreply.github.com>
+Boris Protopopov <boris.protopopov@actifio.com> <bprotopopov@users.noreply.github.com>
+Brad Forschinger <github@bnjf.id.au> <bnjf@users.noreply.github.com>
+Brandon Thetford <brandon@dodecatec.com> <dodexahedron@users.noreply.github.com>
+buzzingwires <buzzingwires@outlook.com> <131118055+buzzingwires@users.noreply.github.com>
+Cedric Maunoury <cedric.maunoury@gmail.com> <38213715+cedricmaunoury@users.noreply.github.com>
+Charles Suh <charles.suh@gmail.com> <charlessuh@users.noreply.github.com>
+Dacian Reece-Stremtan <dacianstremtan@gmail.com> <35844628+dacianstremtan@users.noreply.github.com>
+Damian Szuberski <szuberskidamian@gmail.com> <30863496+szubersk@users.noreply.github.com>
+Daniel Hiepler <d-git@coderdu.de> <32984777+heeplr@users.noreply.github.com>
+Daniel Kobras <d.kobras@science-computing.de> <sckobras@users.noreply.github.com>
+Daniel Reichelt <hacking@nachtgeist.net> <nachtgeist@users.noreply.github.com>
+David Quigley <david.quigley@intel.com> <dpquigl@users.noreply.github.com>
+DHE <git@dehacked.net> <DeHackEd@users.noreply.github.com>
+Dmitri John Ledkov <dimitri.ledkov@canonical.com> <19779+xnox@users.noreply.github.com>
+Dries Michiels <driesm.michiels@gmail.com> <32487486+driesmp@users.noreply.github.com>
+Edmund Nadolski <edmund.nadolski@ixsystems.com> <137826107+ednadolski-ix@users.noreply.github.com>
+Érico Nogueira <erico.erc@gmail.com> <34201958+ericonr@users.noreply.github.com>
+Fedor Uporov <fuporov.vstack@gmail.com> <60701163+fuporovvStack@users.noreply.github.com>
+Felix Dörre <felix@dogcraft.de> <felixdoerre@users.noreply.github.com>
+Felix Neumärker <xdch47@posteo.de> <34678034+xdch47@users.noreply.github.com>
+Finix Yan <yancw@info2soft.com> <Finix1979@users.noreply.github.com>
+Gaurav Kumar <gauravk.18@gmail.com> <gaurkuma@users.noreply.github.com>
+George Gaydarov <git@gg7.io> <gg7@users.noreply.github.com>
+Georgy Yakovlev <gyakovlev@gentoo.org> <168902+gyakovlev@users.noreply.github.com>
+Gerardwx <gerardw@alum.mit.edu> <Gerardwx@users.noreply.github.com>
+Gian-Carlo DeFazio <defazio1@llnl.gov> <defaziogiancarlo@users.noreply.github.com>
+Giuseppe Di Natale <dinatale2@llnl.gov> <dinatale2@users.noreply.github.com>
+Hajo Möller <dasjoe@gmail.com> <dasjoe@users.noreply.github.com>
+Harry Mallon <hjmallon@gmail.com> <1816667+hjmallon@users.noreply.github.com>
+Hiếu Lê <leorize+oss@disroot.org> <alaviss@users.noreply.github.com>
+Jake Howard <git@theorangeone.net> <RealOrangeOne@users.noreply.github.com>
+James Cowgill <james.cowgill@mips.com> <jcowgill@users.noreply.github.com>
+Jason King <jason.king@joyent.com> <jasonbking@users.noreply.github.com>
+Jeff Dike <jdike@akamai.com> <52420226+jdike@users.noreply.github.com>
+Jitendra Patidar <jitendra.patidar@nutanix.com> <53164267+jsai20@users.noreply.github.com>
+João Carlos Mendes Luís <jonny@jonny.eng.br> <dioni21@users.noreply.github.com>
+John Eismeier <john.eismeier@gmail.com> <32205350+jeis2497052@users.noreply.github.com>
+John L. Hammond <john.hammond@intel.com> <35266395+jhammond-intel@users.noreply.github.com>
+John-Mark Gurney <jmg@funkthat.com> <jmgurney@users.noreply.github.com>
+John Ramsden <johnramsden@riseup.net> <johnramsden@users.noreply.github.com>
+Jonathon Fernyhough <jonathon@m2x.dev> <559369+jonathonf@users.noreply.github.com>
+Justin Hibbits <chmeeedalf@gmail.com> <chmeeedalf@users.noreply.github.com>
+Kevin Jin <lostking2008@hotmail.com> <33590050+jxdking@users.noreply.github.com>
+Kevin P. Fleming <kevin@km6g.us> <kpfleming@users.noreply.github.com>
+Krzysztof Piecuch <piecuch@kpiecuch.pl> <3964215+pikrzysztof@users.noreply.github.com>
+Kyle Evans <kevans@FreeBSD.org> <kevans91@users.noreply.github.com>
+Laurențiu Nicola <lnicola@dend.ro> <lnicola@users.noreply.github.com>
+loli10K <ezomori.nozomu@gmail.com> <loli10K@users.noreply.github.com>
+Lorenz Hüdepohl <dev@stellardeath.org> <lhuedepohl@users.noreply.github.com>
+Luís Henriques <henrix@camandro.org> <73643340+lumigch@users.noreply.github.com>
+Marcin Skarbek <git@skarbek.name> <mskarbek@users.noreply.github.com>
+Matt Fiddaman <github@m.fiddaman.uk> <81489167+matt-fidd@users.noreply.github.com>
+Max Zettlmeißl <max@zettlmeissl.de> <6818198+maxz@users.noreply.github.com>
+Michael Niewöhner <foss@mniewoehner.de> <c0d3z3r0@users.noreply.github.com>
+Michael Zhivich <mzhivich@akamai.com> <33133421+mzhivich@users.noreply.github.com>
+Mo Zhou <cdluminate@gmail.com> <5723047+cdluminate@users.noreply.github.com>
+Nick Mattis <nickm970@gmail.com> <nmattis@users.noreply.github.com>
+omni <omni+vagant@hack.org> <79493359+omnivagant@users.noreply.github.com>
+Pablo Correa Gómez <ablocorrea@hotmail.com> <32678034+pablofsf@users.noreply.github.com>
+Paul Zuchowski <pzuchowski@datto.com> <31706010+PaulZ-98@users.noreply.github.com>
+Peter Ashford <ashford@accs.com> <pashford@users.noreply.github.com>
+Peter Dave Hello <hsu@peterdavehello.org> <PeterDaveHello@users.noreply.github.com>
+Peter Wirdemo <peter.wirdemo@gmail.com> <4224155+pewo@users.noreply.github.com>
+Petros Koutoupis <petros@petroskoutoupis.com> <pkoutoupis@users.noreply.github.com>
+Ping Huang <huangping@smartx.com> <101400146+hpingfs@users.noreply.github.com>
+Piotr P. Stefaniak <pstef@freebsd.org> <pstef@users.noreply.github.com>
+Richard Allen <belperite@gmail.com> <33836503+belperite@users.noreply.github.com>
+Rich Ercolani <rincebrain@gmail.com> <214141+rincebrain@users.noreply.github.com>
+Rob Wing <rob.wing@klarasystems.com> <98866084+rob-wing@users.noreply.github.com>
+Roman Strashkin <roman.strashkin@nexenta.com> <Ramzec@users.noreply.github.com>
+Ryan Hirasaki <ryanhirasaki@gmail.com> <4690732+RyanHir@users.noreply.github.com>
+Samuel Wycliffe J <samwyc@hpe.com> <115969550+samwyc@users.noreply.github.com>
+Samuel Wycliffe <samuelwycliffe@gmail.com> <50765275+npc203@users.noreply.github.com>
+Savyasachee Jha <hi@savyasacheejha.com> <savyajha@users.noreply.github.com>
+Scott Colby <scott@scolby.com> <scolby33@users.noreply.github.com>
+Sean Eric Fagan <kithrup@mac.com> <kithrup@users.noreply.github.com>
+Spencer Kinny <spencerkinny1995@gmail.com> <30333052+Spencer-Kinny@users.noreply.github.com>
+Srikanth N S <srikanth.nagasubbaraoseetharaman@hpe.com> <75025422+nssrikanth@users.noreply.github.com>
+Thomas Geppert <geppi@digitx.de> <geppi@users.noreply.github.com>
+Tim Crawford <tcrawford@datto.com> <crawfxrd@users.noreply.github.com>
+Tom Matthews <tom@axiom-partners.com> <tomtastic@users.noreply.github.com>
+Tony Perkins <tperkins@datto.com> <62951051+tony-zfs@users.noreply.github.com>
+Torsten Wörtwein <twoertwein@gmail.com> <twoertwein@users.noreply.github.com>
+Tulsi Jain <tulsi.jain@delphix.com> <TulsiJain@users.noreply.github.com>
+Václav Skála <skala@vshosting.cz> <33496485+vaclavskala@users.noreply.github.com>
+Violet Purcell <vimproved@inventati.org> <66446404+vimproved@users.noreply.github.com>
+Vipin Kumar Verma <vipin.verma@hpe.com> <75025470+vermavipinkumar@users.noreply.github.com>
+Wolfgang Bumiller <w.bumiller@proxmox.com> <Blub@users.noreply.github.com>
+xtouqh <xtouqh@hotmail.com> <72357159+xtouqh@users.noreply.github.com>
+Yuri Pankov <yuripv@FreeBSD.org> <113725409+yuripv@users.noreply.github.com>
+Yuri Pankov <yuripv@FreeBSD.org> <82001006+yuripv@users.noreply.github.com>
diff --git a/sys/contrib/openzfs/AUTHORS b/sys/contrib/openzfs/AUTHORS
index c2af58d75085..be1efb87b34c 100644
--- a/sys/contrib/openzfs/AUTHORS
+++ b/sys/contrib/openzfs/AUTHORS
@@ -10,228 +10,450 @@ PAST MAINTAINERS:
CONTRIBUTORS:
Aaron Fineman <abyxcos@gmail.com>
+ Adam D. Moss <c@yotes.com>
Adam Leventhal <ahl@delphix.com>
Adam Stevko <adam.stevko@gmail.com>
+ adisbladis <adis@blad.is>
+ Adrian Chadd <adrian@freebsd.org>
+ Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
Ahmed G <ahmedg@delphix.com>
+ Aidan Harris <me@aidanharr.is>
+ AJ Jordan <alex@strugee.net>
+ ajs124 <git@ajs124.de>
Akash Ayare <aayare@delphix.com>
+ Akash B <akash-b@hpe.com>
Alan Somers <asomers@gmail.com>
Alar Aun <spamtoaun@gmail.com>
Albert Lee <trisk@nexenta.com>
Alec Salazar <alec.j.salazar@gmail.com>
+ Alejandro Colomar <Colomar.6.4.3@GMail.com>
Alejandro R. Sedeño <asedeno@mit.edu>
Alek Pinchuk <alek@nexenta.com>
Aleksa Sarai <cyphar@cyphar.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 Lobakin <alobakin@pm.me>
Alexander Motin <mav@freebsd.org>
Alexander Pyhalov <apyhalov@gmail.com>
+ Alexander Richardson <Alexander.Richardson@cl.cam.ac.uk>
Alexander Stetsenko <ams@nexenta.com>
+ Alex Braunegg <alex.braunegg@gmail.com>
Alexey Shvetsov <alexxy@gentoo.org>
Alexey Smirnoff <fling@member.fsf.org>
+ Alex John <alex@stty.io>
+ Alex McWhirter <alexmcwhirter@triadic.us>
+ Alex Reece <alex@delphix.com>
+ Alex Wilson <alex.wilson@joyent.com>
+ Alex Zhuravlev <alexey.zhuravlev@intel.com>
Allan Jude <allanjude@freebsd.org>
+ Allen Holl <allen.m.holl@gmail.com>
+ alteriks <alteriks@gmail.com>
+ Alyssa Ross <hi@alyssa.is>
+ Ameer Hamza <ahamza@ixsystems.com>
+ Anatoly Borodin <anatoly.borodin@gmail.com>
AndCycle <andcycle@andcycle.idv.tw>
+ Andrea Gelmini <andrea.gelmini@gelma.net>
+ Andrea Righi <andrea.righi@canonical.com>
Andreas Buschmann <andreas.buschmann@tech.net.de>
Andreas Dilger <adilger@intel.com>
+ Andreas Vögele <andreas@andreasvoegele.com>
Andrew Barnes <barnes333@gmail.com>
Andrew Hamilton <ahamilto@tjhsst.edu>
+ Andrew Innes <andrew.c12@gmail.com>
+ Andrew J. Hesford <ajh@sideband.org>
Andrew Reid <ColdCanuck@nailedtotheperch.com>
Andrew Stormont <andrew.stormont@nexenta.com>
+ Andrew Sun <me@andrewsun.com>
Andrew Tselischev <andrewtselischev@gmail.com>
+ Andrew Turner <andrew@fubar.geek.nz>
+ Andrew Walker <awalker@ixsystems.com>
+ Andrey Prokopenko <job@terem.fr>
Andrey Vesnovaty <andrey.vesnovaty@gmail.com>
Andriy Gapon <avg@freebsd.org>
Andy Bakun <github@thwartedefforts.org>
+ Andy Fiddaman <omnios@citrus-it.co.uk>
Aniruddha Shankar <k@191a.net>
+ Anton Gubarkov <anton.gubarkov@gmail.com>
Antonio Russo <antonio.e.russo@gmail.com>
Arkadiusz Bubała <arkadiusz.bubala@open-e.com>
+ Armin Wehrfritz <dkxls23@gmail.com>
Arne Jansen <arne@die-jansens.de>
Aron Xu <happyaron.xu@gmail.com>
+ Arshad Hussain <arshad.hussain@aeoncomputing.com>
+ Arun KV <arun.kv@datacore.com>
+ Arvind Sankar <nivedita@alum.mit.edu>
+ Attila Fülöp <attila@fueloep.org>
+ Avatat <kontakt@avatat.pl>
Bart Coddens <bart.coddens@gmail.com>
Basil Crow <basil.crow@delphix.com>
- Huang Liu <liu.huang@zte.com.cn>
+ Bassu <bassu@phi9.com>
Ben Allen <bsallen@alcf.anl.gov>
- Ben Rubson <ben.rubson@gmail.com>
+ Ben Cordero <bencord0@condi.me>
+ Benedikt Neuffer <github@itfriend.de>
Benjamin Albrecht <git@albrecht.io>
+ Benjamin Gentil <benjgentil.pro@gmail.com>
+ Ben McGough <bmcgough@fredhutch.org>
+ Ben Rubson <ben.rubson@gmail.com>
+ Ben Wolsieffer <benwolsieffer@gmail.com>
+ bernie1995 <bernie.pikes@gmail.com>
Bill McGonigle <bill-github.com-public1@bfccomputing.com>
Bill Pijewski <wdp@joyent.com>
Boris Protopopov <boris.protopopov@nexenta.com>
+ Brad Forschinger <github@bnjf.id.au>
Brad Lewis <brad.lewis@delphix.com>
+ Brandon Thetford <brandon@dodecatec.com>
+ Brian Atkinson <bwa@g.clemson.edu>
Brian Behlendorf <behlendorf1@llnl.gov>
Brian J. Murrell <brian@sun.com>
+ Brooks Davis <brooks@one-eyed-alien.net>
+ BtbN <btbn@btbn.de>
+ bunder2015 <omfgbunder@gmail.com>
+ buzzingwires <buzzingwires@outlook.com>
+ bzzz77 <bzzz.tomas@gmail.com>
+ cable2999 <cable2999@users.noreply.github.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>
+ Cedric Maunoury <cedric.maunoury@gmail.com>
Chaoyu Zhang <zhang.chaoyu@zte.com.cn>
+ Charles Suh <charles.suh@gmail.com>
Chen Can <chen.can2@zte.com.cn>
+ Chengfei Zhu <chengfeix.zhu@intel.com>
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 Lindee <chris.lindee+github@gmail.com>
+ Chris McDonough <chrism@plope.com>
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>
+ Chris Siebenmann <cks.github@cs.toronto.edu>
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>
+ Christ Schlacta <aarcane@aarcane.info>
+ Chris Wedgwood <cw@f00f.org>
+ Chris Williamson <chris.williamson@delphix.com>
+ Chris Zubrzycki <github@mid-earth.net>
+ Chuck Tuffli <ctuffli@gmail.com>
Chunwei Chen <david.chen@nutanix.com>
Clemens Fruhwirth <clemens@endorphin.org>
+ Clemens Lang <cl@clang.name>
+ Clint Armstrong <clint@clintarmstrong.net>
Coleman Kane <ckane@colemankane.org>
Colin Ian King <colin.king@canonical.com>
+ Colm Buckley <colm@tuatha.org>
+ Crag Wang <crag0715@gmail.com>
Craig Loomis <cloomis@astro.princeton.edu>
Craig Sanders <github@taz.net.au>
Cyril Plisko <cyril.plisko@infinidat.com>
- DHE <git@dehacked.net>
+ Cy Schubert <cy@FreeBSD.org>
+ Cédric Berger <cedric@precidata.com>
+ Dacian Reece-Stremtan <dacianstremtan@gmail.com>
+ Dag-Erling Smørgrav <des@FreeBSD.org>
+ Damiano Albani <damiano.albani@gmail.com>
+ Damian Szuberski <szuberskidamian@gmail.com>
Damian Wojsław <damian@wojslaw.pl>
+ Daniel Hiepler <d-git@coderdu.de>
+ Daniel Hoffman <dj.hoffman@delphix.com>
+ Daniel Kobras <d.kobras@science-computing.de>
+ Daniel Kolesa <daniel@octaforge.org>
+ Daniel Reichelt <hacking@nachtgeist.net>
+ Daniel Stevenson <bot@dstev.net>
+ Daniel Verite <daniel@verite.pro>
+ Daniil Lunev <d.lunev.mail@gmail.com>
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 Hedberg <david@qzx.se>
David Lamparter <equinox@diac24.net>
David Qian <david.qian@intel.com>
David Quigley <david.quigley@intel.com>
Debabrata Banerjee <dbanerje@akamai.com>
+ D. Ebdrup <debdrup@freebsd.org>
Denys Rtveliashvili <denys@rtveliashvili.name>
Derek Dai <daiderek@gmail.com>
+ DHE <git@dehacked.net>
+ Didier Roche <didrocks@ubuntu.com>
Dimitri John Ledkov <xnox@ubuntu.com>
+ Dimitry Andric <dimitry@andric.com>
+ Dirkjan Bussink <d.bussink@gmail.com>
Dmitry Khasanov <pik4ez@gmail.com>
+ Dominic Pearson <dsp@technoanimal.net>
Dominik Hassler <hadfl@omniosce.org>
Dominik Honnef <dominikh@fork-bomb.org>
Don Brady <don.brady@delphix.com>
+ Doug Rabson <dfr@rabson.org>
Dr. András Korn <korn-github.com@elan.rulez.org>
+ Dries Michiels <driesm.michiels@gmail.com>
+ Edmund Nadolski <edmund.nadolski@ixsystems.com>
+ Eitan Adler <lists@eitanadler.com>
Eli Rosenthal <eli.rosenthal@delphix.com>
+ Eli Schwartz <eschwartz93@gmail.com>
Eric Desrochers <eric.desrochers@canonical.com>
Eric Dillmann <eric@jave.fr>
Eric Schrock <Eric.Schrock@delphix.com>
+ Ethan Coe-Renner <coerenner1@llnl.gov>
Etienne Dechamps <etienne@edechamps.fr>
+ Evan Allrich <eallrich@gmail.com>
+ Evan Harris <eharris@puremagic.com>
Evan Susarret <evansus@gmail.com>
Fabian Grünbichler <f.gruenbichler@proxmox.com>
+ Fabio Buso <dev.siroibaf@gmail.com>
+ Fabio Scaccabarozzi <fsvm88@gmail.com>
Fajar A. Nugraha <github@fajar.net>
Fan Yong <fan.yong@intel.com>
+ fbynite <fbynite@users.noreply.github.com>
+ Fedor Uporov <fuporov.vstack@gmail.com>
+ Felix Dörre <felix@dogcraft.de>
+ Felix Neumärker <xdch47@posteo.de>
Feng Sun <loyou85@gmail.com>
+ Finix Yan <yancw@info2soft.com>
+ Francesco Mazzoli <f@mazzo.li>
Frederik Wessels <wessels147@gmail.com>
Frédéric Vanniere <f.vanniere@planet-work.com>
+ Gabriel A. Devenyi <gdevenyi@gmail.com>
Garrett D'Amore <garrett@nexenta.com>
+ Garrett Fields <ghfields@gmail.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 Diamantopoulos <georgediam@gmail.com>
+ George Gaydarov <git@gg7.io>
George Melikov <mail@gmelikov.ru>
George Wilson <gwilson@delphix.com>
Georgy Yakovlev <ya@sysdump.net>
+ Gerardwx <gerardw@alum.mit.edu>
+ Gian-Carlo DeFazio <defazio1@llnl.gov>
+ Gionatan Danti <g.danti@assyoma.it>
Giuseppe Di Natale <guss80@gmail.com>
+ Glenn Washburn <development@efficientek.com>
Gordan Bobic <gordan@redsleeve.org>
+ Gordon Bergling <gbergling@googlemail.com>
Gordon Ross <gwr@nexenta.com>
+ Graham Christensen <graham@grahamc.com>
+ Graham Perrin <grahamperrin@gmail.com>
Gregor Kopka <gregor@kopka.net>
+ Gregory Bartholomew <gregory.lee.bartholomew@gmail.com>
+ grembo <freebsd@grem.de>
Grischa Zengel <github.zfsonlinux@zengel.info>
+ grodik <pat@litke.dev>
Gunnar Beutner <gunnar@beutner.name>
Gvozden Neskovic <neskovic@gmail.com>
Hajo Möller <dasjoe@gmail.com>
+ Han Gao <rabenda.cn@gmail.com>
Hans Rosenfeld <hans.rosenfeld@nexenta.com>
+ Harald van Dijk <harald@gigawatt.nl>
+ Harry Mallon <hjmallon@gmail.com>
+ Harry Sintonen <github-piru@kyber.fi>
+ HC <mmttdebbcc@yahoo.com>
+ hedong zhang <h_d_zhang@163.com>
+ Heitor Alves de Siqueira <halves@canonical.com>
+ Henrik Riomar <henrik.riomar@gmail.com>
+ Herb Wartens <wartens2@llnl.gov>
+ Hiếu Lê <leorize+oss@disroot.org>
+ Huang Liu <liu.huang@zte.com.cn>
Håkan Johansson <f96hajo@chalmers.se>
+ Igor K <igor@dilos.org>
Igor Kozhukhov <ikozhukhov@gmail.com>
Igor Lvovsky <ilvovsky@gmail.com>
+ ilbsmart <wgqimut@gmail.com>
+ illiliti <illiliti@protonmail.com>
+ ilovezfs <ilovezfs@icloud.com>
+ InsanePrawn <Insane.Prawny@gmail.com>
Isaac Huang <he.huang@intel.com>
- JK Dingwall <james@dingwall.me.uk>
Jacek Fefliński <feflik@gmail.com>
+ Jacob Adams <tookmund@gmail.com>
+ Jake Howard <git@theorangeone.net>
James Cowgill <james.cowgill@mips.com>
+ James H <james@kagisoft.co.uk>
James Lee <jlee@thestaticvoid.com>
James Pan <jiaming.pan@yahoo.com>
+ James Wah <james@laird-wah.net>
Jan Engelhardt <jengelh@inai.de>
Jan Kryl <jan.kryl@nexenta.com>
Jan Sanislo <oystr@cs.washington.edu>
+ Jason Cohen <jwittlincohen@gmail.com>
+ Jason Harmening <jason.harmening@gmail.com>
Jason King <jason.brian.king@gmail.com>
Jason Zaman <jasonzaman@gmail.com>
Javen Wu <wu.javen@gmail.com>
+ Jean-Baptiste Lallement <jean-baptiste@ubuntu.com>
+ Jeff Dike <jdike@akamai.com>
+ Jeremy Faulkner <gldisater@gmail.com>
Jeremy Gill <jgill@parallax-innovations.com>
Jeremy Jones <jeremy@delphix.com>
+ Jeremy Visser <jeremy.visser@gmail.com>
Jerry Jelinek <jerry.jelinek@joyent.com>
+ Jessica Clarke <jrtc27@jrtc27.com>
Jinshan Xiong <jinshan.xiong@intel.com>
+ Jitendra Patidar <jitendra.patidar@nutanix.com>
+ JK Dingwall <james@dingwall.me.uk>
Joe Stein <joe.stein@delphix.com>
+ John-Mark Gurney <jmg@funkthat.com>
John Albietz <inthecloud247@gmail.com>
John Eismeier <john.eismeier@gmail.com>
- John L. Hammond <john.hammond@intel.com>
+ John Gallagher <john.gallagher@delphix.com>
John Layman <jlayman@sagecloud.com>
+ John L. Hammond <john.hammond@intel.com>
+ John M. Layman <jml@frijid.net>
+ Johnny Stenback <github@jstenback.com>
John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
+ John Poduska <jpoduska@datto.com>
+ John Ramsden <johnramsden@riseup.net>
John Wren Kennedy <john.kennedy@delphix.com>
- Johnny Stenback <github@jstenback.com>
+ jokersus <lolivampireslave@gmail.com>
+ Jonathon Fernyhough <jonathon@m2x.dev>
Jorgen Lundman <lundman@lundman.net>
Josef 'Jeff' Sipek <josef.sipek@nexenta.com>
+ Josh Soref <jsoref@users.noreply.github.com>
Joshua M. Clulow <josh@sysmgr.org>
+ José Luis Salvador Rufo <salvador.joseluis@gmail.com>
+ João Carlos Mendes Luís <jonny@jonny.eng.br>
+ Julian Brunner <julian.brunner@gmail.com>
+ Julian Heuking <JulianH@beckhoff.com>
+ jumbi77 <jumbi77@users.noreply.github.com>
Justin Bedő <cu@cua0.org>
+ Justin Gottula <justin@jgottula.com>
+ Justin Hibbits <chmeeedalf@gmail.com>
+ Justin Keogh <github.com@v6y.net>
Justin Lecher <jlec@gentoo.org>
+ Justin Scholz <git@justinscholz.de>
Justin T. Gibbs <gibbs@FreeBSD.org>
+ jyxent <jordanp@gmail.com>
Jörg Thalheim <joerg@higgsboson.tk>
- KORN Andras <korn@elan.rulez.org>
+ ka7 <ka7@la-evento.com>
+ Ka Ho Ng <khng@FreeBSD.org>
Kamil Domański <kamil@domanski.co>
Karsten Kretschmer <kkretschmer@gmail.com>
Kash Pande <kash@tripleback.net>
+ Kay Pedersen <christianpe96@gmail.com>
Keith M Wesolowski <wesolows@foobazco.org>
+ KernelOfTruth <kerneloftruth@gmail.com>
+ Kevin Bowling <kevin.bowling@kev009.com>
+ Kevin Jin <lostking2008@hotmail.com>
+ Kevin P. Fleming <kevin@km6g.us>
Kevin Tanguy <kevin.tanguy@ovh.net>
KireinaHoro <i@jsteward.moe>
Kjeld Schouten-Lebbing <kjeld@schouten-lebbing.nl>
+ Kleber Tarcísio <klebertarcisio@yahoo.com.br>
+ Kody A Kantor <kody.kantor@gmail.com>
Kohsuke Kawaguchi <kk@kohsuke.org>
+ Konstantin Khorenko <khorenko@virtuozzo.com>
+ KORN Andras <korn@elan.rulez.org>
+ Kristof Provost <github@sigsegv.be>
+ Krzysztof Piecuch <piecuch@kpiecuch.pl>
Kyle Blatter <kyleblatter@llnl.gov>
+ Kyle Evans <kevans@FreeBSD.org>
Kyle Fuller <inbox@kylefuller.co.uk>
- Loli <ezomori.nozomu@gmail.com>
+ Laevos <Laevos@users.noreply.github.com>
+ Lalufu <Lalufu@users.noreply.github.com>
Lars Johannsen <laj@it.dk>
+ Laura Hild <lsh@jlab.org>
+ Laurențiu Nicola <lnicola@dend.ro>
+ Lauri Tirkkonen <lauri@hacktheplanet.fi>
+ liaoyuxiangqin <guo.yong33@zte.com.cn>
Li Dongyang <dongyang.li@anu.edu.au>
+ Liu Hua <liu.hua130@zte.com.cn>
+ Liu Qing <winglq@gmail.com>
Li Wei <W.Li@Sun.COM>
+ Loli <ezomori.nozomu@gmail.com>
+ lorddoskias <lorddoskias@gmail.com>
+ Lorenz Brun <lorenz@dolansoft.org>
+ Lorenz Hüdepohl <dev@stellardeath.org>
+ louwrentius <louwrentius@gmail.com>
Lukas Wunner <lukas@wunner.de>
+ luozhengzheng <luo.zhengzheng@zte.com.cn>
+ Luís Henriques <henrix@camandro.org>
Madhav Suresh <madhav.suresh@delphix.com>
+ manfromafar <jonsonb10@gmail.com>
Manoj Joseph <manoj.joseph@delphix.com>
Manuel Amador (Rudd-O) <rudd-o@rudd-o.com>
Marcel Huber <marcelhuberfoo@gmail.com>
+ Marcel Menzel <mail@mcl.gg>
+ Marcel Schilling <marcel.schilling@uni-luebeck.de>
Marcel Telka <marcel.telka@nexenta.com>
Marcel Wysocki <maci.stgn@gmail.com>
+ Marcin Skarbek <git@skarbek.name>
+ Mariusz Zaborski <mariusz.zaborski@klarasystems.com>
+ Mark Johnston <markj@FreeBSD.org>
+ Mark Maybee <mark.maybee@delphix.com>
+ Mark Roper <markroper@gmail.com>
Mark Shellenbaum <Mark.Shellenbaum@Oracle.COM>
+ marku89 <mar42@kola.li>
Mark Wright <markwright@internode.on.net>
Martin Matuska <mm@FreeBSD.org>
+ Martin Rüegg <martin.rueegg@metaworx.ch>
Massimo Maggi <me@massimo-maggi.eu>
- Matt Johnston <matt@fugro-fsi.com.au>
- Matt Kemp <matt@mattikus.com>
+ Mateusz Guzik <mjguzik@gmail.com>
+ Mateusz Piotrowski <0mp@FreeBSD.org>
+ Mathieu Velten <matmaul@gmail.com>
+ Matt Fiddaman <github@m.fiddaman.uk>
Matthew Ahrens <matt@delphix.com>
Matthew Thode <mthode@mthode.org>
+ Matthias Blankertz <matthias@blankertz.org>
+ Matt Johnston <matt@fugro-fsi.com.au>
+ Matt Kemp <matt@mattikus.com>
+ Matt Macy <mmacy@freebsd.org>
Matus Kral <matuskral@me.com>
+ Mauricio Faria de Oliveira <mfo@canonical.com>
Max Grossman <max.grossman@delphix.com>
Maximilian Mehnert <maximilian.mehnert@gmx.de>
+ Max Zettlmeißl <max@zettlmeissl.de>
+ Md Islam <mdnahian@outlook.com>
+ megari <megari@iki.fi>
+ Michael D Labriola <michael.d.labriola@gmail.com>
+ Michael Franzl <michael@franzl.name>
Michael Gebetsroither <michael@mgeb.org>
Michael Kjorling <michael@kjorling.se>
Michael Martin <mgmartin.mgm@gmail.com>
Michael Niewöhner <foss@mniewoehner.de>
+ Michael Zhivich <mzhivich@akamai.com>
+ Michal Vasilek <michal@vasilek.cz>
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>
+ Minsoo Choo <minsoochoo0122@proton.me>
+ Mohamed Tawfik <m_tawfik@aucegypt.edu>
Morgan Jones <mjones@rice.edu>
Moritz Maxeiner <moritz@ucworks.org>
+ Mo Zhou <cdluminate@gmail.com>
+ naivekun <naivekun@outlook.com>
+ nathancheek <myself@nathancheek.com>
Nathaniel Clark <Nathaniel.Clark@misrule.us>
Nathaniel Wesley Filardo <nwf@cs.jhu.edu>
+ Nathan Lewis <linux.robotdude@gmail.com>
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 Black <dank@qemfd.net>
Nick Garvey <garvey.nick@gmail.com>
+ Nick Mattis <nickm970@gmail.com>
+ Nick Terrell <terrelln@fb.com>
+ Niklas Haas <github-c6e1c8@haasn.xyz>
Nikolay Borisov <n.borisov.lkml@gmail.com>
+ nordaux <nordaux@gmail.com>
+ ofthesun9 <olivier@ofthesun.net>
Olaf Faaland <faaland1@llnl.gov>
Oleg Drokin <green@linuxhacker.ru>
Oleg Stepura <oleg@stepura.com>
+ Olivier Mazouffre <olivier.mazouffre@ims-bordeaux.fr>
+ omni <omni+vagant@hack.org>
+ Orivej Desh <orivej@gmx.fr>
+ Pablo Correa Gómez <ablocorrea@hotmail.com>
+ Palash Gandhi <pbg4930@rit.edu>
+ Patrick Mooney <pmooney@pfmooney.com>
Patrik Greco <sikevux@sikevux.se>
Paul B. Henson <henson@acm.org>
Paul Dagnelie <pcd@delphix.com>
@@ -243,69 +465,160 @@ CONTRIBUTORS:
Pedro Giffuni <pfg@freebsd.org>
Peng <peng.hse@xtaotech.com>
Peter Ashford <ashford@accs.com>
+ Peter Dave Hello <hsu@peterdavehello.org>
+ Peter Levine <plevine457@gmail.com>
+ Peter Wirdemo <peter.wirdemo@gmail.com>
+ Petros Koutoupis <petros@petroskoutoupis.com>
+ Philip Pokorny <ppokorny@penguincomputing.com>
+ Philipp Riederer <pt@philipptoelke.de>
+ Phil Kauffman <philip@kauffman.me>
+ Ping Huang <huangping@smartx.com>
+ Piotr Kubaj <pkubaj@anongoth.pl>
+ Piotr P. Stefaniak <pstef@freebsd.org>
Prakash Surya <prakash.surya@delphix.com>
Prasad Joshi <prasadjoshi124@gmail.com>
+ privb0x23 <privb0x23@users.noreply.github.com>
+ P.SCH <p88@yahoo.com>
+ Quentin Zdanis <zdanisq@gmail.com>
+ Rafael Kitover <rkitover@gmail.com>
+ RageLtMan <sempervictus@users.noreply.github.com>
Ralf Ertzinger <ralf@skytale.net>
Randall Mason <ClashTheBunny@gmail.com>
Remy Blank <remy.blank@pobox.com>
+ renelson <bnelson@nelsonbe.com>
+ Reno Reckling <e-github@wthack.de>
Ricardo M. Correia <ricardo.correia@oracle.com>
- Rich Ercolani <rincebrain@gmail.com>
+ Riccardo Schirone <rschirone91@gmail.com>
+ Richard Allen <belperite@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>
+ Rich Ercolani <rincebrain@gmail.com>
+ Robert Novak <sailnfool@gmail.com>
+ Roberto Ricci <ricci@disroot.org>
+ Rob Norris <robn@despairlabs.com>
+ Rob Wing <rew@FreeBSD.org>
Rohan Puri <rohan.puri15@gmail.com>
Romain Dolbeau <romain.dolbeau@atos.net>
Roman Strashkin <roman.strashkin@nexenta.com>
+ Ross Williams <ross@ross-williams.net>
Ruben Kerkhof <ruben@rubenkerkhof.com>
+ Ryan Hirasaki <ryanhirasaki@gmail.com>
+ Ryan Lahfa <masterancpp@gmail.com>
+ Ryan Libby <rlibby@FreeBSD.org>
+ Ryan Moeller <freqlabs@FreeBSD.org>
+ Sam Hathaway <github.com@munkynet.org>
+ Sam Lunt <samuel.j.lunt@gmail.com>
+ Samuel VERSCHELDE <stormi-github@ylix.fr>
+ Samuel Wycliffe <samuelwycliffe@gmail.com>
+ Samuel Wycliffe J <samwyc@hpe.com>
+ Sanjeev Bagewadi <sanjeev.bagewadi@gmail.com>
+ Sara Hartse <sara.hartse@delphix.com>
Saso Kiselkov <saso.kiselkov@nexenta.com>
+ Satadru Pramanik <satadru@gmail.com>
+ Savyasachee Jha <genghizkhan91@hawkradius.com>
+ Scott Colby <scott@scolby.com>
Scot W. Stevenson <scot.stevenson@gmail.com>
Sean Eric Fagan <sef@ixsystems.com>
Sebastian Gottschall <s.gottschall@dd-wrt.com>
+ Sebastien Roy <seb@delphix.com>
Sen Haerens <sen@senhaerens.be>
Serapheim Dimitropoulos <serapheim@delphix.com>
Seth Forshee <seth.forshee@canonical.com>
+ Shaan Nobee <sniper111@gmail.com>
Shampavman <sham.pavman@nexenta.com>
+ Shaun Tancheff <shaun@aeonazure.com>
Shen Yan <shenyanxxxy@qq.com>
Simon Guest <simon.guest@tesujimath.org>
Simon Klinkert <simon.klinkert@gmail.com>
Sowrabha Gopal <sowrabha.gopal@delphix.com>
+ Spencer Kinny <spencerkinny1995@gmail.com>
+ Srikanth N S <srikanth.nagasubbaraoseetharaman@hpe.com>
Stanislav Seletskiy <s.seletskiy@gmail.com>
Steffen Müthing <steffen.muething@iwr.uni-heidelberg.de>
Stephen Blinick <stephen.blinick@delphix.com>
+ sterlingjensen <sterlingjensen@users.noreply.github.com>
Steve Dougherty <sdougherty@barracuda.com>
+ Steve Mokris <smokris@softpixel.com>
Steven Burgess <sburgess@dattobackup.com>
Steven Hartland <smh@freebsd.org>
Steven Johnson <sjohnson@sakuraindustries.com>
+ Steven Noonan <steven@uplinklabs.net>
+ stf <s@ctrlc.hu>
Stian Ellingsen <stian@plaimi.net>
+ Stoiko Ivanov <github@nomore.at>
+ Stéphane Lesimple <speed47_github@speed47.net>
Suman Chakravartula <schakrava@gmail.com>
Sydney Vanda <sydney.m.vanda@intel.com>
Sören Tempel <soeren+git@soeren-tempel.net>
+ Tamas TEVESZ <ice@extreme.hu>
+ Teodor Spæren <teodor_spaeren@riseup.net>
+ TerraTech <TerraTech@users.noreply.github.com>
Thijs Cramer <thijs.cramer@gmail.com>
+ Thomas Geppert <geppi@digitx.de>
+ Thomas Lamprecht <guggentom@hotmail.de>
+ Till Maas <opensource@till.name>
Tim Chase <tim@chase2k.com>
Tim Connors <tconnors@rather.puzzling.org>
Tim Crawford <tcrawford@datto.com>
Tim Haley <Tim.Haley@Sun.COM>
+ timor <timor.dd@googlemail.com>
+ Timothy Day <tday141@gmail.com>
+ Tim Schumacher <timschumi@gmx.de>
Tino Reichardt <milky-zfs@mcmilk.de>
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>
+ Tom Prince <tom.prince@ualberta.net>
Tony Hutter <hutter2@llnl.gov>
+ Tony Nguyen <tony.nguyen@delphix.com>
+ Tony Perkins <tperkins@datto.com>
Toomas Soome <tsoome@me.com>
+ Torsten Wörtwein <twoertwein@gmail.com>
+ Toyam Cox <aviator45003@gmail.com>
+ Trevor Bautista <trevrb@trevrb.net>
Trey Dockendorf <treydock@gmail.com>
+ Troels Nørgaard <tnn@tradeshift.com>
+ Tulsi Jain <tulsi.jain@delphix.com>
Turbo Fredriksson <turbo@bayour.com>
Tyler J. Stachecki <stachecki.tyler@gmail.com>
+ Umer Saleem <usaleem@ixsystems.com>
+ Valmiky Arquissandas <kayvlim@gmail.com>
+ Val Packett <val@packett.cool>
+ Vince van Oosten <techhazard@codeforyouand.me>
+ Violet Purcell <vimproved@inventati.org>
+ Vipin Kumar Verma <vipin.verma@hpe.com>
Vitaut Bajaryn <vitaut.bayaryn@gmail.com>
+ Volker Mauel <volkermauel@gmail.com>
+ Václav Skála <skala@vshosting.cz>
+ Walter Huf <hufman@gmail.com>
+ Warner Losh <imp@bsdimp.com>
Weigang Li <weigang.li@intel.com>
+ WHR <msl0000023508@gmail.com>
Will Andrews <will@freebsd.org>
Will Rouesnel <w.rouesnel@gmail.com>
+ Windel Bouwman <windel@windel.nl>
+ Wojciech Małota-Wójcik <outofforest@users.noreply.github.com>
Wolfgang Bumiller <w.bumiller@proxmox.com>
Xin Li <delphij@FreeBSD.org>
+ Xinliang Liu <xinliang.liu@linaro.org>
+ xtouqh <xtouqh@hotmail.com>
+ Yann Collet <cyan@fb.com>
+ Yanping Gao <yanping.gao@xtaotech.com>
Ying Zhu <casualfisher@gmail.com>
+ Youzhong Yang <youzhong@gmail.com>
+ yparitcher <y@paritcher.com>
+ yuina822 <ayuichi@club.kyutech.ac.jp>
YunQiang Su <syq@debian.org>
Yuri Pankov <yuri.pankov@gmail.com>
Yuxuan Shui <yshuiv7@gmail.com>
Zachary Bedell <zac@thebedells.org>
+ Zach Dykstra <dykstra.zachary@gmail.com>
+ zgock <zgock@nuc.base.zgock-lab.net>
+ Zhu Chuang <chuang@melty.land>
+ Érico Nogueira <erico.erc@gmail.com>
+ Đoàn Trần Công Danh <congdanhqx@gmail.com>
+ 韩朴宇 <w12101111@gmail.com>
diff --git a/sys/contrib/openzfs/config/zfs-build.m4 b/sys/contrib/openzfs/config/zfs-build.m4
index e4197dc1424e..5f36569fe25b 100644
--- a/sys/contrib/openzfs/config/zfs-build.m4
+++ b/sys/contrib/openzfs/config/zfs-build.m4
@@ -626,6 +626,7 @@ AC_DEFUN([ZFS_AC_DEFAULT_PACKAGE], [
ubuntu) bashcompletiondir=/usr/share/bash-completion/completions ;;
debian) bashcompletiondir=/usr/share/bash-completion/completions ;;
freebsd) bashcompletiondir=$sysconfdir/bash_completion.d;;
+ gentoo) bashcompletiondir=/usr/share/bash-completion/completions ;;
*) bashcompletiondir=/etc/bash_completion.d ;;
esac
AC_MSG_RESULT([$bashcompletiondir])
diff --git a/sys/contrib/openzfs/include/os/freebsd/spl/sys/ctype.h b/sys/contrib/openzfs/include/os/freebsd/spl/sys/ctype.h
index 201fa95550e3..b9ca0f8ef2c4 100644
--- a/sys/contrib/openzfs/include/os/freebsd/spl/sys/ctype.h
+++ b/sys/contrib/openzfs/include/os/freebsd/spl/sys/ctype.h
@@ -39,6 +39,6 @@
((C) >= 0x3A && (C) <= 0x40) || \
((C) >= 0x5B && (C) <= 0x60) || \
((C) >= 0x7B && (C) <= 0x7E))
-#define isspace(C) ((C) == 0x20 || ((C) >= 0x9 && (C) <= 0xD))
+#define isspace(C) ((C) == 0x20 || ((C) >= 0x9 && (C) <= 0xD))
#endif
diff --git a/sys/contrib/openzfs/man/man4/zfs.4 b/sys/contrib/openzfs/man/man4/zfs.4
index cfadd79d87f3..71a3e67ee67e 100644
--- a/sys/contrib/openzfs/man/man4/zfs.4
+++ b/sys/contrib/openzfs/man/man4/zfs.4
@@ -2317,63 +2317,6 @@ If
.Sy zvol_threads
to the number of CPUs present or 32 (whichever is greater).
.
-.It Sy zvol_blk_mq_threads Ns = Ns Sy 0 Pq uint
-The number of threads per zvol to use for queuing IO requests.
-This parameter will only appear if your kernel supports
-.Li blk-mq
-and is only read and assigned to a zvol at zvol load time.
-If
-.Sy 0
-(the default) then internally set
-.Sy zvol_blk_mq_threads
-to the number of CPUs present.
-.
-.It Sy zvol_use_blk_mq Ns = Ns Sy 0 Ns | Ns 1 Pq uint
-Set to
-.Sy 1
-to use the
-.Li blk-mq
-API for zvols.
-Set to
-.Sy 0
-(the default) to use the legacy zvol APIs.
-This setting can give better or worse zvol performance depending on
-the workload.
-This parameter will only appear if your kernel supports
-.Li blk-mq
-and is only read and assigned to a zvol at zvol load time.
-.
-.It Sy zvol_blk_mq_blocks_per_thread Ns = Ns Sy 8 Pq uint
-If
-.Sy zvol_use_blk_mq
-is enabled, then process this number of
-.Sy volblocksize Ns -sized blocks per zvol thread.
-This tunable can be use to favor better performance for zvol reads (lower
-values) or writes (higher values).
-If set to
-.Sy 0 ,
-then the zvol layer will process the maximum number of blocks
-per thread that it can.
-This parameter will only appear if your kernel supports
-.Li blk-mq
-and is only applied at each zvol's load time.
-.
-.It Sy zvol_blk_mq_queue_depth Ns = Ns Sy 0 Pq uint
-The queue_depth value for the zvol
-.Li blk-mq
-interface.
-This parameter will only appear if your kernel supports
-.Li blk-mq
-and is only applied at each zvol's load time.
-If
-.Sy 0
-(the default) then use the kernel's default queue depth.
-Values are clamped to the kernel's
-.Dv BLKDEV_MIN_RQ
-and
-.Dv BLKDEV_MAX_RQ Ns / Ns Dv BLKDEV_DEFAULT_RQ
-limits.
-.
.It Sy zvol_volmode Ns = Ns Sy 1 Pq uint
Defines zvol block devices behaviour when
.Sy volmode Ns = Ns Sy default :
diff --git a/sys/contrib/openzfs/module/os/linux/zfs/zpl_file_range.c b/sys/contrib/openzfs/module/os/linux/zfs/zpl_file_range.c
index 2abbf44df587..c47fe99dacff 100644
--- a/sys/contrib/openzfs/module/os/linux/zfs/zpl_file_range.c
+++ b/sys/contrib/openzfs/module/os/linux/zfs/zpl_file_range.c
@@ -202,8 +202,10 @@ zpl_ioctl_ficlone(struct file *dst_file, void *arg)
if (src_file == NULL)
return (-EBADF);
- if (dst_file->f_op != src_file->f_op)
+ if (dst_file->f_op != src_file->f_op) {
+ fput(src_file);
return (-EXDEV);
+ }
size_t len = i_size_read(file_inode(src_file));
@@ -237,8 +239,10 @@ zpl_ioctl_ficlonerange(struct file *dst_file, void __user *arg)
if (src_file == NULL)
return (-EBADF);
- if (dst_file->f_op != src_file->f_op)
+ if (dst_file->f_op != src_file->f_op) {
+ fput(src_file);
return (-EXDEV);
+ }
size_t len = fcr.fcr_src_length;
if (len == 0)
diff --git a/sys/contrib/openzfs/module/os/linux/zfs/zvol_os.c b/sys/contrib/openzfs/module/os/linux/zfs/zvol_os.c
index 7a95b54bdf0d..76521c95911e 100644
--- a/sys/contrib/openzfs/module/os/linux/zfs/zvol_os.c
+++ b/sys/contrib/openzfs/module/os/linux/zfs/zvol_os.c
@@ -1620,18 +1620,6 @@ MODULE_PARM_DESC(zvol_prefetch_bytes, "Prefetch N bytes at zvol start+end");
module_param(zvol_volmode, uint, 0644);
MODULE_PARM_DESC(zvol_volmode, "Default volmode property value");
-#ifdef HAVE_BLK_MQ
-module_param(zvol_blk_mq_queue_depth, uint, 0644);
-MODULE_PARM_DESC(zvol_blk_mq_queue_depth, "Default blk-mq queue depth");
-
-module_param(zvol_use_blk_mq, uint, 0644);
-MODULE_PARM_DESC(zvol_use_blk_mq, "Use the blk-mq API for zvols");
-
-module_param(zvol_blk_mq_blocks_per_thread, uint, 0644);
-MODULE_PARM_DESC(zvol_blk_mq_blocks_per_thread,
- "Process volblocksize blocks per thread");
-#endif
-
#ifndef HAVE_BLKDEV_GET_ERESTARTSYS
module_param(zvol_open_timeout_ms, uint, 0644);
MODULE_PARM_DESC(zvol_open_timeout_ms, "Timeout for ZVOL open retries");
diff --git a/sys/contrib/openzfs/module/zfs/vdev_trim.c b/sys/contrib/openzfs/module/zfs/vdev_trim.c
index 0d71b9434342..03e17db024ea 100644
--- a/sys/contrib/openzfs/module/zfs/vdev_trim.c
+++ b/sys/contrib/openzfs/module/zfs/vdev_trim.c
@@ -23,6 +23,7 @@
* Copyright (c) 2016 by Delphix. All rights reserved.
* Copyright (c) 2019 by Lawrence Livermore National Security, LLC.
* Copyright (c) 2021 Hewlett Packard Enterprise Development LP
+ * Copyright 2023 RackTop Systems, Inc.
*/
#include <sys/spa.h>
@@ -591,6 +592,7 @@ vdev_trim_ranges(trim_args_t *ta)
uint64_t extent_bytes_max = ta->trim_extent_bytes_max;
uint64_t extent_bytes_min = ta->trim_extent_bytes_min;
spa_t *spa = vd->vdev_spa;
+ int error = 0;
ta->trim_start_time = gethrtime();
ta->trim_bytes_done = 0;
@@ -610,19 +612,32 @@ vdev_trim_ranges(trim_args_t *ta)
uint64_t writes_required = ((size - 1) / extent_bytes_max) + 1;
for (uint64_t w = 0; w < writes_required; w++) {
- int error;
-
error = vdev_trim_range(ta, VDEV_LABEL_START_SIZE +
rs_get_start(rs, ta->trim_tree) +
(w *extent_bytes_max), MIN(size -
(w * extent_bytes_max), extent_bytes_max));
if (error != 0) {
- return (error);
+ goto done;
}
}
}
- return (0);
+done:
+ /*
+ * Make sure all TRIMs for this metaslab have completed before
+ * returning. TRIM zios have lower priority over regular or syncing
+ * zios, so all TRIM zios for this metaslab must complete before the
+ * metaslab is re-enabled. Otherwise it's possible write zios to
+ * this metaslab could cut ahead of still queued TRIM zios for this
+ * metaslab causing corruption if the ranges overlap.
+ */
+ mutex_enter(&vd->vdev_trim_io_lock);
+ while (vd->vdev_trim_inflight[0] > 0) {
+ cv_wait(&vd->vdev_trim_io_cv, &vd->vdev_trim_io_lock);
+ }
+ mutex_exit(&vd->vdev_trim_io_lock);
+
+ return (error);
}
static void
@@ -941,11 +956,6 @@ vdev_trim_thread(void *arg)
}
spa_config_exit(spa, SCL_CONFIG, FTAG);
- mutex_enter(&vd->vdev_trim_io_lock);
- while (vd->vdev_trim_inflight[0] > 0) {
- cv_wait(&vd->vdev_trim_io_cv, &vd->vdev_trim_io_lock);
- }
- mutex_exit(&vd->vdev_trim_io_lock);
range_tree_destroy(ta.trim_tree);
diff --git a/sys/contrib/openzfs/rpm/generic/zfs.spec.in b/sys/contrib/openzfs/rpm/generic/zfs.spec.in
index 711e6c751dc0..2e89abd0edfd 100644
--- a/sys/contrib/openzfs/rpm/generic/zfs.spec.in
+++ b/sys/contrib/openzfs/rpm/generic/zfs.spec.in
@@ -19,6 +19,15 @@
%endif
%endif
+# Set the default _bashcompletiondir directory based on distribution.
+%if %{undefined _bashcompletiondir}
+%if 0%{?rhel}%{?fedora}%{?centos}%{?suse_version}%{?openEuler}
+%global _bashcompletiondir /etc/bash_completion.d
+%else
+%global _bashcompletiondir /usr/share/bash-completion
+%endif
+%endif
+
# Set the default dracut directory based on distribution.
%if %{undefined _dracutdir}
%if 0%{?rhel}%{?fedora}%{?centos}%{?suse_version}%{?openEuler}
diff --git a/sys/contrib/openzfs/scripts/Makefile.am b/sys/contrib/openzfs/scripts/Makefile.am
index 4175d27ea32a..95640727ac6a 100644
--- a/sys/contrib/openzfs/scripts/Makefile.am
+++ b/sys/contrib/openzfs/scripts/Makefile.am
@@ -27,6 +27,7 @@ endif
dist_noinst_DATA += \
%D%/cstyle.pl \
%D%/enum-extract.pl \
+ %D%/update_authors.pl \
%D%/zfs2zol-patch.sed \
%D%/zol2zfs-patch.sed
diff --git a/sys/contrib/openzfs/scripts/update_authors.pl b/sys/contrib/openzfs/scripts/update_authors.pl
new file mode 100755
index 000000000000..8dd49b5fb38d
--- /dev/null
+++ b/sys/contrib/openzfs/scripts/update_authors.pl
@@ -0,0 +1,322 @@
+#!/usr/bin/env perl
+
+# SPDX-License-Identifier: MIT
+#
+# Copyright (c) 2023, Rob Norris <robn@despairlabs.com>
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+# IN THE SOFTWARE.
+
+
+# This program will update the AUTHORS file to include commit authors that are
+# in the git history but are not yet credited.
+#
+# The CONTRIBUTORS section of the AUTHORS file attempts to be a list of
+# individual contributors to OpenZFS, with one name, address and line per
+# person. This is good for readability, but does not really leave room for the
+# that names and emails on commits from the same individual can be different,
+# for all kinds of reasons, not limited to:
+#
+# - a person might change organisations, and so their email address changes
+#
+# - a person might be paid to work on OpenZFS for their employer, and then hack
+# on personal projects in the evening, so commits legitimately come from
+# different addresses
+#
+# - names change for all kinds of reasons
+#
+# To try and account for this, this program will try to find all the possible
+# names and emails for a single contributor, and then select the "best" one to
+# add to the AUTHORS file.
+#
+# The CONTRIBUTORS section of the AUTHORS file is considered the source of
+# truth. Once an individual committer is listed in there, that line will not be
+# removed regardless of what is discovered in the commit history. However, it
+# can't just be _anything_. The name or email still has to match something seen
+# in the commit history, so that we're able to undertand that its the same
+# contributor.
+#
+# The bulk of the work is in running `git log` to fetch commit author names and
+# emails. For each value, we generate a "slug" to use as an internal id for
+# that value, which is mostly just the lowercase of the value with whitespace
+# and punctuation removed. Two values with subtle differences can produce the
+# same slug, so at this point we also try to keep the "best" pre-slug value as
+# the display version. We use this slug to update two maps, one of email->name,
+# the other of name->email.
+#
+# Once collected, we then walk all the emails we've seen and get all the names
+# associated with every instance. Then for each of those names, we get all the
+# emails associated, and so on until we've seen all the connected names and
+# emails. This collection is every possible name and email for an individual
+# contributor.
+#
+# Finaly, we consider these groups, and select the "best" name and email for
+# the contributor, and add them to the author tables if they aren't there
+# already. Once we've done everyone, we write out a new AUTHORS file, and
+# that's the whole job.
+#
+# This is imperfect! Its necessary for the user to examine the diff and make
+# sure its sensible. If it hasn't hooked up right, it may necessary to adjust
+# the input data (via .mailmap) or improve the heuristics in this program. It
+# took a long time to get into good shape when first written (355 new names
+# added to AUTHORS!) but hopefully in the future we'll be running this
+# regularly so it doesn't fall so far behind.
+
+
+use 5.010;
+use warnings;
+use strict;
+
+# Storage for the "best looking" version of name or email, keyed on slug.
+my %display_name;
+my %display_email;
+
+# First, we load the existing AUTHORS file. We save everything before
+# CONTRIBUTORS: line as-is so we can write it back out to the new file. Then
+# we extract name,email pairs from the remainder and store them in a pair of
+# hashtables, keyed on slug.
+my %authors_name;
+my %authors_email;
+
+my @authors_header;
+
+for my $line (do { local (@ARGV) = ('AUTHORS'); <> }) {
+ chomp $line;
+ state $in_header = 1;
+ if ($in_header) {
+ push @authors_header, $line;
+ $in_header = 0 if $line =~ m/^CONTRIBUTORS:/;
+ } else {
+ my ($name, $email) = $line =~ m/^\s+(.+)(?= <) <([^>]+)/;
+ next unless $name;
+
+ my $semail = email_slug($email);
+ my $sname = name_slug($name);
+
+ $authors_name{$semail} = $sname;
+ $authors_email{$sname} = $semail;
+
+ # The name/email in AUTHORS is already the "best looking"
+ # version, by definition.
+ $display_name{$sname} = $name;
+ $display_email{$semail} = $email;
+ }
+}
+
+# Next, we load all the commit authors. and form name<->email mappings, keyed
+# on slug. Note that this format is getting the .mailmap-converted form. This
+# lets us control the input to some extent by making changes there.
+my %git_names;
+my %git_emails;
+
+for my $line (reverse qx(git log --pretty=tformat:'%aN:::%aE')) {
+ chomp $line;
+ my ($name, $email) = $line =~ m/^(.*):::(.*)/;
+ next unless $name && $email;
+
+ my $semail = email_slug($email);
+ my $sname = name_slug($name);
+
+ $git_names{$semail}{$sname} = 1;
+ $git_emails{$sname}{$semail} = 1;
+
+ # Update the "best looking" display value, but only if we don't already
+ # have something from the AUTHORS file. If we do, we must not change it.
+ if (!$authors_name{email_slug($email)}) {
+ update_display_email($email);
+ }
+
+ if (!$authors_email{name_slug($name)}) {
+ update_display_name($name);
+ }
+}
+
+# Now collect unique committers by all names+emails we've ever seen for them.
+# We start with emails and resolve all possible names, then we resolve the
+# emails for those names, and round and round until there's nothing left.
+my @committers;
+for my $start_email (sort keys %git_names) {
+ # it might have been deleted already through a cross-reference
+ next unless $git_names{$start_email};
+
+ my %emails;
+ my %names;
+
+ my @check_emails = ($start_email);
+ my @check_names;
+ while (@check_emails || @check_names) {
+ while (my $email = shift @check_emails) {
+ next if $emails{$email}++;
+ push @check_names,
+ sort keys %{delete $git_names{$email}};
+ }
+ while (my $name = shift @check_names) {
+ next if $names{$name}++;
+ push @check_emails,
+ sort keys %{delete $git_emails{$name}};
+ }
+ }
+
+ # A "committer" is the collection of connected names and emails.
+ push @committers, [[sort keys %emails], [sort keys %names]];
+}
+
+# Now we have our committers, we can work out what to add to AUTHORS.
+for my $committer (@committers) {
+ my ($emails, $names) = @$committer;
+
+ # If this commiter is already in AUTHORS, we must not touch.
+ next if grep { $authors_name{$_} } @$emails;
+ next if grep { $authors_email{$_} } @$names;
+
+ # Decide on the "best" name and email to use
+ my $email = best_email(@$emails);
+ my $name = best_name(@$names);
+
+ $authors_email{$name} = $email;
+ $authors_name{$email} = $name;
+}
+
+# Now output the new AUTHORS file
+open my $fh, '>', 'AUTHORS' or die "E: couldn't open AUTHORS for write: $!\n";
+#my $fh = \*STDOUT;
+say $fh join("\n", @authors_header, "");
+for my $name (sort keys %authors_email) {
+ my $cname = $display_name{$name};
+ my $cemail = $display_email{email_slug($authors_email{$name})};
+ say $fh " $cname <$cemail>";
+}
+
+exit 0;
+
+# "Slugs" are used at the hashtable key for names and emails. They are used to
+# making two variants of a value be the "same" for matching. Mostly this is
+# to make upper and lower-case versions of a name or email compare the same,
+# but we do a little bit of munging to handle some common cases.
+#
+# Note that these are only used for matching internally; for display, the
+# slug will be used to look up the display form.
+sub name_slug {
+ my ($name) = @_;
+
+ # Remove spaces and dots, to handle differences in initials.
+ $name =~ s/[\s\.]//g;
+
+ return lc $name;
+}
+sub email_slug {
+ my ($email) = @_;
+
+ # Remove everything up to and including the first space, and the last
+ # space and everything after it.
+ $email =~ s/^(.*\s+)|(\s+.*)$//g;
+
+ # Remove the leading userid+ on Github noreply addresses. They're
+ # optional and we want to treat them as the same thing.
+ $email =~ s/^[^\+]*\+//g if $email =~ m/\.noreply\.github\.com$/;
+
+ return lc $email;
+}
+
+sub update_display_name {
+ my ($name) = @_;
+ my $sname = name_slug($name);
+
+ # For names, "more specific" means "has more non-lower-case characters"
+ # (in ASCII), guessing that if a person has gone to some effort to
+ # specialise their name in a later commit, they presumably care more
+ # about it. If this is wrong, its probably better to add a .mailmap
+ # entry.
+
+ my $cname = $display_name{$sname};
+ if (!$cname ||
+ ($name =~ tr/a-z //) < ($cname =~ tr/a-z //)) {
+ $display_name{$sname} = $name;
+ }
+}
+sub update_display_email {
+ my ($email) = @_;
+ my $semail = email_slug($email);
+
+ # Like names, we prefer uppercase when possible. We also remove any
+ # leading "plus address" for Github noreply addresses.
+ $email =~ s/^[^\+]*\+//g if $email =~ m/\.noreply\.github\.com$/;
+
+ my $cemail = $display_email{$semail};
+ if (!$cemail ||
+ ($email =~ tr/a-z //) < ($cemail =~ tr/a-z //)) {
+ $display_email{$semail} = $email;
+ }
+}
+
+sub best_name {
+ my @names = sort {
+ my $cmp;
+ my ($aa) = $display_name{$a};
+ my ($bb) = $display_name{$b};
+
+ # The "best" name is very subjective, and a simple sort
+ # produced good-enough results, so I didn't try harder. Use of
+ # accented characters, punctuation and caps are probably an
+ # indicator of "better", but possibly we should also take into
+ # account the most recent name we saw, in case the committer
+ # has changed their name or nickname or similar.
+ #
+ # Really, .mailmap is the place to control this.
+
+ return ($aa cmp $bb);
+ } @_;
+
+ return shift @names;
+}
+sub best_email {
+ state $internal_re = qr/\.(?:internal|local|\(none\))$/;
+ state $noreply_re = qr/\.noreply\.github\.com$/;
+ state $freemail_re = qr/\@(?:gmail|hotmail)\.com$/;
+
+ my @emails = sort {
+ my $cmp;
+
+ # prefer address with a single @ over those without
+ $cmp = (($b =~ tr/@//) == 1) <=> (($a =~ tr/@//) == 1);
+ return $cmp unless $cmp == 0;
+
+ # prefer any address over internal/local addresses
+ $cmp = (($a =~ $internal_re) <=> ($b =~ $internal_re));
+ return $cmp unless $cmp == 0;
+
+ # prefer any address over github noreply aliases
+ $cmp = (($a =~ $noreply_re) <=> ($b =~ $noreply_re));
+ return $cmp unless $cmp == 0;
+
+ # prefer any address over freemail providers
+ $cmp = (($a =~ $freemail_re) <=> ($b =~ $freemail_re));
+ return $cmp unless $cmp == 0;
+
+ # alphabetical by domain
+ my ($alocal, $adom) = split /\@/, $a;
+ my ($blocal, $bdom) = split /\@/, $b;
+ $cmp = ($adom cmp $bdom);
+ return $cmp unless $cmp == 0;
+
+ # alphabetical by local part
+ return ($alocal cmp $blocal);
+ } @_;
+
+ return shift @emails;
+}
diff --git a/sys/contrib/openzfs/tests/runfiles/common.run b/sys/contrib/openzfs/tests/runfiles/common.run
index 1435c55e8fc2..ef787c65c0f9 100644
--- a/sys/contrib/openzfs/tests/runfiles/common.run
+++ b/sys/contrib/openzfs/tests/runfiles/common.run
@@ -415,10 +415,6 @@ tests = ['zpool_import_001_pos', 'zpool_import_002_pos',
'zpool_import_rename_001_pos', 'zpool_import_all_001_pos',
'zpool_import_encrypted', 'zpool_import_encrypted_load',
'zpool_import_errata3', 'zpool_import_errata4',
- 'zpool_import_hostid_changed',
- 'zpool_import_hostid_changed_unclean_export',
- 'zpool_import_hostid_changed_cachefile',
- 'zpool_import_hostid_changed_cachefile_unclean_export',
'import_cachefile_device_added',
'import_cachefile_device_removed',
'import_cachefile_device_replaced',
diff --git a/sys/contrib/openzfs/tests/runfiles/linux.run b/sys/contrib/openzfs/tests/runfiles/linux.run
index 2c8d5cb0ecbb..2252e46df3a8 100644
--- a/sys/contrib/openzfs/tests/runfiles/linux.run
+++ b/sys/contrib/openzfs/tests/runfiles/linux.run
@@ -82,6 +82,13 @@ tests = ['zpool_expand_001_pos', 'zpool_expand_002_pos',
'zpool_expand_003_neg', 'zpool_expand_004_pos', 'zpool_expand_005_pos']
tags = ['functional', 'cli_root', 'zpool_expand']
+[tests/functional/cli_root/zpool_import:Linux]
+tests = ['zpool_import_hostid_changed',
+ 'zpool_import_hostid_changed_unclean_export',
+ 'zpool_import_hostid_changed_cachefile',
+ 'zpool_import_hostid_changed_cachefile_unclean_export']
+tags = ['functional', 'cli_root', 'zpool_import']
+
[tests/functional/cli_root/zpool_reopen:Linux]
tests = ['zpool_reopen_001_pos', 'zpool_reopen_002_pos',
'zpool_reopen_003_pos', 'zpool_reopen_004_pos', 'zpool_reopen_005_pos',
diff --git a/sys/contrib/openzfs/tests/test-runner/bin/zts-report.py.in b/sys/contrib/openzfs/tests/test-runner/bin/zts-report.py.in
index 558e4b57279d..5d1360380de5 100755
--- a/sys/contrib/openzfs/tests/test-runner/bin/zts-report.py.in
+++ b/sys/contrib/openzfs/tests/test-runner/bin/zts-report.py.in
@@ -262,7 +262,6 @@ if sys.platform.startswith('freebsd'):
'cli_root/zfs_inherit/zfs_inherit_001_neg': ['FAIL', known_reason],
'cli_root/zpool_import/zpool_import_012_pos': ['FAIL', known_reason],
'delegate/zfs_allow_003_pos': ['FAIL', known_reason],
- 'delegate/zfs_allow_010_pos': ['FAIL', known_reason],
'inheritance/inherit_001_pos': ['FAIL', 11829],
'resilver/resilver_restart_001': ['FAIL', known_reason],
'pool_checkpoint/checkpoint_big_rewind': ['FAIL', 12622],
diff --git a/sys/contrib/openzfs/tests/zfs-tests/include/tunables.cfg b/sys/contrib/openzfs/tests/zfs-tests/include/tunables.cfg
index 80e7bcb3bd09..8010a9451597 100644
--- a/sys/contrib/openzfs/tests/zfs-tests/include/tunables.cfg
+++ b/sys/contrib/openzfs/tests/zfs-tests/include/tunables.cfg
@@ -89,7 +89,7 @@ VDEV_VALIDATE_SKIP vdev.validate_skip vdev_validate_skip
VOL_INHIBIT_DEV UNSUPPORTED zvol_inhibit_dev
VOL_MODE vol.mode zvol_volmode
VOL_RECURSIVE vol.recursive UNSUPPORTED
-VOL_USE_BLK_MQ UNSUPPORTED zvol_use_blk_mq
+VOL_USE_BLK_MQ UNSUPPORTED UNSUPPORTED
XATTR_COMPAT xattr_compat zfs_xattr_compat
ZEVENT_LEN_MAX zevent.len_max zfs_zevent_len_max
ZEVENT_RETAIN_MAX zevent.retain_max zfs_zevent_retain_max
diff --git a/sys/contrib/openzfs/tests/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_concurrent_shares.ksh b/sys/contrib/openzfs/tests/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_concurrent_shares.ksh
index c226f56e3dcb..d779689f83bd 100755
--- a/sys/contrib/openzfs/tests/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_concurrent_shares.ksh
+++ b/sys/contrib/openzfs/tests/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_concurrent_shares.ksh
@@ -98,11 +98,26 @@ function test_share # filesystem
zfs set sharenfs=on $filesystem || \
sub_fail "zfs set sharenfs=on $filesystem failed."
- is_shared $mntp || \
- sub_fail "File system $filesystem is not shared (set sharenfs)."
#
- # Verify 'zfs share' works as well.
+ # Verify 'zfs share' results in a shared mount. We check this
+ # multiple times because of Fedora 37+ it's been observed in
+ # the CI that the share may not be immediately reported.
+ #
+ for retry in $(seq 1 10); do
+ is_shared $mntp && break
+
+ log_note "Wait $retry / 10 for is_shared $mntp (set sharenfs)"
+
+ if [[ $retry -eq 10 ]]; then
+ sub_fail "File system $filesystem is not shared (set sharenfs)."
+ fi
+
+ sleep 1
+ done
+
+ #
+ # Verify 'zfs unshare' works as well.
#
zfs unshare $filesystem || \
sub_fail "zfs unshare $filesystem failed."
@@ -112,9 +127,23 @@ function test_share # filesystem
zfs share $filesystem || \
sub_fail "zfs share $filesystem failed."
- is_shared $mntp || \
- sub_fail "file system $filesystem is not shared (zfs share)."
+ #
+ # Verify 'zfs share' results in a shared mount. We check this
+ # multiple times because of Fedora 37+ it's been observed in
+ # the CI that the share may not be immediately reported.
+ #
+ for retry in $(seq 1 10); do
+ is_shared $mntp && break
+
+ log_note "Wait $retry / 10 for is_shared $mntp (zfs share)"
+
+ if [[ $retry -eq 10 ]]; then
+ sub_fail "File system $filesystem is not shared (zfs share)."
+ fi
+
+ sleep 1
+ done
#log_note "Sharing a shared file system fails."
zfs share $filesystem && \
diff --git a/sys/contrib/openzfs/tests/zfs-tests/tests/functional/delegate/delegate_common.kshlib b/sys/contrib/openzfs/tests/zfs-tests/tests/functional/delegate/delegate_common.kshlib
index 3f2f089e8171..5ddb6ca2ddc8 100644
--- a/sys/contrib/openzfs/tests/zfs-tests/tests/functional/delegate/delegate_common.kshlib
+++ b/sys/contrib/openzfs/tests/zfs-tests/tests/functional/delegate/delegate_common.kshlib
@@ -861,7 +861,7 @@ function verify_fs_mount
fi
if ! ismounted $fs ; then
- log_must zfs set mountpoint=$newmntpt $fs
+ log_must zfs set -u mountpoint=$newmntpt $fs
log_must rm -rf $newmntpt
log_must mkdir $newmntpt
@@ -878,7 +878,7 @@ function verify_fs_mount
fi
log_must zfs umount $fs
log_must rm -rf $newmntpt
- log_must zfs set mountpoint=$mntpt $fs
+ log_must zfs set -u mountpoint=$mntpt $fs
fi
return 0