Releases: openzfs/zfs
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
zfs-2.2.4
Supported Platforms
- Linux: compatible with 3.10 - 6.8 kernels
- FreeBSD: compatible with releases starting from 12.2-RELEASE
Changes
- Fix updating the zvol_htable when renaming a zvol #16127 #16128
- Add prefetch property #15237 #15436
- vdev probe to slow disk can stall mmp write checker #15839
- Extend import_progress kstat with a notes field #15539
- Add ashift validation when adding devices to a pool #15509
- Fix arcstats for FreeBSD after zfetch support #16141
- Add zfetch stats in arcstats #16094
- Use ASSERT0P() to check that a pointer is NULL. #15225
- GCC: Fixes for gcc 14 on Fedora 40 #16124 #16125
- Python 3.12 deprecated python3-distutils #16126 #16129
- zfs-kmod: fix empty rpm requires/conflicts #16121
- ZTS: user_namespace_004.ksh avoid error in cleanup if unsupported #16114
- Add newline to two zpool messages #16113
- Do no use .cfi_negate_ra_state within the assembly on Arm64 #14965 #15784
- Add the BTI elf note to the AArch64 SHA2 assembly #16086
- AUTHORS: refresh with recent new contributors #16079
- return NULL at end of send_progress_thread #16074
- Fix locale-specific time #15878 #15879
- Fix panics when truncating/deleting files #15983
- vdev props comment and manpage should include zfsd and FreeBSD mentions #15968
- Add slow disk diagnosis to ZED #15469
- [2.2.4-only] Stub RAIDZ enums to prevent conflicts
- zap_leaf: make l_hash[] variable length to silence UBSAN #15964
- Give a better message from 'zpool get' with invalid pool name #15942
- xdr: header cleanup #16047 #16051
- Fix buffer underflow if sysfs file is empty #16028 #16035
- ZTS: fix flakiness in cp_files_002_pos #16029
- Fix option string, adding -e and fixing order #16008
- freebsd: fix missing headers in distribution tarball #15963
- Check for minimum partition size #15898
- Add VERIFY0P() and ASSERT0P() macros. #15225
- Clean up existing VERIFY*() macros. #15225
- etc/init.d: decide which variant to use at build time. #15977
- config/Substfiles.am: restrict to the dedicated list. #15980
- man: move zfs_prepare_disk.8 to nodist_man_MANS #15979
- Add support for zfs mount -R #16015
- Linux 6.9 compat: blk_alloc_disk() now takes two args #16027 #16033
- Linux 6.9 compat: bdev handles are now struct file #16027 #16033
- vdev_disk: clean up spa/bdev mode conversion #15995
- Linux 5.18+ compat: Detect filemap_range_has_page #16034
- udev: correctly handle partition #16 and later #15904 #15970
- zvols: prevent overflow of minor device numbers #16006
- Linux 6.8 compat: META (#16099)
- bdev_discard_supported: understand discard_granularity=0
- L2ARC: Relax locking during write #16040
- Small fix to prefetch ranges aggregation #16072
- Remove db_state DB_NOFILL checks from syncing context #16057
- Speculative prefetch for reordered requests #16022
- Fix read errors race after block cloning #16052
- Improve dbuf_read() error reporting #16042
- BRT: Check pool clone stats in more tests #16007
- BRT: Fix tests to work on non-empty pools #16007
- BRT: Fix holes cloning. #15994 #16007
- BRT: Skip getting length in brt_entry_lookup() #15950
- BRT: Make BRT block sizes configurable #15967
- BRT: Relax brt_pending_apply() locking #15955
- ZAP: Massively switch to _by_dnode() interfaces #15951
- BRT: Skip duplicate BRT prefetches #15941
- ZAP: Some cleanups/micro-optimizations #15976
- BRT: Change brt_pending_tree sorting order #15954
- Update resume token at object receive. #15927
- Linux: Cleanup taskq threads spawn/exit #15873
- Refactor dmu_prefetch(). #15076
- ZIL: Update Linux tracing after #15635 #15730
- ZIL: Improve next log block size prediction #15635
- ZIO: Optimize zio_flush() #15515
- ZIL: Detect single-threaded workloads #15381
- zvol_os: fix compile with blk-mq on Linux 4.x #16069
- zvol_os: fix build on Linux <3.13 #16062
- zvol: use multiple taskq #15992
- vdev_disk: fix alignment check when buffer has non-zero starting offset
- vdev_disk: ensure trim errors are returned immediately
- vdev_disk: don't touch vbio after its handed off to the kernel
- Fix corruption caused by mmap flushing problems #15933 #16019
- vdev_disk: default to classic submission for 2.2.x
- abd_iter_page: don't use compound heads on Linux <4.5 #15533 #15588
- vdev_disk: use bio_chain() to submit multiple BIOs #15533 #15588
- vdev_disk: add module parameter to select BIO submission method #15533 #15588
- vdev_disk: rewrite BIO filling machinery to avoid split pages #15533 #15588
- vdev_disk: make read/write IO function configurable #15533 #15588
- vdev_disk: reorganise vdev_disk_io_start #15533 #15588
- vdev_disk: rename existing functions to vdev_classic_* #15533 #15588
- abd: add page iterator #15533 #15588
- linux 5.4 compat: page_size() #15533 #15588
- Linux 6.8 compat: use splice_copy_file_range() for fallback #15930 #15931
zfs-2.1.15
Supported Platforms
- Linux: compatible with 3.10 - 6.7 kernels
- FreeBSD: compatible with releases starting from 12.2-RELEASE
Changes
- Avoid calling rw_destroy() on uninitialized rwlock #13976
- Fix GCC 12 compilation errors #14150
- libzfs_sendrecv: Style pass on send_print_verbose #12967
- Linux 6.7 compat: META #15833
- Linux 6.6 compat: META #15520
- ZTS: Debug zfs_share_concurrent_shares failure #15379
- tests: zfs_share_concurrent_shares: don't use log_musts in subprocesses #13259
- Fix the FreeBSD userspace build (#15716)
- [zfs-2.1.15] Update ABI files
- ZTS: Fix zfs_load-key failures on F39 #15534 #15550
- LUA: Backport CVE-2020-24370's patch #15847
- Add 'zpool status -e' flag to see unhealthy vdevs #15769
- zpool: Add slot power control, print power status #15662
- zed: fix typo in variable ZED_POWER_OFF_ENCLOUSRE_SLOT_ON_FAULT #15651
- ZTS: Add dirty dnode stress test #15608
- ZTS: Fix 'could not unmount datasets' on Alma 9 (#15542)
- zed: misc vdev_enc_sysfs_path fixes #15462
- Add zfs_prepare_disk script for disk firmware install #15243
- Linux 6.8 compat: replace MAX_ORDER define #15805
- Linux 6.8 compat: implement strlcpy fallback #15805
- Linux 6.8 compat: update for new bdev access functions #15805
- Linux 6.8 compat: make test functions static #15805
- Linux 6.7 compat: zfs_setattr fix atime update #15762 #15773
- Linux 6.5 compat: check BLK_OPEN_EXCL is defined #15692
- linux 6.7 compat: rework shrinker setup for heap allocations
- linux 6.7 compat: handle superblock shrinker member change
- linux 6.7 compat: use inode atime/mtime accessors
- linux 6.7 compat: simplify current_time() check
- Linux 6.6 compat: fix configure error with clang (#15558)
- Linux 6.6 compat: fsync_bdev() has been removed in favor of sync_blockdev() #15263
- Linux 6.6 compat: generic_fillattr has a new u32 request_mask added at arg2 #15263
- Linux 6.6 compat: use inode_get/set_ctime*(...) #15263 #15257
- Workaround UBSAN errors for variable arrays #15510
- FreeBSD: catch up to __FreeBSD_version 1400093 #15036
- spa: Let spa_taskq_param_get()'s addition of a newline be optional #15719
- spa: Fix FreeBSD sysctl handlers #15719
- freebsd: fix compile for spa_taskq_read/spa_taskq_write params
- [2.1] compat: add check for kernel_neon_* availability
- spa: make read/write queues configurable
- libshare: nfs: pass through ipv6 addresses in bracket notation #11939
- ZTS: Disable io_uring test on CentOS 9 #15636
- Report ashift of L2ARC devices in zdb #15331
- zfs-dkms: fix shell-init error message #15576
- Fix dkms installation of deb packages created with Alien. #15415