diff --git a/sys/contrib/openzfs/.gitignore b/sys/contrib/openzfs/.gitignore index 1ef47d921c2..47d17ae16d3 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 00000000000..46ef016b93f --- /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 Name +# Canonical Name Commit Name +# +# 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 +Ahelenia Ziemiańska +Alex John +Andreas Dilger +Andrew Walker +Benedikt Neuffer +Chengfei Zhu +Chris Lindee +Colm Buckley +Crag Wang +Damian Szuberski +Daniel Kolesa +Debabrata Banerjee +Finix Yan +Gaurav Kumar +Gionatan Danti +Glenn Washburn +Gordan Bobic +Gregory Bartholomew +hedong zhang +InsanePrawn +Jason Cohen +Jason Harmening +Jeremy Faulkner +Jinshan Xiong +John Poduska +Justin Scholz +Ka Ho Ng +Kash Pande +Kay Pedersen +KernelOfTruth +Liu Hua +Liu Qing +loli10K +Matthias Blankertz +Michael Gmelin +Olivier Mazouffre +Piotr Kubaj +Quentin Zdanis +Roberto Ricci +Rob Norris +Rob Norris +Sam Lunt +Sanjeev Bagewadi +Stoiko Ivanov +Tamas TEVESZ +WHR +Yanping Gao +Youzhong Yang + +# Commits from strange places, long ago +Brian Behlendorf +Brian Behlendorf +Brian Behlendorf +Brian Behlendorf +Brian Behlendorf +Herb Wartens +Ned Bass +Tulsi Jain + +# Mappings from Github no-reply addresses +ajs124 +Alek Pinchuk +Alexander Lobakin +Alexey Smirnoff +Allen Holl <65494904+allen-4@users.noreply.github.com> +Ameer Hamza <106930537+ixhamza@users.noreply.github.com> +Andrew J. Hesford <48421688+ahesford@users.noreply.github.com>> +Andrew Sun +Aron Xu +Arun KV <65647132+arun-kv@users.noreply.github.com> +Ben Wolsieffer +bernie1995 <42413912+bernie1995@users.noreply.github.com> +Boris Protopopov +Brad Forschinger +Brandon Thetford +buzzingwires <131118055+buzzingwires@users.noreply.github.com> +Cedric Maunoury <38213715+cedricmaunoury@users.noreply.github.com> +Charles Suh +Dacian Reece-Stremtan <35844628+dacianstremtan@users.noreply.github.com> +Damian Szuberski <30863496+szubersk@users.noreply.github.com> +Daniel Hiepler <32984777+heeplr@users.noreply.github.com> +Daniel Kobras +Daniel Reichelt +David Quigley +DHE +Dmitri John Ledkov <19779+xnox@users.noreply.github.com> +Dries Michiels <32487486+driesmp@users.noreply.github.com> +Edmund Nadolski <137826107+ednadolski-ix@users.noreply.github.com> +Érico Nogueira <34201958+ericonr@users.noreply.github.com> +Fedor Uporov <60701163+fuporovvStack@users.noreply.github.com> +Felix Dörre +Felix Neumärker <34678034+xdch47@users.noreply.github.com> +Finix Yan +Gaurav Kumar +George Gaydarov +Georgy Yakovlev <168902+gyakovlev@users.noreply.github.com> +Gerardwx +Gian-Carlo DeFazio +Giuseppe Di Natale +Hajo Möller +Harry Mallon <1816667+hjmallon@users.noreply.github.com> +Hiếu Lê +Jake Howard +James Cowgill +Jason King +Jeff Dike <52420226+jdike@users.noreply.github.com> +Jitendra Patidar <53164267+jsai20@users.noreply.github.com> +João Carlos Mendes Luís +John Eismeier <32205350+jeis2497052@users.noreply.github.com> +John L. Hammond <35266395+jhammond-intel@users.noreply.github.com> +John-Mark Gurney +John Ramsden +Jonathon Fernyhough <559369+jonathonf@users.noreply.github.com> +Justin Hibbits +Kevin Jin <33590050+jxdking@users.noreply.github.com> +Kevin P. Fleming +Krzysztof Piecuch <3964215+pikrzysztof@users.noreply.github.com> +Kyle Evans +Laurențiu Nicola +loli10K +Lorenz Hüdepohl +Luís Henriques <73643340+lumigch@users.noreply.github.com> +Marcin Skarbek +Matt Fiddaman <81489167+matt-fidd@users.noreply.github.com> +Max Zettlmeißl <6818198+maxz@users.noreply.github.com> +Michael Niewöhner +Michael Zhivich <33133421+mzhivich@users.noreply.github.com> +Mo Zhou <5723047+cdluminate@users.noreply.github.com> +Nick Mattis +omni <79493359+omnivagant@users.noreply.github.com> +Pablo Correa Gómez <32678034+pablofsf@users.noreply.github.com> +Paul Zuchowski <31706010+PaulZ-98@users.noreply.github.com> +Peter Ashford +Peter Dave Hello +Peter Wirdemo <4224155+pewo@users.noreply.github.com> +Petros Koutoupis +Ping Huang <101400146+hpingfs@users.noreply.github.com> +Piotr P. Stefaniak +Richard Allen <33836503+belperite@users.noreply.github.com> +Rich Ercolani <214141+rincebrain@users.noreply.github.com> +Rob Wing <98866084+rob-wing@users.noreply.github.com> +Roman Strashkin +Ryan Hirasaki <4690732+RyanHir@users.noreply.github.com> +Samuel Wycliffe J <115969550+samwyc@users.noreply.github.com> +Samuel Wycliffe <50765275+npc203@users.noreply.github.com> +Savyasachee Jha +Scott Colby +Sean Eric Fagan +Spencer Kinny <30333052+Spencer-Kinny@users.noreply.github.com> +Srikanth N S <75025422+nssrikanth@users.noreply.github.com> +Thomas Geppert +Tim Crawford +Tom Matthews +Tony Perkins <62951051+tony-zfs@users.noreply.github.com> +Torsten Wörtwein +Tulsi Jain +Václav Skála <33496485+vaclavskala@users.noreply.github.com> +Violet Purcell <66446404+vimproved@users.noreply.github.com> +Vipin Kumar Verma <75025470+vermavipinkumar@users.noreply.github.com> +Wolfgang Bumiller +xtouqh <72357159+xtouqh@users.noreply.github.com> +Yuri Pankov <113725409+yuripv@users.noreply.github.com> +Yuri Pankov <82001006+yuripv@users.noreply.github.com> diff --git a/sys/contrib/openzfs/AUTHORS b/sys/contrib/openzfs/AUTHORS index c2af58d7508..be1efb87b34 100644 --- a/sys/contrib/openzfs/AUTHORS +++ b/sys/contrib/openzfs/AUTHORS @@ -10,228 +10,450 @@ PAST MAINTAINERS: CONTRIBUTORS: Aaron Fineman + Adam D. Moss Adam Leventhal Adam Stevko + adisbladis + Adrian Chadd + Ahelenia Ziemiańska Ahmed G + Aidan Harris + AJ Jordan + ajs124 Akash Ayare + Akash B Alan Somers Alar Aun Albert Lee Alec Salazar + Alejandro Colomar Alejandro R. Sedeño Alek Pinchuk Aleksa Sarai + Alexander Eremin + Alexander Lobakin + Alexander Motin + Alexander Pyhalov + Alexander Richardson + Alexander Stetsenko Alex Braunegg + Alexey Shvetsov + Alexey Smirnoff + Alex John Alex McWhirter Alex Reece Alex Wilson Alex Zhuravlev - Alexander Eremin - Alexander Motin - Alexander Pyhalov - Alexander Stetsenko - Alexey Shvetsov - Alexey Smirnoff Allan Jude + Allen Holl + alteriks + Alyssa Ross + Ameer Hamza + Anatoly Borodin AndCycle + Andrea Gelmini + Andrea Righi Andreas Buschmann Andreas Dilger + Andreas Vögele Andrew Barnes Andrew Hamilton + Andrew Innes + Andrew J. Hesford Andrew Reid Andrew Stormont + Andrew Sun Andrew Tselischev + Andrew Turner + Andrew Walker + Andrey Prokopenko Andrey Vesnovaty Andriy Gapon Andy Bakun + Andy Fiddaman Aniruddha Shankar + Anton Gubarkov Antonio Russo Arkadiusz Bubała + Armin Wehrfritz Arne Jansen Aron Xu + Arshad Hussain + Arun KV + Arvind Sankar + Attila Fülöp + Avatat Bart Coddens Basil Crow - Huang Liu + Bassu Ben Allen - Ben Rubson + Ben Cordero + Benedikt Neuffer Benjamin Albrecht + Benjamin Gentil + Ben McGough + Ben Rubson + Ben Wolsieffer + bernie1995 Bill McGonigle Bill Pijewski Boris Protopopov + Brad Forschinger Brad Lewis + Brandon Thetford + Brian Atkinson Brian Behlendorf Brian J. Murrell + Brooks Davis + BtbN + bunder2015 + buzzingwires + bzzz77 + cable2999 Caleb James DeLisle Cao Xuewen Carlo Landmeter Carlos Alberto Lopez Perez + Cedric Maunoury Chaoyu Zhang + Charles Suh Chen Can + Chengfei Zhu Chen Haiquan Chip Parker Chris Burroughs Chris Dunlap Chris Dunlop + Chris Lindee + Chris McDonough Chris Siden - Chris Wedgwood - Chris Williamson - Chris Zubrzycki - Christ Schlacta + Chris Siebenmann Christer Ekholm Christian Kohlschütter Christian Neukirchen Christian Schwarz Christopher Voltz + Christ Schlacta + Chris Wedgwood + Chris Williamson + Chris Zubrzycki + Chuck Tuffli Chunwei Chen Clemens Fruhwirth + Clemens Lang + Clint Armstrong Coleman Kane Colin Ian King + Colm Buckley + Crag Wang Craig Loomis Craig Sanders Cyril Plisko - DHE + Cy Schubert + Cédric Berger + Dacian Reece-Stremtan + Dag-Erling Smørgrav + Damiano Albani + Damian Szuberski Damian Wojsław + Daniel Hiepler + Daniel Hoffman + Daniel Kobras + Daniel Kolesa + Daniel Reichelt + Daniel Stevenson + Daniel Verite + Daniil Lunev Dan Kimmel Dan McDonald Dan Swartzendruber Dan Vatca - Daniel Hoffman - Daniel Verite - Daniil Lunev Darik Horn Dave Eddy + David Hedberg David Lamparter David Qian David Quigley Debabrata Banerjee + D. Ebdrup Denys Rtveliashvili Derek Dai + DHE + Didier Roche Dimitri John Ledkov + Dimitry Andric + Dirkjan Bussink Dmitry Khasanov + Dominic Pearson Dominik Hassler Dominik Honnef Don Brady + Doug Rabson Dr. András Korn + Dries Michiels + Edmund Nadolski + Eitan Adler Eli Rosenthal + Eli Schwartz Eric Desrochers Eric Dillmann Eric Schrock + Ethan Coe-Renner Etienne Dechamps + Evan Allrich + Evan Harris Evan Susarret Fabian Grünbichler + Fabio Buso + Fabio Scaccabarozzi Fajar A. Nugraha Fan Yong + fbynite + Fedor Uporov + Felix Dörre + Felix Neumärker Feng Sun + Finix Yan + Francesco Mazzoli Frederik Wessels Frédéric Vanniere + Gabriel A. Devenyi Garrett D'Amore + Garrett Fields Garrison Jensen Gary Mills Gaurav Kumar GeLiXin George Amanakis + George Diamantopoulos + George Gaydarov George Melikov George Wilson Georgy Yakovlev + Gerardwx + Gian-Carlo DeFazio + Gionatan Danti Giuseppe Di Natale + Glenn Washburn Gordan Bobic + Gordon Bergling Gordon Ross + Graham Christensen + Graham Perrin Gregor Kopka + Gregory Bartholomew + grembo Grischa Zengel + grodik Gunnar Beutner Gvozden Neskovic Hajo Möller + Han Gao Hans Rosenfeld + Harald van Dijk + Harry Mallon + Harry Sintonen + HC + hedong zhang + Heitor Alves de Siqueira + Henrik Riomar + Herb Wartens + Hiếu Lê + Huang Liu Håkan Johansson + Igor K Igor Kozhukhov Igor Lvovsky + ilbsmart + illiliti + ilovezfs + InsanePrawn Isaac Huang - JK Dingwall Jacek Fefliński + Jacob Adams + Jake Howard James Cowgill + James H James Lee James Pan + James Wah Jan Engelhardt Jan Kryl Jan Sanislo + Jason Cohen + Jason Harmening Jason King Jason Zaman Javen Wu + Jean-Baptiste Lallement + Jeff Dike + Jeremy Faulkner Jeremy Gill Jeremy Jones + Jeremy Visser Jerry Jelinek + Jessica Clarke Jinshan Xiong + Jitendra Patidar + JK Dingwall Joe Stein + John-Mark Gurney John Albietz John Eismeier - John L. Hammond + John Gallagher John Layman - John Paul Adrian Glaubitz - John Wren Kennedy + John L. Hammond + John M. Layman Johnny Stenback + John Paul Adrian Glaubitz + John Poduska + John Ramsden + John Wren Kennedy + jokersus + Jonathon Fernyhough Jorgen Lundman Josef 'Jeff' Sipek + Josh Soref Joshua M. Clulow + José Luis Salvador Rufo + João Carlos Mendes Luís + Julian Brunner + Julian Heuking + jumbi77 Justin Bedő + Justin Gottula + Justin Hibbits + Justin Keogh Justin Lecher + Justin Scholz Justin T. Gibbs + jyxent Jörg Thalheim - KORN Andras + ka7 + Ka Ho Ng Kamil Domański Karsten Kretschmer Kash Pande + Kay Pedersen Keith M Wesolowski + KernelOfTruth + Kevin Bowling + Kevin Jin + Kevin P. Fleming Kevin Tanguy KireinaHoro Kjeld Schouten-Lebbing + Kleber Tarcísio + Kody A Kantor Kohsuke Kawaguchi + Konstantin Khorenko + KORN Andras + Kristof Provost + Krzysztof Piecuch Kyle Blatter + Kyle Evans Kyle Fuller - Loli + Laevos + Lalufu Lars Johannsen + Laura Hild + Laurențiu Nicola + Lauri Tirkkonen + liaoyuxiangqin Li Dongyang + Liu Hua + Liu Qing Li Wei + Loli + lorddoskias + Lorenz Brun + Lorenz Hüdepohl + louwrentius Lukas Wunner + luozhengzheng + Luís Henriques Madhav Suresh + manfromafar Manoj Joseph Manuel Amador (Rudd-O) Marcel Huber + Marcel Menzel + Marcel Schilling Marcel Telka Marcel Wysocki + Marcin Skarbek + Mariusz Zaborski + Mark Johnston + Mark Maybee + Mark Roper Mark Shellenbaum + marku89 Mark Wright Martin Matuska + Martin Rüegg Massimo Maggi - Matt Johnston - Matt Kemp + Mateusz Guzik + Mateusz Piotrowski <0mp@FreeBSD.org> + Mathieu Velten + Matt Fiddaman Matthew Ahrens Matthew Thode + Matthias Blankertz + Matt Johnston + Matt Kemp + Matt Macy Matus Kral + Mauricio Faria de Oliveira Max Grossman Maximilian Mehnert + Max Zettlmeißl + Md Islam + megari + Michael D Labriola + Michael Franzl Michael Gebetsroither Michael Kjorling Michael Martin Michael Niewöhner + Michael Zhivich + Michal Vasilek Mike Gerdts Mike Harsch Mike Leddy Mike Swanson Milan Jurik + Minsoo Choo + Mohamed Tawfik Morgan Jones Moritz Maxeiner + Mo Zhou + naivekun + nathancheek Nathaniel Clark Nathaniel Wesley Filardo + Nathan Lewis Nav Ravindranath Neal Gompa (ニール・ゴンパ) Ned Bass Neependra Khare Neil Stockbridge + Nick Black Nick Garvey + Nick Mattis + Nick Terrell + Niklas Haas Nikolay Borisov + nordaux + ofthesun9 Olaf Faaland Oleg Drokin Oleg Stepura + Olivier Mazouffre + omni + Orivej Desh + Pablo Correa Gómez + Palash Gandhi + Patrick Mooney Patrik Greco Paul B. Henson Paul Dagnelie @@ -243,69 +465,160 @@ CONTRIBUTORS: Pedro Giffuni Peng Peter Ashford + Peter Dave Hello + Peter Levine + Peter Wirdemo + Petros Koutoupis + Philip Pokorny + Philipp Riederer + Phil Kauffman + Ping Huang + Piotr Kubaj + Piotr P. Stefaniak Prakash Surya Prasad Joshi + privb0x23 + P.SCH + Quentin Zdanis + Rafael Kitover + RageLtMan Ralf Ertzinger Randall Mason Remy Blank + renelson + Reno Reckling Ricardo M. Correia - Rich Ercolani + Riccardo Schirone + Richard Allen Richard Elling Richard Laager Richard Lowe Richard Sharpe Richard Yao + Rich Ercolani + Robert Novak + Roberto Ricci + Rob Norris + Rob Wing Rohan Puri Romain Dolbeau Roman Strashkin + Ross Williams Ruben Kerkhof + Ryan Hirasaki + Ryan Lahfa + Ryan Libby + Ryan Moeller + Sam Hathaway + Sam Lunt + Samuel VERSCHELDE + Samuel Wycliffe + Samuel Wycliffe J + Sanjeev Bagewadi + Sara Hartse Saso Kiselkov + Satadru Pramanik + Savyasachee Jha + Scott Colby Scot W. Stevenson Sean Eric Fagan Sebastian Gottschall + Sebastien Roy Sen Haerens Serapheim Dimitropoulos Seth Forshee + Shaan Nobee Shampavman + Shaun Tancheff Shen Yan Simon Guest Simon Klinkert Sowrabha Gopal + Spencer Kinny + Srikanth N S Stanislav Seletskiy Steffen Müthing Stephen Blinick + sterlingjensen Steve Dougherty + Steve Mokris Steven Burgess Steven Hartland Steven Johnson + Steven Noonan + stf Stian Ellingsen + Stoiko Ivanov + Stéphane Lesimple Suman Chakravartula Sydney Vanda Sören Tempel + Tamas TEVESZ + Teodor Spæren + TerraTech Thijs Cramer + Thomas Geppert + Thomas Lamprecht + Till Maas Tim Chase Tim Connors Tim Crawford Tim Haley + timor + Timothy Day + Tim Schumacher Tino Reichardt Tobin Harding Tom Caputi Tom Matthews - Tom Prince Tomohiro Kusumi + Tom Prince Tony Hutter + Tony Nguyen + Tony Perkins Toomas Soome + Torsten Wörtwein + Toyam Cox + Trevor Bautista Trey Dockendorf + Troels Nørgaard + Tulsi Jain Turbo Fredriksson Tyler J. Stachecki + Umer Saleem + Valmiky Arquissandas + Val Packett + Vince van Oosten + Violet Purcell + Vipin Kumar Verma Vitaut Bajaryn + Volker Mauel + Václav Skála + Walter Huf + Warner Losh Weigang Li + WHR Will Andrews Will Rouesnel + Windel Bouwman + Wojciech Małota-Wójcik Wolfgang Bumiller Xin Li + Xinliang Liu + xtouqh + Yann Collet + Yanping Gao Ying Zhu + Youzhong Yang + yparitcher + yuina822 YunQiang Su Yuri Pankov Yuxuan Shui Zachary Bedell + Zach Dykstra + zgock + Zhu Chuang + Érico Nogueira + Đoàn Trần Công Danh + 韩朴宇 diff --git a/sys/contrib/openzfs/config/zfs-build.m4 b/sys/contrib/openzfs/config/zfs-build.m4 index e4197dc1424..5f36569fe25 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 201fa95550e..b9ca0f8ef2c 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 cfadd79d87f..71a3e67ee67 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 2abbf44df58..c47fe99dacf 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 f94ce69fb9e..e145a8c876b 100644 --- a/sys/contrib/openzfs/module/os/linux/zfs/zvol_os.c +++ b/sys/contrib/openzfs/module/os/linux/zfs/zvol_os.c @@ -1626,18 +1626,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/dmu_tx.c b/sys/contrib/openzfs/module/zfs/dmu_tx.c index 0eb8c17e331..8451b5082e8 100644 --- a/sys/contrib/openzfs/module/zfs/dmu_tx.c +++ b/sys/contrib/openzfs/module/zfs/dmu_tx.c @@ -210,10 +210,12 @@ dmu_tx_check_ioerr(zio_t *zio, dnode_t *dn, int level, uint64_t blkid) dmu_buf_impl_t *db; rw_enter(&dn->dn_struct_rwlock, RW_READER); - db = dbuf_hold_level(dn, level, blkid, FTAG); + err = dbuf_hold_impl(dn, level, blkid, TRUE, FALSE, FTAG, &db); rw_exit(&dn->dn_struct_rwlock); - if (db == NULL) - return (SET_ERROR(EIO)); + if (err == ENOENT) + return (0); + if (err != 0) + return (err); /* * PARTIAL_FIRST allows caching for uncacheable blocks. It will * be cleared after dmu_buf_will_dirty() call dbuf_read() again. diff --git a/sys/contrib/openzfs/module/zfs/vdev_trim.c b/sys/contrib/openzfs/module/zfs/vdev_trim.c index 0d71b943434..03e17db024e 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 @@ -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 711e6c751dc..2e89abd0edf 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 07543456643..b43bf97dbdf 100644 --- a/sys/contrib/openzfs/scripts/Makefile.am +++ b/sys/contrib/openzfs/scripts/Makefile.am @@ -29,6 +29,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 00000000000..8dd49b5fb38 --- /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 +# +# 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 1435c55e8fc..ef787c65c0f 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 2c8d5cb0ecb..2252e46df3a 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 558e4b57279..5d1360380de 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 80e7bcb3bd0..8010a945159 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 c226f56e3dc..d779689f83b 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 3f2f089e817..5ddb6ca2ddc 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 diff --git a/sys/modules/zfs/zfs_config.h b/sys/modules/zfs/zfs_config.h index 1990d5d99cb..a41af071ec5 100644 --- a/sys/modules/zfs/zfs_config.h +++ b/sys/modules/zfs/zfs_config.h @@ -1110,7 +1110,7 @@ /* #undef ZFS_IS_GPL_COMPATIBLE */ /* Define the project alias string. */ -#define ZFS_META_ALIAS "zfs-2.2.99-FreeBSD_g66b81b349" +#define ZFS_META_ALIAS "zfs-2.2.99-FreeBSD_g8a7407012" /* Define the project author. */ #define ZFS_META_AUTHOR "OpenZFS" @@ -1140,7 +1140,7 @@ #define ZFS_META_NAME "zfs" /* Define the project release. */ -#define ZFS_META_RELEASE "FreeBSD_g66b81b349" +#define ZFS_META_RELEASE "FreeBSD_g8a7407012" /* Define the project version. */ #define ZFS_META_VERSION "2.2.99" diff --git a/sys/modules/zfs/zfs_gitrev.h b/sys/modules/zfs/zfs_gitrev.h index 648e4ce0811..0dfff6b0c88 100644 --- a/sys/modules/zfs/zfs_gitrev.h +++ b/sys/modules/zfs/zfs_gitrev.h @@ -1 +1 @@ -#define ZFS_META_GITREV "zfs-2.2.99-136-g66b81b349" +#define ZFS_META_GITREV "zfs-2.2.99-151-g8a7407012"