# OpenZFS zfs-2.4.1 - Product: OpenZFS (https://whatsnew.fyi/product/openzfs) - Vendor: OpenZFS - Date: 2026-02-25 - Version: zfs-2.4.1 - Original notes: https://github.com/openzfs/zfs/releases/tag/zfs-2.4.1 - Permalink: https://whatsnew.fyi/product/openzfs/releases/zfs-2.4.1 - Labels: Platforms: Linux What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **fixed** — Fix available space accounting for special/dedup - **fixed** — Fix activating large_microzap on receive - **changed** — Improve caching for dbuf prefetches - **fixed** — Flush RRD only when TXGs contain data - **fixed** — Fix send:raw permission for send -w -I - **changed** — Linux 6.19 compat: in-tree build: fix duplicate GCM assembly functions - **changed** — Linux 6.19: handle --werror with CONFIG_OBJTOOL_WERROR=y - **added** — zhack: add "action idle" subcommand - **added** — zhack: add -G option to dump debug buffer - **fixed** — Fix build for Linux 6.18 with PowerPC/RISC-V kernels - **fixed** — Fix history logging for zpool create -t - **fixed** — Remove thread unsafe debug code causing FreeBSD double free panic - **fixed** — Fix --enable-invariants on FreeBSD - **fixed** — DDT: Add locking for table ZAP destruction - **fixed** — When receiving a stream with the large block flag, activate feature - **fixed** — Fix zfs_open() to skip zil_async_to_sync() for the snapshot - **added** — cmd/zfs: clone: accept -u to not mount newly created datasets - **added** — zdb: Add -O option for -r to specify object-id - **fixed** — DDT: Fix compressed entry buffer size - **fixed** — zpool: fix conflict with -v and -o options ###### Supported Platforms - **Linux**: compatible with 4.18 - 6.19 kernels - **FreeBSD**: compatible with releases starting from 13.3+, 14.0+, 15.0+ ###### Changes - Fix available space accounting for special/dedup (#18222) #18190 #18222 - CI: Test & fix Linux ZFS built-in build #18234 - Linux 6.19 compat: in-tree build: fix duplicate GCM assembly functions #18204 #18224 - zfs_vnops_os.c: Move a vput() to after zfs_setattr_dir() - Fix activating large_microzap on receive #18143 #18144 - Improve caching for dbuf prefetches #18160 - Flush RRD only when TXGs contain data #18082 #18138 - Fix `send:raw` permission for send `-w -I` #18198 #18193 - ZTS: Fix zed_synchronous_zedlet #18192 #18196 - Linux 6.19 compat: META #18197 - CI: Test build Lustre against ZFS #18161 - Include missing newline in 'man' error #18183 - ZTS: update the relevant mmp test cases - zhack: add "action idle" subcommand - zhack: add -G option to dump debug buffer - mmp: claim sequence id before final import - mmp: add spa_load_name() for tryimport - mmp: move "Starting import" log message - mmp: further restrict mmp exported pool check - Fix build for Linux 6.18 with PowerPC/RISC-V kernels. (#18145) - Linux 6.19: handle --werror with CONFIG_OBJTOOL_WERROR=y #18152 - CI: Add Alpine Linux 3.23 runner to the pipeline (#18087) - cmd/ztest: avoid `PATH_MAX` stack allocation in `ztest_get_zdb_bin()` (#18085) - zed.d, contrib: fix shellcheck errors in scripts - zfs_main: cosmetic: add missing flag to the comment for create - CI: Test 2.4.x in qemu-test-repo-vm.sh, quick mode #18070 - Change shellcheck and checkbashism triggers. #18000 - Replace bashisms in ZFS shell function stub. #18000 - Make lines stay within 80 char limit. #18000 - Add some comments to clarify the mounting of filesystems. #18000 - Standardise if/then/else and for/do/done lines. #18000 - Add missing initrd config variables. #18000 - Remove unnecessary sourcing of variables. #18000 - Fix issue with finding degraded pool(s). #18000 - Prefix all variables that are local with underscore. #18000 - Shell script good practices changes. #18000 - Fix potential global variable overwrite. #18000 - zpool: fix conflict with -v and -o options - CI: Fix qemu-1-setup failure, remove debug stuff #18166 - CI: Use Ubuntu mirrors instead of azure (#18057) #18057 - nvpair: chase FreeBSD xdrproc_t definition #18154 - Make sure we can still write data to txg #18139 - Lock db_mtx around arc_release() in couple places #18146 - remove thread unsafe debug code causing FreeBSD double free panic #18140 - FreeBSD: Remove references to DEBUG_VFS_LOCKS #18136 - FreeBSD: unbreak compilation on i386 #18096 - Fix --enable-invariants on FreeBSD #18131 - Fix history logging for `zpool create -t` #18118 #18102 - DDT: Add locking for table ZAP destruction #18115 - Add fh_to_parent export definition #18099 - spl: remove a _KERNEL check #18117 - spl: unexport kstat_proc_entry functions #18117 - spl: lift 64-bit math compat out to separate file #18117 - spl: remove old atomic lock #18117 - icp: emit .note.GNU-stack section for all ELF targets #18119 - When receiving a stream with the large block flag, activate feature #18105 - Fix zfs_open() to skip zil_async_to_sync() for the snapshot #18091 - ZTS: add regression test for #17180 #18109 - Rename several printf attributes declarations to __printf__ #18095 - Add handling for STATX_CHANGE_COOKIE #18097 - kmem: don't add __GFP_RECLAIMABLE for KM_VMEM allocations #18107 - cmd/zfs: clone: accept `-u` to not mount newly created datasets #18080 - kmem: don't add __GFP_COMP for KM_VMEM allocations #18053 - kmem: don't pass __GFP_HIGHMEM to __vmalloc #18053 - Linux 6.19: replace i_state access with inode_state_read_once() #18053 - Use reduced precision for scan times #18061 - Reduce minimal scrub/resilver times #18060 - zdb: Add -O option for -r to specify object-id #16307 - Fix rangelock test for growing block size #18064 _[Truncated at 4000 characters — full notes: https://github.com/openzfs/zfs/releases/tag/zfs-2.4.1]_