Releases: openzfs/zfs
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.
zfs-2.2.7
Supported Platforms
- Linux: compatible with 4.18 - 6.12 kernels
- FreeBSD: compatible with releases starting from 13.0-RELEASE
Changes
- add get_name implementation for exports. (#16833)
- Fix race in libzfs_run_process_impl #16801
- Linux: Fix detection of register_sysctl_sz
- Linux: Fix zfs_prune panics #16770
- Linux 6.12 compat: META #16793
- BRT: Don't call brt_pending_remove() on holes/embedded #16740
- ZTS: Avoid embedded blocks in bclone/bclone_prop_sync #16740
- Pack dmu_buf_impl_t by 16 bytes #16684
- FreeBSD: Add missing memory reclamation accounting
- FreeBSD: restore zfs_znode_update_vfs() #16554
- FreeBSD: Add const qualifier to members of struct opensolaris_utsname #16210
- freebsd: remove __FBSDID macro use #15527
- freebsd: Use compiler.h from FreeBSD's base's linuxkpi #16650
- Add custom debug printing for your asserts #15792
- Linux 6.12: PG_error flag was removed #16582
- Linux 6.12: f_version removed from struct file #16582
- Linux 6.12: FMODE_UNSIGNED_OFFSET is now FOP_UNSIGNED_OFFSET #16582
- Linux 6.12: support 3arg dequeue_signal() without task param #16582
- Linux 6.12: avoid kmem_cache_create redefinition #16582
- [zfs-2.2.7] Add vdev_check_boot_reserve() to vdev.h
- zfs_debug: specific variant for userspace #16492
- zdb/ztest: send dbgmsg output to stderr #16181
- zfs_dbgmsg_print: make FreeBSD and Linux consistent #16181
- zfs_znode: lift common code to a single shared file #16492
- FreeBSD: remove support for FreeBSD < 13.0-RELEASE (#16372)
- zfs_racct: copy Linux implementation for userspace #16492
- libzpool: don't include trace.c #16492
- vdev_label_os: copy Linux implementation for userspace #16492
- arc_os: split userspace and Linux kernel code #16492
- value strings: pretty printers for flags and enums
- abd_os: break out platform-specific header parts #16253
- abd_os: split userspace and Linux kernel code
- Sponsored-by: Wasabi Technology, Inc. #16253
- linux/abd_os: remove kernel version check for compound page support #16545
- zfs_file: rename zfs_file_fallocate to zfs_file_deallocate #16496
- Add SIMD metadata in /proc on Linux follow up #16552
- Increase L2ARC write rate and headroom #15457
- config: fix page_mapping test #16479
- config: fix various bits of missing output #16479
- config: remove test for unused s_d_op #16479
- config: remove HAVE_MODE_LOOKUP_BDEV #16479
- config: remove HAVE_HAS_CAPABILITY #16479
- config: remove HAVE_BIO_SET_DEV #16479
- config: rework ZFS_GENHD_FL_* #16479
- config: remove HAVE_GENERIC_IO_ACCT_3ARG #16479
- config: remove HAVE_VFSMOUNT_IOPS_GETATTR #16479
- config: remove HAVE_GENERIC_READLINK #16479
- linux/zvol_os: convert END_IO macro to inline function #16479
- config: remove HAVE_BLK_MQ #16479
- config: remove HAVE_BLK_QUEUE_FLAG_* #16479
- config: remove ZFS_GLOBAL_ZONE_PAGE_STATE and ZFS_ENUM_* generation #16479
- config: remove ZFS_GLOBAL_ZONE_PAGE_STATE #16479
- config: remove HAVE_WAIT_QUEUE_* #16479
- config: remove HAVE_TMPFILE #16479
- config: remove HAVE_SUPER_SETUP_BDI_NAME #16479
- config: remove HAVE_SIGNAL_STOP #16479
- config: remove HAVE_SET_SPECIAL_STATE #16479
- config: remove HAVE_SCHED_SIGNAL_HEADER #16479
- config: remove HAVE_PERCPU_COUNTER_ADD_BATCH #16479
- config: remove HAVE_KVMALLOC #16479
- config: remove HAVE_KTIME_GET_RAW_TS64 #16479
- config: remove HAVE_KTIME_GET_COARSE_REAL_TS64 #16479
- config: remove HAVE_KMEM_CACHE_CREATE_USERCOPY #16479
- config: remove HAVE_KERNEL_TIMER_SETUP #16479
- config: remove HAVE_KERNEL_TIMER_FUNCTION_TIMER_LIST #16479
- config: remove HAVE_KERNEL_(READ|WRITE)_PPOS #16479
- config: remove HAVE_INODE_TIMESPEC64_TIMES #16479
- config: remove HAVE_INODE_SET_IVERSION #16479
- config: remove HAVE_FILEMAP_RANGE_HAS_PAGE #16479
- config: remove HAVE_FILE_FADVISE #16479
- config: remove HAVE_BIO_BI_STATUS and bio error compat #16479
- config: remove HAVE_ACL_REFCOUNT #16479
- config: remove HAVE_[24]ARGS_VFS_GETATTR #16479
- config: remove HAVE_BLK_QUEUE_SECDISCARD #16479
- config: remove HAVE_RENAME2 #16479
- config: remove HAVE_GENERIC_SETXATTR #16479
- config: remove HAVE_FILE_AIO_FSYNC #16479
- config: remove ZFS_GLOBAL_NODE_PAGE_STATE #16479
- config: remove HAVE_XATTR_GET_DENTRY_INODE #16479
- config: remove HAVE_XATTR_LIST_SIMPLE #16479
- config: remove HAVE_XATTR_(GET|SET|LIST)_HANDLER #16479
- config: remove HAVE_XATTR_HANDLER_NAME #16479
- config: remove HAVE_VFS_ITERATE/HAVE_VFS_ITERATE_SHARED #16479
- config: remove HAVE_VFS_COPY_FILE_RANGE #16479
- config: remove HAVE_SUPER_USER_NS #16479
- config: remove HAVE_REQ_OP_* and HAVE_REQ_* #16479
- config: remove HAVE_(GET|PUT)_LINK_DELAYED #16479
- config: remove HAVE_POSIX_ACL_VALID_WITH_NS #16479
- config: remove HAVE_KERNEL_GET_ACL_HANDLE_CACHE #16479
- config: remove HAVE_INODE_LOCK_SHARED #16479
- config: remove HAVE_IN_COMPAT_SYSCALL #16479
- config: remove HAVE_GROUP_INFO_GID #16479
- config: remove HAVE_CURRENT_TIME #16479
- config: remove HAVE_CPU_HOTPLUG #16479
- config: remove HAVE_BLK_QUEUE_WRITE_CACHE/HAVE_BLK_QUEUE_FLUSH #16479
- config: remove HAVE_BIO_BI_OPF #16479
- config: remove HAVE_1ARG_SUBMIT_BIO #16479
- config: remove HAVE_GET_LINK_COOKIE #16479
- config: remove HAVE_RENAME2_OPERATIONS_WRAPPER #16479
- config: remove HAVE_VFS_FILE_OPERATIONS_EXTEND #16479
- config: remove HAVE_NEW_SYNC_READ #16479
- config: remove HAVE_XATTR_(GET|SET|LIST)_DENTRY #16479
- config: remove HAVE_WAIT_ON_BIT_ACTION #16479
- config: remove HAVE_VFS_DIRECT_IO_ITER_RW_OFFSET #16479
- config: remove HAVE_PUT_LINK_NAMEIDATA #16479
- config: remove HAVE_LSEEK_EXECUTE #16479
- config: remove HAVE_FOLLOW_LINK_NAMEIDATA #16479
- config: remove HAVE_D_REVALIDATE_NAMEIDATA #16479
- config: remove HAVE_3ARGS_VFS_GETATTR #16479
- config: remove HAVE_3ARGS_BDI_SETUP_AND_REGISTER #16479
- config: remove SHRINK_CONTROL_HAS_NID #16479
- config: remove HAVE_VFS_RW_ITERATE #16479
- config: remove HAVE_USER_NS_COMMON_INUM #16479
- config: remove HAVE_SPLIT_SHRINKER_CALLBACK and HAVE_SINGLE_SHRINKER_CALLBACK #16479
- config: remove HAVE_SET_CACHED_ACL_USABLE #16479
- config: remove HAVE_SET_ACL #16479
- config: remove HAVE_POSIX_ACL_RELEASE and HAVE_POSIX_ACL_RELEASE_GPL_ONLY #16479
- config: remove HAVE___POSIX_ACL_CHMOD #16479
- config: remove HAVE_PERCPU_COUNTER_INIT_WITH_GFP #16479
- config: remove HAVE_LINUX_BLK_CGROUP_HEADER #16479
- config: remove HAVE_KERNEL_TIMER_LIST_FLAGS #16479
- config: remove HAVE_KERNEL_STRSCPY #16479
- config: remove HAVE_IO_SCHEDULE_TIMEOUT #16479
- config: remove HAVE_INODE_SET_FLAGS #16479
- config: remove HAVE_GENERIC_WRITE_CHECKS_KIOCB #16479
- config: remove HAVE_FSYNC_RANGE #16479
- config: remove HAVE_FILE_INODE #16479
- config: remove HAVE_FILE_DENTRY #16479
- config: remove HAVE_FALLOC_FL_ZERO_RANGE #16479
- config: remove HAVE_ENCODE_FH_WITH_INODE #16479
- config: remove HAVE_D_PRUNE_ALIASES #16479
- config: remove HAVE_D_MAKE_ROOT #16479
- config: remove HAVE_DIRTY_INODE_WITH_FLAGS #16479
- config: remove HAVE_DENTRY_D_U_ALIASES #16479
- config: remove HAVE_CLEAR_INODE and HAVE_EVICT_INODE #16479
- config: remove HAVE_BIO_BVEC_ITER #16479
- config: remove HAVE_1ARG_BIO_END_IO_T #16479
- Use kmap_local_page instead of kmap_atomic (#16329)
- zvol: ensure device minors are properly cleaned up #14872 #16364
- zvol_impl: document and tidy flags #16364
- Fix issig() to check signal_pending after dequeue SIGSTOP/SIGTSTP #16464
- Simplify issig(). #16225
- Allow block cloning to be interrupted by a signal. #16208
- Linux: Report reclaimable memory to kernel as such (#16385)
- Replace usage of schedule_timeout with schedule_timeout_interruptible (#16150) #16150
- config: remove checks with unused defines #16479
- Linux 6.10 compat: Fix tracepoints definitions #16475 #16515
- vdev_disk: move abd return and free off the interrupt handler #16687
- Updating bash completion build file #16422
- contrib: bash_completion.d: force zpool symlink recreation #16423
- contrib/bash_completion.d: squelch FreeBSD seq when first < last #16234
- Verify parent_dev before calling udev_device_get_sysattr_value #16705 #16717
- zdb: add extra -T flag to show histograms of BRT refcounts #16692
- vdev_disk: try harder to ensure IO alignment rules #16687
- On the first vdev open ignore impossible ashift hints #16690
- Fix gcc uninitialized warning in FreeBSD zio_crypt.c #16688
- Fix gcc unused value warning in FreeBSD simd.h #16693
- zdb: show bp in uberblock dump #16667
- Fix inconsistent mount options for ZFS root #16646
- Fallback to strerror() when strerror_l() isn't available #16636 #16640
- libzfs: use zfs_strerror() in place of strerror() #15793
- Only serialize native-deb* targets #16622
- Fix generation of kernel uevents for snapshot rename on linux #14223 #16600
- Update path for zed in zfs-zed.service for native debian packages
- Disable parallel build for native-deb* targets
- Fix missing packaging files from release tarballs
- ARC: Cache arc_c value during arc_evict() #16576 #16605
- Avoid computing strlen() inside loops #16584
- lua: add flex array field to TString type #16541 #16583
- man: update recordsize max size info #16581
- Properly release key in spa_keystore_dsl_key_hold_dd() #16567
- FreeBSD: Sync taskq_cancel_id() returns with Linux #16565
- Add missing guard defines for simd_stat #16558
- Fix /proc/spl/kstat/simd on x86 #16556
- Add SIMD metadata in /proc on Linux #16530
- Evicting too many bytes from MFU metadata #16521 #16546
- Reduce and handle EAGAIN errors on AIO label reads #16551
- Add compatibility file for GRUB versions up to v2.06 #13873 #15261 #15909
- Fix handling of DNS names with '-' in them for sharenfs #16529
- sa_impl: fix SA header bitfield docs #16500
- Fix an uninitialized data access (#16511)
- zdb: fix BRT dump (#16335)
- ZTS: Add Fedora 41, remove Fedora 39 #16700
- ZTS:...
zfs-2.1.16
zfs-2.3.0-rc3
We are excited to announce the third release candidate (RC3) of OpenZFS 2.3.0.
Key Features in OpenZFS 2.3.0 RC3:
- 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.11,
- FreeBSD releases 13.3, 14.0, and 14.1.
Changes (zfs-2.3.0-rc2...zfs-2.3.0-rc3)
- JSON: fix user properties output for zfs list #16732
- Use <fcntl.h> instead of <sys/fcntl.h> #15925
- Update ABD stats for linear page Linux #16729
- ZFS send should use spill block prefetched from send_reader_thread #16701
- Use simple folio migration function #16568 #16723
- Revert "Avoid BUG in migrate_folio_extra" #16568 #16723
- Verify parent_dev before calling udev_device_get_sysattr_value #16705 #16717
- Reduce dirty records memory usage #16694
- zfs(4): remove "experimental" from zfs_bclone_enabled #16189 #16712
- ZTS: Add Fedora 41, remove Fedora 39 #16700
- zdb: add extra -T flag to show histograms of BRT refcounts #16692
- Added output to
zpool online
andoffline
#16244 - vdev_disk: move abd return and free off the interrupt handler #16687
- vdev_disk: try harder to ensure IO alignment rules #16687 #16631 #15646 #15533 #14533
- Add warning for external consumers of dmu_tx_callback_register #16698
- On the first vdev open ignore impossible ashift hints #16690
- Fix gcc uninitialized warning in FreeBSD zio_crypt.c #16688
- Fix gcc unused value warning in FreeBSD simd.h #16693
- ZTS: Add LUKS sanity test #16681
- Pack dmu_buf_impl_t by 16 bytes #16684
- Fix dependency install on Debian 11 #16683
- ZTS: Add additional exceptions #16670
- spl/thread: explicitly define thread_func_t as noreturn #16672 #16673
- config: fix dequeue_signal check for kernels <4.20 #16666
- zdb: show bp in uberblock dump #16667
- Fix compile-time warnings caused by duplicate struct typedefs #16660 #16665
- zfs_debug: Restore log size limit for userspace #16492 #16566 #16664
- libspl/backtrace: comment and harden libunwind backtracer #16653
- libspl/backtrace: rename and document hex conversion function #16653
- libspl/backtrace: helper macros for output #16653
- libspl/backtrace: dump registers in libunwind backtraces #16653
- Fix inconsistent mount options for ZFS root #16646
- freebsd: Use compiler.h from FreeBSD's base's linuxkpi #16650
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-rc2
We are excited to announce the second release candidate (RC2) of OpenZFS 2.3.0.
Key Features in OpenZFS 2.3.0 RC2:
- 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.
- 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.11,
- FreeBSD releases 13.3, 14.0, and 14.1.
Changes (zfs-2.3.0-rc1...zfs-2.3.0-rc2)
- ZTS: Make use of optimal CPU pinning #16641
- ZTS: Optimize Kernel Same-page Merging (KSM) #16641
- Fallback to strerror() when strerror_l() isn't available #16636 #16640
- ZTS: Increase zpool_import_parallel_pos import margin #16638
- ZTS: Slightly increase dedup_quota limit #16637
- CI: Stick with ubuntu-22.04 for CodeQL analysis #16639
- zdb: fix printf format in dump_zap() #16635
- zpool/zfs: allow --json wherever -j is allowed #16632
- Always validate checksums for Direct I/O reads #16598
- FreeBSD: ignore some includes when not building kernel #16616
- ztest: Fix scrub check in ztest_raidz_expand_check() #16627
- vdev_id: multi-lun disks & slot num zero pad #16603
- ZTS: resilver_restart_001.ksh restore defaults #16618
- Only serialize native-deb* targets #16622
- zpool/zfs: restore -V & --version options #16615 #16617
- Return boolean_t in inline functions of lib/libspl/include/sys/uio.h #16613
- Bump SONAME of libzfs and libzpool #16609
- contrib/debian: add new manpages to installation list #16609
- Fix generation of kernel uevents for snapshot rename on linux #14223 #16600
- ZTS: Fix summary page creation again - second try #16611
- ZTS: Remove FreeBSD 13.4-STABLE #16610
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-rc1
We are excited to announce the first release candidate (RC1) of OpenZFS 2.3.0! This milestone marks a significant step forward in our continuous efforts to enhance the performance, reliability, and features of the OpenZFS file system.
Key Features in OpenZFS 2.3.0 RC1:
- 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.
- 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.11,
- FreeBSD releases 13.3, 14.0, and 14.1.
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.
Full Changelog: zfs-2.2.0-rc1...zfs-2.3.0-rc1
zfs-2.2.6
Supported Platforms
- Linux: compatible with 4.18 - 6.10 kernels
- FreeBSD: compatible with releases starting from 12.2-RELEASE
Changes
- Enable L2 cache of all (MRU+MFU) metadata but MFU data only #16343 #16402
- linux/zvol_os: fix zvol queue limits initialization #16454
- linux/zvol_os: tidy and document queue limit/config setup #16400
- ZTS: fix zfs_copies_006_pos test on Ubuntu 20.04 (#16409)
- ZTS: fix history_007_pos test on Ubuntu 24.04 (#16410)
- contrib: link zpool to zfs in bash-completion (#16376)
- module/icp/asm-arm/sha2: enable non-SIMD asm kernels on armv5/6 #15623
- module/icp/asm-arm/sha2: auto detect __ARM_ARCH #15557
- Linux 6.10 compat: META #16466
- linux/zvol_os.c: cleanup limits for non-blk mq case #16462
- linux/zvol_os.c: Fix max_discard_sectors limit for 6.8+ kernel #16462
- Fix null ptr deref when renaming a zvol with snaps and snapdev=visible (#16316)
- Linux 6.10 compat: Fix zvol NULL pointer deference #16453
- Linux 6.10 compat: fix rpm-kmod and builtin #16439 #16450
- ZTS: Use /dev/urandom instead of /dev/random #16442
- Linux 6.11: avoid passing "end" sentinel to register_sysctl() #16400
- Linux 6.11: add compat macro for page_mapping() #16400
- Linux 6.11: add more queue_limit fields with removed setters #16400
- Linux 6.11: IO stats is now a queue feature flag #16400
- Linux 6.11: first arg to proc_handler is now const #16400
- Linux 6.11: get backing_dev_info through queue gendisk #16400
- Linux 6.11: enable queue flush through queue limits #16400
- ZTS: Add a test to verify that copy_file_range obeys RLIMIT_FSIZE
- FreeBSD: Fix RLIMIT_FSIZE handling for block cloning
- zfs: add bounds checking to zil_parse (#16308)
- linux/zvol_os: fix SET_ERROR with negative return codes #16364
- ZTS: fix io_uring test on RHEL 9 variants (#16411)
zfs-2.2.5
Supported Platforms
- Linux: compatible with 4.18 - 6.9 kernels
- FreeBSD: compatible with releases starting from 12.2-RELEASE
Changes
- [2.2.5-only] Make 'rmmod zfs' work after zfs-2.2.4 (#16406)
- ZTS: Make do_vol_test() more deterministic (#16379)
- Linux 6.9: Fix UBSAN errors in sa.c (#16380) #16278 #16330
- Fix long_free_dirty accounting for small files (#16264)
- AUTHORS: refresh with recent new contributors (#16362)
- FreeBSD: Use a statement expression to implement SET_ERROR() (#16284)
- zdb: dump ZAP_FLAG_UINT64_KEY ZAPs properly (#16334)
- vdev_open: clear async fault flag after reopen
- zts: test single-disk pool resumes properly after disk pull
- disable automatic dependency tracking for dkms builds #16221 #16241
- Some improvements to metaslabs eviction #16214
- Destroy ARC buffer in case of fill error #15665 #15802 #16216
- Use memset to zero stack allocations containing unions #16135 #16206
- zdb: bring crash handling over from ztest #16181
- libspl_assert: always link -lpthread on FreeBSD #16168
- Unbreak FreeBSD cross-build on MacOS broken in 051460b #16167
- libspl/assert: use libunwind for backtrace when available #16140
- libspl/assert: dump backtrace in assert #16140
- libspl/assert: add lock around assertion output #16140
- libspl/assert: show process/task details in assert output #16140
- Only provide execvpe(3) when needed #15609
- find_system_library: fix var cleanup when library not found #16140
- abd_iter_page: rework to handle multipage scatterlists #16108
- zts: add a debug option to get full test output #16096
- zts: allow running a single test by name only #16088
- Fix missing semicolon in trace_dbuf.h (#16281)
- one-word manpage correction: snapshot->rollback (#16294)
- Linux 6.9 compat: META (#16358)
- ZTS: handle FreeBSD version numbers correctly (#16340)
- ZTS: Fix redacted_send failures on FreeBSD #16224
- Linux 5.16: use bdev_nr_bytes() to get device capacity
- Linux 6.10: work harder to avoid kmem_cache_alloc reuse
- Linux 6.10: rework queue limits setup
- Linux 6.9: Fix UBSAN errors in zap_micro.c #16278 #16330
- Linux 6.9: Call add_disk() from workqueue to fix zfs_allow_010_pos (#16282)
- Linux 6.7 compat: detect if kernel defines intptr_t #16201
- head_errlog: fix use-after-free #16272 #16273
- Fix assertion in Persistent L2ARC #16202 #16207
- FreeBSD: Add zfs_link_create() error handling #13215 #16138
- ZAP: Fix leaf references on zap_expand_leaf() errors #12366 #16159
- Fix ZIL clone records for legacy holes #16165
- Fix scn_queue races on very old pools #16162
- Slightly improve dnode hash #16131
- Make more taskq parameters writable #16118
- L2ARC: Cleanup buffer re-compression #16038
- Refactor dbuf_read() for safer decryption #16104
- Replace P2ALIGN with P2ALIGN_TYPED and delete P2ALIGN. #15940