Releases: openzfs/zfs
zfs-2.4.0-rc2
We are excited to announce the second release candidate (RC2) of OpenZFS 2.4.0!
Supported Platforms
- Linux: compatible with 4.18 - 6.17 kernels
- FreeBSD: compatible with releases starting from 13.3+, 14.0+
Key Features in OpenZFS 2.4.0:
- Quotas: Allow setting default user/group/project quotas (#17130)
- Uncached IO: Direct IO fallback to a light-weight uncached IO when unaligned (#17218)
- Unified allocation throttling: A new algorithm designed to reduce vdev fragmentation (#17020)
- Better encryption performance using AVX2 for AES-GCM (#17058)
- Allow ZIL on special vdevs when available (#17505)
- Extend
special_small_blocks
to land ZVOL writes on special vdevs (#14876), and allow non-power of two values (#17497) - Add
zfs rewrite -P
which preserves logical birth time when possible to minimize incremental stream size (#17565) - Add
-a|--all
option which scrubs, trims, or initializes all imported pools (#17524) - Add
zpool scrub -S -E
to scrub specific time ranges (#16853) - Release topology restrictions on special/dedup vdevs (#17496)
- Multiple gang blocks improvements and fixes (#17111, #17004, #17587, #17484, #17123, #17073)
- New dedup optimizations and fixes (#17038, #17123, #17435, #17391)
How to Participate:
We encourage users and developers to test this release candidate and provide feedback. Your input is invaluable in ensuring the final release meets our community's needs. Please report any issues you encounter in our GitHub repository.
zfs-2.4.0-rc2 changelog: git cherry -v remotes/origin/zfs-2.3-release zfs-2.4.0-rc2 | sed '/^-/d; s/+ //g'
zfs-2.3.4
Supported Platforms
- Linux: compatible with 4.18 - 6.16 kernels
- FreeBSD: compatible with releases starting from 13.3+, 14.0+
Changes
- CI: Add Debian 13 to the FULL_OS runner list #17648
- Debian rules: install scripts/objtool-wrapper.in into dkms tree #17633 #17646
- objtool-wrapper: Update Debian packaging #17633 #17646
- add uncompressed_size to arc_summary #17556
- FreeBSD: Add support for _PC_HAS_HIDDENSYSTEM #17518
- Add templated [email protected] #17483
- FreeBSD: Ensure that z_pflags is initialized for new znodes #17486
- CI: Add optional patch level, fix hostname on F42 #17638
- Add CodeQL mismatched dsl_dataset_hold/_rele pairs check #17352
- Add conflict/replacement with older SONAME libzfs and libzpool packages #17586
- FreeBSD: zfs_putpages: don't undirty pages until after write completes #17533
- Revert "FreeBSD: zfs_putpages: don't undirty pages until after write completes" #17533
- Allow vmem_alloc backed multilists #17616
- Silence zstd large allocation warning #17620 #11557
- FreeBSD 15.0 is now "PRERELEASE" #17617
- Linux 6.16 compat: META #17578
- zed: prettify slack notification message #17610
- linux/zvol_os: fix crash with blk-mq on Linux 4.19 #17597
- rpm: don't list /sbin/zgenhostid twice in %files #17601
- config: Avoid
void main()
in toolchain-simd.m4 #13303 #17590 - SIMD: Don't require definition of
HAVE_XSAVE
#13303 #17590 - Linux: zfs_putpage: document (and fix!) confusing sync/commit modes #17584
- Linux: zfs_putpage: complete async page writeback immediately #17584 #14290
- Linux: sync: remove async/sync accounting #17584
- ZTS: mmap_ftruncate test to confirm async writeback behaviour #17584
- CI: match and trim out internal timestamp for test prefix #17045
- ZTS: include microsecond timestamps on all output #17045
- CI: Remove Debian backports #17569
- linux: Fix out-of-src builds #17517
- Fix zdb pool/ with -k #17536
- CI: Add CentOS Stream 9/10 to the FULL_OS runner list #16904 #17526
- Delete unused .cirrus.yml #17155 #17535
- ZTS: Fix FreeBSD 15.0 ksh errors #17523
- CI: Switch from FreeBSD 13.4 to 13.5 #17519
- Revert "Fix incorrect expected error in ztest" #17503
- ztest: Fix false positive of ENOSPC handling #17506
- CI: run ztest on compressed zpool #17501
- pyzfs: Adapt python lib directory evaluation from ax_python_devel.m4 #16155 #17480
- pyzfs: Update ax_python_devel.m4 to serial 37 #17480
- Missing tests in make pkg #17491
- spa: ZIO_TASKQ_ISSUE: Use symbolic priority #17489
- Fix TestGroup warning due to missing tags #17473
- ZTS: Use FreeBSD cloudinit images #17462
- objtool wrapper: use absolute path to call the wrapper #17541
- Linux build: handle CONFIG_OBJTOOL_WERROR=y #17456
- Make TX abort after assign safer #17438
- Introduce zfs rewrite subcommand (#17246)
- Linux 6.16: remove writepage and readahead_page #17443
- Skip dbuf_evict_one() from dbuf_evict_notify() for reclaim thread #17561
- enforce arc_dnode_limit #17487 #17542
- Increase meta-dnode redundancy in "some" mode #17339
- Ensure that gang_copies is always at least as large as copies #17484
- zts: add spdx license tags to gang_blocks tests (#17160)
- Make ganging redundancy respect redundant_metadata property (#17073)
- SPDX: Add missing CDDL-1.0 license
- range_tree: Provide more debug details upon unexpected add/remove #17581
- Faster checksum benchmark on system boot #17563 #17560
- Don't use wrong weight when passivating group #17566
- Default to zfs_bclone_wait_dirty=1 #17455
- zdb: fix checksum calculation for decompressed blocks #17547
- ZED: Fix device type detection and pool iteration logic #17545
- Define sops->free_inode() to prevent use-after-free during lookup #17546
- ZIL: Force writing of open LWB on suspend #17521
- Correct weight recalculation of space-based metaslabs #17531
- Validate mountpoint on path-based unmount using statx #17481
- Fix other nonrot bugs #17469
- Polish db_rwlock scope #17441
- scrub: generate scrub_finish event #17432
- Some arc_release() cleanup #17126
- FDT dedup log sync -- remove incremental #17038
- ZIL: Relax parallel write ZIOs processing #17458
zfs-2.4.0-rc1
We are excited to announce the first release candidate (RC1) of OpenZFS 2.4.0!
Supported Platforms
- Linux: compatible with 4.18 - 6.16 kernels
- FreeBSD: compatible with releases starting from 13.3+, 14.0+
Key Features in OpenZFS 2.4.0:
- Quotas: Allow setting default user/group/project quotas (#17130)
- Uncached IO: Direct IO fallback to a light-weight uncached IO when unaligned (#17218)
- Unified allocation throttling: A new algorithm designed to reduce vdev fragmentation (#17020)
- Better encryption performance using AVX2 for AES-GCM (#17058)
- Allow ZIL on special vdevs when available (#17505)
- Extend
special_small_blocks
to land ZVOL writes on special vdevs (#14876), and allow non-power of two values (#17497) - Add
zfs rewrite -P
which preserves logical birth time when possible to minimize incremental stream size (#17565) - Add
-a|--all
option which scrubs, trims, or initializes all imported pools (#17524) - Add
zpool scrub -S -E
to scrub specific time ranges (#16853) - Release topology restrictions on special/dedup vdevs (#17496)
- Multiple gang blocks improvements and fixes (#17111, #17004, #17587, #17484, #17123, #17073)
- New dedup optimizations and fixes (#17038 , #17123 , #17435, #17391)
How to Participate:
We encourage users and developers to test this release candidate and provide feedback. Your input is invaluable in ensuring the final release meets our community's needs. Please report any issues you encounter in our GitHub repository.
zfs-2.4.0-rc1 changelog: git cherry -v zfs-2.3-release master | sed '/^-/d; s/+ //g'
zfs-2.3.3
Supported Platforms
- Linux: compatible with 4.18 - 6.15 kernels
- FreeBSD: compatible with releases starting from 13.3+, 14.0+
Changes
- Tag zfs-2.3.3
- Linux 6.15 compat: META #17393
- Fix mixed-use-of-spaces-and-tabs rpmlint warning #17461
- ioctl: remove FICLONE/FICLONERANGE/FIDEDUPERANGE compat #17308
- Relax zfs_vnops_read_chunk_size limitations #17415
- dmu_traverse: remove 'ignore_hole_birth' tunable alias #17376
- ARC: parallel eviction #16486
- During pool export flush the ARC asynchronously #16215
- CI: Automate some GitHub PR status labels manipulations #16721
- FreeBSD: zfs_putpages: don't undirty pages until after write completes #17445
- zfs_log_write: only put the callback on the last itx #17445
- zpl_sync_fs: work around kernels that ignore sync_fs errors #17420
- zfs_sync: return error when pool suspends #17420
- zfs_sync: remove support for impossible scenarios #17420
- zts: test syncfs() behaviour when pool suspends #17420
- Improve block cloning transactions accounting #17431
- Reduce zfs_dmu_offset_next_sync penalty #17434
- Make TX abort after assign safer #17438
- Allow zero compression if dedup is enabled #17435
- ZTS: Enable io_uring on CentOS Stream 9 and 10 also #17447
- Linux build: silence objtool warnings #17410
- CI: Retire Fedora 40 builder #17408
- ZTS: Enable io_uring support on el9/el10 #17397
- ZTS: Add AlmaLinux 10 #17397
- abd_os: move headers from libzpool to libspl #16940 #17390 #17394
- Set spa_final_txg in spa_unload() #17395
- zpool: clarify ZPOOL_STATUS_REMOVED_DEV status message #17400
- vdev: skip faulting disks pending removal #17400
- CI: Retire Ubuntu 20.04 builder #17403
- linux/zvol_os: don't try to set disk ops if alloc fails #17396
- Linux build: always use objtool
- Reviewed-by: Tony Hutter [email protected] #17401 #17364
- tunables: fix spelling #17377
- tunables: remove __check_old_set_param workaround #17377
- tunables: remove unused param get/set aliases #17377
- tunables: use Linux ullong param ops for u64 #17377
- tunables: remove support for s64 tunables #17377
- tunables: remove direct use of module_param_cb #17377
- tunables: remove FreeBSD compat macros for Linux module params #17377
- tunables: ensure tunable and variable have same define gate #17377
- tunables: don't assert initialisation in impl getters #17377
- zfs_log: make zfs_immediate_write_sz uint #17377
- Only interrupt active disk I/Os in failmode=continue #17372
- zcp: get_prop: fix encryptionroot and encryption #17280
- ZVOL: Comment platform-specific empty functions bodies on FreeBSD side #17383
- Expose dataset encryption status via fast stat path #17368
- ZIL: Improve write log size accounting #17373
- ZTS: testing for leaked key mappings in encrypted non-raw send #17366
- Refactor man page and CLI help output per mandoc #17357
- Reformat cli help and man page to be in sync #16004 #17357
- Fix off-by-one bug in range tree code #17363
- Fix null dereference in spa_vdev_remove_cancel_sync() #17361
- Update 69-vdev.rules.in #17345
- lzc_ioctl_fd: add ZFS_IOC_TRACE envvar to enable ioctl tracing #17344
- lzc: move lzc_ioctl_fd() into lzc proper #17344
- libzfs: ensure all ioctl calls go through lzc_ioctl_fd() #17344
- Add Quality Assurance to pull request template #17354
- dmu_objset_hold_flags() should call dsl_dataset_rele_flags() on error #17353
- arcstat: prevent ZeroDivisionError when L2ARC becomes empty #17348
- Linux 6.2/6.15: del_timer_sync() renamed to timer_delete_sync() #17229
- Linux 6.15: mkdir now returns struct dentry * #17229
- icp: Use explicit_memset() exclusively in gcm_clear_ctx() #17343
- Fix 2 bugs in non-raw send with encryption #12014 #17340
- Cause zpool scan resume commands to get logged in history #17301
- ARC: Notify dbuf cache about target size reduction #17314
- Linux: Stop using NR_FILE_PAGES for ARC scaling #17334
- runners: Add option to install custom kernel on Fedora #17156
- vdev_id: symlinks creation for multipath disk partitions (#17331)
- AUTHORS/mailmap: update with new contributors
- update_authors: output possible mailmap additions
- For the moment, this needs to be done by a human, because update_authors
- update_authors: consider Signed-off-by trailers for committer idents
- test-runner: rework output dir construction #17167
- spa: clear checkpoint information during retry #17319
- linux/uio: remove "skip" offset for UIO_ITER #17298
- More aggressively assert that db_mtx protects db.db_data #17209
- FreeBSD: Use new SYSCTL_SIZEOF() #17309
- ARC: Avoid overflows in arc_evict_adj() (#17255)
- txg: generalise txg_wait_synced_sig() to txg_wait_synced_flags() (#17284)
- ZTS: Restore some delays in online_offline tests
- Fix race between resilver wait and offline/detach
- tests: fix
S_IFMT
undeclared atstatx.c
#17293 #17294 - ZTS: Stop zpool_status tests from spamming stdout (#17292)
- Fix double spares for failed vdev
- ZTS: Fix replacement/resilver_restart_001 on FreeBSD #16822 #17279
- Sort the blocking snapshots list #12751 (#17264)
- Double quote variables to prevent globbing and word splitting #17235
- cred: properly pass and test creds on other threads (#17273)
- ZTS: Optimize KSM on Linux and remove it for FreeBSD #17247
- zfs-rollback.8: fix typo in example number #17282
- ZTS: Use Ubuntu default url for cloud-image #17278
- ZTS: Make zvol_stress write some more #17270
- ZTS: Reduce extra caching in pool_checkpoint (#17268)
- Support using llvm-libunwind #17230
- Export correct symbols for Lustre Direct I/O #17256
- Add more descriptive destroy error message
- ZTS: Fix 256MB file leak in zed_cksum_reported
- ZTS: Update FreeBSD version numbers
- ZTS: Remove fixed sleeps from slog_006_pos
- ZTS: Polish online_offline tests
- ZTS: Remove ashift setting from dedup_quota test (#17250)
- Cleanup VERIFY() macros (#17163)
- vdev_to_nvlist_iter: ignore draid parameters when matching names (#17228)
- Improve L2 caching control for prefetched indirects #17204
- ZTS: Remove TXG_TIMEOUT from dedup_quota test (#17150)
- Prefer embedded blocks to dedup #17113
- ZAP: Reduce leaf array and free chunks fragmentation #16766
zfs-2.2.8
Supported Platforms
- Linux: compatible with 4.18 - 6.15 kernels
- FreeBSD: compatible with releases starting from 13.3+, 14.0+
Changes
- Tag zfs-2.2.8
- ZTS: Enable io_uring on CentOS Stream 9 and 10 also #17447
- Linux build: silence objtool warnings #17410
- linux/zvol_os: don't try to set disk ops if alloc fails #17396
- ZTS: testing for leaked key mappings in encrypted non-raw send #17366
- cred: properly pass and test creds on other threads (#17273)
- Block remap for cloned blocks on device removal #15604 #17180
- CI: Retire Fedora 40 builder #17408
- ZTS: Enable io_uring support on el9/el10 #17397
- ZTS: Add AlmaLinux 10 #17397
- CI: Retire Ubuntu 20.04 builder #17403
- Linux build: always use objtool
- Reviewed-by: Tony Hutter [email protected] #17401 #17364
- Linux 6.15 compat: META #17393
- [zfs-2.2.8] Revert "vdev_disk: default to classic submission for 2.2.x"
- ZTS: Stop zpool_status tests from spamming stdout (#17292)
- [zfs-2.2.8] GCC: Fix array subscript check
- Linux 6.14 compat: META (#17098) (#17172)
- Linux 6.13 compat: META (#17098)
- GCC 15: Fix unterminated-string-initialization (#17244)
- debian: Add libtirpc-dev dependency (#17220)
- contrib/initramfs: use LVM autoactivation for activating VGs (#17125)
- Use <fcntl.h> instead of <sys/fcntl.h> #15925
- Fix zoneid when USER_NS is disabled #15560
- ZTS: Remove non-standard awk hex numbers usage #11141
- RPM: Hold back incompatible kernel packages on Fedora #17265 #17271
- Support for cross-compiling kernel modules #16924
- fix: block incompatible kernel from being installed #16139
- Add Quality Assurance to pull request template #17354
- runners: Add option to install custom kernel on Fedora #17156
- ZTS: Optimize KSM on Linux and remove it for FreeBSD #17247
- ZTS: Use Ubuntu default url for cloud-image #17278
- ZTS: Update FreeBSD version numbers
- CI: Add Fedora 42 runner (#17249)
- runners: Fix tarball build for zfs-qemu-packages workflow (#17158)
- runners: Fix zfs-release RPM creation (#17173)
- CI: Remove FreeBSD 13.3 and 14.1 tests (#17162)
- Add 'zfs-qemu-packages' workflow for RPM building #17005
- ZTS: add centos stream10 (#16904)
- CI: Fix FreeBSD 13.4 STABLE build #16885
- CI: Add FreeBSD 14.2 RELEASE+STABLE builds #16869
- CI: Automate some GitHub PR status labels manipulations #16721
- ARC: Avoid overflows in arc_evict_adj() (#17255)
- dmu_objset_hold_flags() should call dsl_dataset_rele_flags() on error #17353
- Linux 6.2/6.15: del_timer_sync() renamed to timer_delete_sync() #17229
- Linux 6.15: mkdir now returns struct dentry * #17229
- icp: Use explicit_memset() exclusively in gcm_clear_ctx() #17343
- Fix 2 bugs in non-raw send with encryption #12014 #17340
- Linux: Stop using NR_FILE_PAGES for ARC scaling #17334
- Linux 6.0 compat: Check for migratepage VFS #17217
- Use simple folio migration function #16568 #16723
- Linux: Fix zfs_prune panics v2
- linux: zvols: correctly detect flush requests #17131
- Linux 6.14: BLK_MQ_F_SHOULD_MERGE was removed
- Linux 6.14: dops->d_revalidate now takes four args
- linux/uio: remove "skip" offset for UIO_ITER #17298
- Fix compile-time warnings caused by duplicate struct typedefs (#16880)
- config: fix dequeue_signal check for kernels <4.20
zfs-2.3.2
Supported Platforms
- Linux: compatible with 4.18 - 6.14 kernels
- FreeBSD: compatible with releases starting from 13.3+, 14.0+
Changes
- RPM: Hold back incompatible kernel packages on Fedora #17265 #17271
- CI: Add Fedora 42 runner (#17249)
- GCC 15: Fix unterminated-string-initialization (#17244)
- gcm_avx_init: zero the ghash state after hashing the IV
- Fixed zfs_notify_email for programs like sendmail
- config: fix ZFS_LINUX_TEST_RESULT_SYMBOL with --enable-linux-builtin #17236
- Linux 6.0 compat: Check for migratepage VFS (#17217)
- debian: Add libtirpc-dev dependency (#17220)
- Fix memory leaks in pool properties handling #17208
- Added fix for zpool get state segfaults with two or more vdevs (#15972). (#17213)
- Fix FDT rollback to not overwrite unnecessary fields (#17205)
- [2.3.2] uconv: add SPDX license tag
- freebsd: unbreak module/Makefile.bsd build on 15-CURRENT-arm64 #17219
- Fix nonrot property being incorrectly unset (#17206)
- Multiple printf() size fixes (#17199)
- Fix lock reversal on device removal cancel #17164
- Fix dspace underflow bug #17183
- simd_powerpc.h: enable FPU on FreeBSD #17191
- spl_vfs: fix vrele task runner signature mismatch #17101
- ZTS: Fix zpool
dry run
tests output formating - ZTS: Fix zpool
dry run
tests depending on output format - contrib/initramfs: use LVM autoactivation for activating VGs (#17125)
- zed: Ensure spare activation after kernel-initiated device removal #17187
- config: cache results of kernel checks (#17106)
- Block remap for cloned blocks on device removal #15604 #17180
- runners: Fix tarball build for zfs-qemu-packages workflow (#17158)
- runners: Fix zfs-release RPM creation (#17173)
- Linux: Fix zfs_prune panics v2 (#17121)
- ZTS: Fix zpool_status_features_001_pos local test (#17174)
- Disambiguate reference to kibibytes, not kilobytes
- Fix spelling errors
- Correct "umount" to "unmount" in a couple of places
- Capitalize in various places where appropriate
- Fix cases where "descendent" is used as a noun
- Make use of "i.e." (id est) consistent
- Harmonize on American spelling in several places
- CI: Remove FreeBSD 13.3 and 14.1 tests (#17162)
- Updating dio_read_verify ZTS test (#16830)
- Fix deadlock on I/O errors during device removal #17145
- Always perform bounds-checking in metaslab_free_concrete #17136
- convert_wycheproof: don't check tag len on invalid tests
- convert_wycheproof: fix compile failure
- dmu_tx: rename dmu_tx_assign() flags from TXG_* to DMU_TX_* (#17143)
- spdxcheck: program to check SPDX license tags
- SPDX: license tags: LicenseRef-OpenZFS-ThirdParty-PublicDomain
- SPDX: license tags: OpenSSL-standalone
- SPDX: license tags: Brian-Gladman-3-Clause
- SPDX: license tags: BSD-2-Clause OR GPL-2.0-only
- SPDX: license tags: BSD-3-Clause OR GPL-2.0-only
- SPDX: license tags: LGPL-2.1-or-later
- SPDX: license tags: GPL-2.0-or-later
- SPDX: license tags: Apache-2.0
- SPDX: license tags: MIT
- SPDX: license tags: BSD-3-Clause
- SPDX: license tags: BSD-2-Clause
- SPDX: license tags: CDDL-1.0
- ZTS: ICP encryption tests
- ZTS: test clearing pool and vdev userprops #16887
- spa_sync_props: remove pool userprops by setting empty-string #16887
- Add receive:append permission for limited receive #17015
- Update FreeBSD CI images #17139
- Fix deduplication of overridden blocks #17120
- Linux/vnops: implement STATX_DIOALIGN #16972
- Verify every block pointer is either embedded, hole, or has a valid DVA #17078
- AUTHORS: refresh with recent new contributors
- linux: zvols: correctly detect flush requests (#17131)
- zed: Print return code on failed zpool_prepare_disk #17124
- Check portable objset MAC even if local is zeroed #17122
- Add more DDT tests #17049
- ZTS: replace uses of TMPDIR with mktemp
- ZTS: make uses of mktemp consistent
- ZTS: zfs-tests: set TMPDIR to FILEDIR
- ZTS: test-runner: always apply timestamp to outputdir before updating
- ZTS: runfiles: remove explicit outputdir
- ZTS: zfs-tests: use configured FILEDIR for all temp paths
- ZTS: replace all uses of /var/tmp with TEST_BASE_DIR
- Linux 6.14 compat: META (#17098) (#17172)
- Revert "zinject: count matches and injections for each handler" (#17137)
zfs-2.3.1
Supported Platforms
- Linux: compatible with 4.18 - 6.13 kernels
- FreeBSD: compatible with releases starting from 12.2-RELEASE
Update 3/10/25 4:06PM PST - The original tarball contents were not in a zfs-2.3.1/ dir and were lacking a ./configure script. They've been fixed in the current tarball.
Changes
- Add 'zfs-qemu-packages' workflow for RPM building #17005
- Linux 6.13 compat: META (#17098)
- zpool: allow relative vdev paths #17042
- arc: avoid possible deadlock in arc_read #17071
- Don't try to get mg of hole vdev in removal #17080
- spa: fix signature mismatch for spa_boot_init as eventhandler required #17088
- Better fill empty metaslabs #17081
- suspend_resume_single: clear pool errors on fail #17054
- include: move zio_priority_t into zfs.h
- vdev_file: make FLUSH and TRIM asynchronous #17064
- Fix wrong free function in arc_hdr_decrypt #17079
- vdev_file: unify FreeBSD and Linux implementations (#17046)
- Fix metaslab group fragmentation math (#17037)
- range_tree: convert remaining range_* defs to zfs_range_*
- Linux 6.12 compat: Rename range_tree_* to zfs_range_tree_*
- Free memory in an error path in spl-kmem-cache.c #17041
- Update the dataset name in handle after zfs_rename (#17040)
- zio: do no-op injections just before handing off to vdevs #17029
- Fix "make install" with DESTDIR set (#16995) #16994
- optimize recv_fix_encryption_hierarchy() #16929
- Add kstats tracking gang allocations #17003
- Expand fragmentation table to reflect larger possibile allocation sizes #16986
- Fix typos in zpool_do_scrub() error messages (#17028)
- Clarify documentation of
zfs destroy
on snapshots (#17021) - Linux 6.14: BLK_MQ_F_SHOULD_MERGE was removed
- Linux 6.14: dops->d_revalidate now takes four args
- zio: lock parent zios when updating wait counts on reexecute #17016
- Avoid ARC buffer transfrom operations in prefetch #17013
- Add recursive dataset mounting and unmounting support to pam_zfs_key (#16857)
- Update pin_user_pages() calls for Direct I/O #16956 #17006
- Make the vfs.zfs.vdev.raidz_impl sysctl cross-platform #16980
- FreeBSD: Add setting of the VFCF_FILEREV flag
- zinject: add "probe" device injection type #16947
- zinject: make iotype extendable #16947
- ZTS: remove get_arcstat
- ZTS: update existing kstat users to new helper
- ZTS: reimplement kstat helper function
- Fix several typos in the man pages #16965
- zfs-destroy.8: Fix minor formatting typo #16962
- Update RELEASES.md LTS release to 2.2 #16945 #16948
- style: remove unnecessary spaces in sa.h #16955
- Makefile.in: pass ARCH for modules_install as well #16944
- zinject: count matches and injections for each handler #16938
- FreeBSD: Use ashift in vdev_check_boot_reserve() #16942
- ZTS: remove empty zpool_add--allow-ashift-mismatch test #16931
zfs-2.3.0
We are excited to announce the release of OpenZFS 2.3.0.
Key Features in OpenZFS 2.3.0:
- RAIDZ Expansion (#15022): Add new devices to an existing RAIDZ pool, increasing storage capacity without downtime.
- Fast Dedup (#15896): A major performance upgrade to the original OpenZFS deduplication functionality.
- Direct IO (#10018): Allows bypassing the ARC for reads/writes, improving performance in scenarios like NVMe devices where caching may hinder efficiency.
- JSON (#16217): Optional JSON output for the most used commands.
- Long names (#15921): Support for file and directory names up to 1023 characters.
- Bug Fixes: A series of critical bug fixes addressing issues reported in previous versions.
- Numerous performance improvements throughout the code base.
- Supported Platforms:
- Linux kernels 4.18 - 6.12,
- FreeBSD releases 13.3, 14.0 - 14.2.
Additional Information:
-
Documentation - OpenZFS documentation for Linux and FreeBSD.
-
Change log - Complete v2.2.0 - v2.3.0 change log
Thank you to all 134 contributors who participated in this release cycle
[behlendorf1@pip zfs]$ git shortlog -s zfs-2.2.0..zfs-2.3.0 4 Ahelenia Ziemiańska 2 Akash B 12 Alan Somers 1 Alek Pinchuk 144 Alexander Motin 6 Allan Jude 1 Alphan Yılmaz 26 Ameer Hamza 2 Andrea Righi 2 Andrew Innes 2 Andrew Turner 1 Andrew Walker 1 Andy Fiddaman 2 Benda Xu 1 Benjamin Sherman 1 Bojan Novković 8 Brian Atkinson 61 Brian Behlendorf 4 Brooks Davis 2 Cameron Harr 1 ChenHao Lu 1 Chris Davidson 1 Chris Peredun 9 Chunwei Chen 14 Coleman Kane 1 Colin Percival 3 Dag-Erling Smørgrav 2 Daniel Berlin 1 Daniel Perry 1 Dennis R. Friedrichsen 1 Derek Schrock 1 Dex Wood 3 Dimitry Andric 13 Don Brady 4 Edmund Nadolski 2 Fabian-Gruenbichler 4 George Amanakis 5 George Melikov 3 George Wilson 6 Gionatan Danti 1 Gleb Smirnoff 1 Gordon Tetlow 1 Ilkka Sovanto 1 Ivan Volosyuk 1 JKDingwall 1 James Reilly 1 Jaron Kent-Dobias 2 Jason King 2 Jason Lee 1 Jessica Clarke 4 Jitendra Patidar 1 John Wren Kennedy 1 Jose Luis Duran 1 José Luis Salvador Rufo 1 Justin Gottula 4 Kay Pedersen 1 Kent Ross 1 Kevin Greene 1 Kevin Jin 1 Lalufu 1 Laura Hild 1 Mariusz Zaborski 17 Mark Johnston 3 Mart Frauenlob 9 Martin Matuška 1 Martin Wagner 4 Mateusz Guzik 7 Mateusz Piotrowski 1 Matthew Ahrens 1 Matthew Heller 1 Mauricio Faria de Oliveira 1 Maxim Filimonov 2 MigeljanImeri 1 Olivier Certner 14 Paul Dagnelie 6 Pavel Snajdr 6 Pawel Jakub Dawidek 1 Peter Doherty 1 Piotr P. Stefaniak 1 Poscat 1 Qiuhao Chen 1 Quartz 1 Rafael Kitover 12 Rich Ercolani 3 Richard Kojedzinszky 1 Richard Yao 3 Rick Macklem 370 Rob Norris 6 Robert Evans 1 Ryan 1 Ryan Lahfa 1 Sam Atkinson 2 Sam James 2 Sanjeev Bagewadi 1 Sebastian Wuerl 4 Serapheim Dimitropoulos 1 Seth Hoffert 2 Seth Troisi 1 Shawn Bayern 14 Shengqi Chen 1 Sietse 1 Stefan Lendl 1 Steve Mokris 5 Stoiko Ivanov 2 Theera K. 1 Thomas Bertschinger 30 Tino Reichardt 1 Todd Seidelmann 1 Tomohiro Kusumi 31 Tony Hutter 5 Toomas Soome 35 Umer Saleem 2 Vaibhav Bhanawat 1 Val Packett 1 Volker Mauel 2 WHR 1 Warner Losh 1 Wojciech Małota-Wójcik 1 XDTG 2 Youzhong Yang 3 Yuri Pankov 2 Yuxin Wang 1 Zach Dykstra 1 Zhao Yongming 1 Zhenlei Huang 1 glibg10b 1 gofaster 1 kotauskas 1 n0-1 1 ofthesun9 2 omni 2 rilysh 1 tleydxdy 3 tstabrawa
-
Module option changes - See the module parameters documentation for the complete list of the options and what they control.
New module options
- dmu_ddt_copies
- raidz_expand_max_copy_bytes
- raidz_expand_max_reflow_bytes
- raidz_io_aggregate_rows
- spa_cpus_per_allocator
- spa_num_allocators
- zap_shrink_enabled
- zfetch_max_idistance
- zfs_active_allocator
- zfs_arc_shrinker_seeks
- zfs_dedup_log_flush_entries_min
- .zfs_dedup_log_flush_flow_rate_txgs
- zfs_dedup_log_flush_min_time_ms
- zfs_dedup_log_flush_passes_max
- zfs_dedup_log_mem_max
- zfs_dedup_log_mem_max_percent
- zfs_dedup_log_txg_max
- zfs_dio_enabled
- zfs_dio_write_verify_events_per_second
- zfs_resilver_defer_percent
- zfs_scrub_after_expand
- zfs_snapshot_no_setuid
- zfs_vdev_direct_write_verify
- zio_taskq_write_tpq
Removed module options
Modified module options
zfs-2.3.0-rc5
We are excited to announce the fifth release candidate (RC5) of OpenZFS 2.3.0.
Key Features in OpenZFS 2.3.0 RC5:
- RAIDZ Expansion (#15022): Add new devices to an existing RAIDZ pool, increasing storage capacity without downtime.
- Fast Dedup (#15896): A major performance upgrade to the original OpenZFS deduplication functionality.
- Direct IO (#10018): Allows bypassing the ARC for reads/writes, improving performance in scenarios like NVMe devices where caching may hinder efficiency.
- JSON (#16217): Optional JSON output for the most used commands.
- Long names (#15921): Support for file and directory names up to 1023 characters.
- Bug Fixes: A series of critical bug fixes addressing issues reported in previous versions.
- Supported Platforms:
- Linux kernels 4.18 - 6.12,
- FreeBSD releases 13.3, 14.0 - 14.2.
Changes (zfs-2.3.0-rc4...zfs-2.3.0-rc5)
- Support for cross-compiling kernel modules #16924
- Remove duplicate dedup_legacy_create in common.run #16926
- fix: make zfs_strerror really thread-safe and portable #15793 #16640 #16923
- Too many vdev probe errors should suspend pool #16864
- Add Makefile dependencies for scripts/zfs-tests.sh -c #16030 #16922
- ZTS: checkpoint_discard_busy should use save_tunable/restore_tunable #16919
- vdev_open: clear async remove flag after reopen #16921
- ZTS: remove unused TESTDIRS from pam/cleanup.ksh #16920
- zfs_vnops_os.c: fallocate is valid but not supported on FreeBSD #16918
- ZTS: checkpoint_discard_busy does not set 16M on cleanup #16917
- ZTS: functional/mount scripts are not removing /var/tmp/testdir.X dirs #16915
- ZTS: zfs_mount_all_fail leaves /var/tmp/testrootPIDNUM directory around #16914
- ZTS: add centos stream10 #16904
- Add missing zfs_exit() when snapdir is disabled #16912
- set zfs_arc_shrinker_limit to 0 by default #16909
- zvol: implement platform-independent part of block cloning #16901
- ZTS: Reduce file size in redacted_panic to 1GB #11141
- ZTS: Remove procfs use from zpool_import_status #11141
- ZTS: Remove non-standard awk hex numbers usage #11141
- zpool_get_vdev_prop_value: show missing vdev userprops #16887
- ZTS: Increase write sizes for RAIDZ/dRAID tests #16905
- microzap: set hard upper limit of 1M #16888
- Fix readonly check for vdev user properties #16890
- Skip iterating over snapshots for share properties #16877
- zfs_main: fix alignment on props usage output #16883
- CI: Fix FreeBSD 13.4 STABLE build #16885
- zprop: fix value help for ZPOOL_PROP_CAPACITY #16881
- CI: Add FreeBSD 14.2 RELEASE+STABLE builds #16869
- Use pin_user_pages API for Direct I/O requests #16856
- Removing old code outside of 4.18 kernels #16856
- simd_stat: fix undefined CONFIG_KERNEL_MODE_NEON error on armel #16871
- Fix stray "no" in configure output #16867
- Fix use-afer-free regression in RAIDZ expansion #16868
- Remount datasets on soft-reboot #16845
- flush: only detect lack of flush support in one place #16855
- flush: don't report flush error when disabling flush support #16855
- build: use correct bashcompletiondir on arch #16861
- backtrace: fix off-by-one on string output #16862
How to Participate:
We encourage users and developers to test this release candidate and provide feedback. Your input is invaluable in ensuring the final release meets our community's needs. Please report any issues you encounter in our GitHub repository.
zfs-2.3.0-rc4
We are excited to announce the fourth release candidate (RC4) of OpenZFS 2.3.0.
Key Features in OpenZFS 2.3.0 RC4:
- RAIDZ Expansion (#15022): Add new devices to an existing RAIDZ pool, increasing storage capacity without downtime.
- Fast Dedup (#15896): A major performance upgrade to the original OpenZFS deduplication functionality.
- Direct IO (#10018): Allows bypassing the ARC for reads/writes, improving performance in scenarios like NVMe devices where caching may hinder efficiency.
- JSON (#16217): Optional JSON output for the most used commands.
- Long names (#15921): Support for file and directory names up to 1023 characters.
- Bug Fixes: A series of critical bug fixes addressing issues reported in previous versions.
- Supported Platforms:
- Linux kernels 4.18 - 6.12,
- FreeBSD releases 13.3, 14.0, and 14.1.
Changes (zfs-2.3.0-rc3...zfs-2.3.0-rc4)
- Fix DR_OVERRIDDEN use-after-free race in dbuf_sync_leaf #16854
- BRT: Check bv_mos_entries in brt_entry_lookup() #16851
- Remove unnecessary CSTYLED escapes on top-level macro invocations #16840
- cstyle: ignore old non-POSIX types in macro invocations #16840
- cstyle: understand macro params can be empty #16840
- cstyle: understand basic top-level macro invocations #16840
- Optimize RAIDZ expansion #15680 #16825
- Fix false assertion in dmu_tx_dirty_buf() on cloning #16825
- zdb_il: use flex array member to access ZIL records #16832
- Improve speculative prefetcher for block cloning #16814
- Allow dsl_deadlist_open() return errors #16836
- FreeBSD: Remove an incorrect assertion in zfs_getpages() #16810 #16834
- Add ability to scrub from last scrubbed txg #16301
- Fix race in libzfs_run_process_impl #16801
- FreeBSD: Remove some illumos compat from vnode.h #16808
- FreeBSD: Return ifndef IN_BASE back to fix the build #16808
- zinject(8): rename "ioctl" to "flush" #16827
- Fix regression in dmu_buf_will_fill() #16829
- Add missing parenthesis in VERIFYF() #16826
- Linux: fix zfs_uio_dio_check_for_zero_page #16812 #16689 #16642
- Linux: Fix detection of register_sysctl_sz #16620 #16805
- zdb: show dedup table and log attributes #16755
- Assert if we're logging after final txg was set #16795
- FreeBSD: Reduce copy_file_range() source lock to shared #16789 #16797
- FreeBSD: Lock vnode in zfs_ioctl() #16789 #16796
- Linux: Fix zfs_prune panics #16770
- Linux 6.12 compat: META #16793
- BRT: Clear bv_entcount_dirty on destroy #16791
- BRT: More optimizations after per-vdev splitting #16773
- BRT: Rework structures and locks to be per-vdev #16740
- ZAP: Add by_dnode variants to lookup/prefetch_uint64 #16740
- BRT: Don't call brt_pending_remove() on holes/embedded #16740
- ZTS: Avoid embedded blocks in bclone/bclone_prop_sync #16740
- fix: block incompatible kernel from being installed #16139
- zio: Avoid sleeping in the I/O path #16785
- ZTS: Fix zpool_status_008_pos false positive #16769
- L2ARC: Stop rebuild before setting spa_final_txg #16714 #16782
- Remove hash_elements_max accounting from DBUF and ARC #16759
- Move "no name changes" from compression to checksum table #16776
- Expand zpool-remove.8 manpage with example results #16777
- Fix few __VA_ARGS typos in assertions #16780
- zed: prevent automatic replacement of offline vdevs #16751
- AUTHORS: refresh with recent new contributors #16762
- tests: fix uClibc for getversion.c #16735 #16741
- zvol_os.c: Increase optimal IO size #16750
- Fix some nits in zfs_getpages() #16758
- dsl_dataset: put IO-inducing frees on the pool deadlist #6783 #16708 #16722 #16697
- L2ARC: Move different stats updates earlier #16040 #16743
- Grab the rangelock unconditionally in zfs_getpages() #16643
- Fix a potential page leak in mappedread_sf() #16643
- Fix user properties output for zpool list #16734
- JSON: fix user properties output for zpool list #16734
How to Participate:
We encourage users and developers to test this release candidate and provide feedback. Your input is invaluable in ensuring the final release meets our community's needs. Please report any issues you encounter in our GitHub repository.