Releases: openzfs/zfs
zfs-2.2.7
Supported Platforms
- Linux: compatible with 4.18 - 6.12 kernels
- FreeBSD: compatible with releases starting from 12.2-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
zfs-2.2.3
Supported Platforms
- Linux: compatible with 3.10 - 6.7 kernels
- FreeBSD: compatible with releases starting from 12.2-RELEASE
Changes
- ZTS: Skip cross-fs bclone tests if FreeBSD < 14.0 #15901
- [zfs-2.2.3] ZTS: Use correct bclone module param name on FreeBSD
- zdb: Fix false leak report for BRT objects #15882
- Add Ntfy notification support to ZED #15584
- BRT: Fix slop space calculation with block cloning #15874
- zfs list: add '-t fs' and '-t vol' options (#15883) #15864
- [zfs-2.2.3] Enable zfs_bclone_enabled on cp_files tests
- LUA: Backport CVE-2020-24370's patch #15847
- Add 'zpool status -e' flag to see unhealthy vdevs #15769
- zed: fix typo in variable ZED_POWER_OFF_ENCLOUSRE_SLOT_ON_FAULT #15651
- Improve performance for zpool trim on linux #15843
- BRT: Fix FICLONE/FICLONERANGE shortened copy #15728 #15842
- Fix the FreeBSD userspace build (#15716)
- zpool: Add slot power control, print power status #15662
- zed: misc vdev_enc_sysfs_path fixes #15462
- ZTS: Add dirty dnode stress test #15608
- Linux 6.8 compat: handle mnt_idmap user_namespace change #15805
- Linux 6.8 compat: fix inode permission tests #15805
- 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: META #15833
- Don't assert mg_initialized due to device addition race #15818
- Update man pages to time(1) from time(2) #15823
- ZTS: Allow longer run time for zdb_args_pos #15826
- Move nodes into correct subgraphs #15828
- zpool wait: print timestamp before the header #15825
- Update vdev devid and physpath if changed between imports #15816
- ZTS: Update deprecated Github Action version numbers #15820
- Switch to CodeQL to detect prohibited function use #15819 #14134
- ZTS: Apply small changes for speeding up the tests #15811
- FreeBSD: Fix bootstrapping tools under Linux/musl #15780
- linux spl: fix typo in top comment of spl-condvar.c #15782
- Make sure all necessary RPM path macros are defined #15756
- Make spl_kmem_cache size check consistent #15757
- Add path handling for aux vdevs in
label_path
#15737 - Extend aux label to add path information #15737
- fix: Uber block label not always found for aux vdevs #15737
- Fix "out of memory" error #15747
- fix: preserve linux kmod signature in zfs-kmod rpm spec #15744
- fix(mount): do not truncate shares not zfs mount #15607 #15660
- Fix a potential use-after-free in zfs_setsecattr() #15752
- Linux: Defer loading the object set in zfs_setattr() #15752
- Make zdb -R scale less poorly #15726
- Stop wasting time on malloc in snprintf_zstd_header #15721
- Fix file descriptor leak on pool import. #15630
- ZTS: Apply zfs_bclone_enabled to bclone tests #15796
- fix: variable type with zfs-tests/cmd/clonefile.c #15783
- Fix cloning into mmaped and cached file. #15772
- ZTS: Test for clone, mmap and write for block cloning #15717
- Enable block_cloning tests on FreeBSD #15749
- Block cloning tests. #15631
- Test LWB buffer overflow for block cloning #15672
- ZTS: Add test cases for block cloning replay #15614
- ZTS: block_cloning: Use numeric sort for get_same_blocks #15614
- Autotrim High Load Average Fix #15781
- Linux 6.7 compat: zfs_setattr fix atime update #15762 #15773
- compact: workaround for GPL-only symbols on riscv from Linux 6.2 #14974 #15627
- 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
- Fix livelist assertions for dedup and cloning #15732
- Improve block sizes checks during cloning #15724 #15735
- Linux 6.2 compat: add check for kernel_neon_* availability #15711 #14555
- Don't panic on unencrypted block in encrypted dataset #15677
- dbuf: Set dr_data when unoverriding after clone #15654 #15656
- dbuf: Handle arcbuf assignment after block cloning #15653
- DMU: Fix lock leak on dbuf_hold() error #15644
- BRT: Limit brt_vdev_dump() to only one vdev #15625
- ZIL: Remove 128K into 2x68K LWB split optimization #15634
- zdb: Dump encrypted write and clone ZIL records #15629
- Allow block cloning across encrypted datasets #15544
- ZIL: Do not clone blocks from the future #15617
- ZIL: Remove TX_CLONE_RANGE replay for ZVOLs. #15612
- ZIO: Add overflow checks for linear buffers #15553
- ZIL: Assert record sizes in different places #15517
- L2ARC: Restrict write size to 1/4 of the device #15519
- Linux: Reclaim unused spl_kmem_cache_reclaim #15507
- FreeBSD: Optimize large kstat outputs #15495
- Update the kstat dataset_name when renaming a zvol #15482 #15486
- ABD: Be more assertive in iterators #15428
- spa: make read/write queues configurable
- Linux 6.5 compat: check BLK_OPEN_EXCL is defined #15692
- ZTS: Disable io_uring test on CentOS 9 #15636
- 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