# OpenZFS zfs-2.3.8 - Product: OpenZFS (https://whatsnew.fyi/product/openzfs) - Vendor: OpenZFS - Date: 2026-06-12 - Version: zfs-2.3.8 - Original notes: https://github.com/openzfs/zfs/releases/tag/zfs-2.3.8 - Permalink: https://whatsnew.fyi/product/openzfs/releases/zfs-2.3.8 - 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 stats asymmetry in case of Direct I/O - **added** — Add encryption key check for block cloning in ZVOL - **fixed** — Fix log vdev removal issues - **changed** — Remove parent ZIO from dbuf_prefetch() - **changed** — Simplify dnode_level_is_l2cacheable() - **changed** — Rename several printf attributes declarations to __printf__ - **changed** — When reading a vdev label skip libzfs_core_init() - **fixed** — dsl_scan: close errorscrub cursor on pause - **changed** — Enforce exact decompressed length for lz4, gzip, and zstd - **changed** — FreeBSD: Make it possible to build openzfs.ko with sanitizers - **fixed** — spl_kvmalloc: remove __GFP_COMP before calling vmalloc() - **changed** — zap_impl: use flex array field for mzap_phys_t.mz_chunks - **added** — arc: export additional required symbols - **fixed** — Fix double free for blocks cloned after DDT prune - **fixed** — zarcstat: detect attached L2ARC device with no data - **added** — zdb: detect BRT and DDT leaks during block traversal - **fixed** — sa: fix sa_add_projid lock ordering - **fixed** — zfs: annotate nested dd_lock in reservation sync accounting - **fixed** — Fix off-by-one in PREVIOUSLY_REDACTED handler that drops last block - **fixed** — key lookup failure should always return EACCES ###### Supported Platforms - **Linux**: compatible with 4.18 - 7.0 kernels - **FreeBSD**: compatible with releases starting from 13.3+, 14.0+ ###### Changes - abd: Fix stats asymmetry in case of Direct I/O #18390 - ZVOL: Add encryption key check for block cloning #18315 - Fix log vdev removal issues #18277 - Remove parent ZIO from dbuf_prefetch() #18214 - Simplify dnode_level_is_l2cacheable() #18212 - Rename several printf attributes declarations to __printf__ #18095 - When reading a vdev label skip libzfs_core_init() #18606 - dsl_scan: close errorscrub cursor on pause #18603 - enforce exact decompressed length for lz4, gzip, and zstd #18599 - FreeBSD: Make it possible to build openzfs.ko with sanitizers #18596 - spl_kvmalloc: remove __GFP_COMP before calling vmalloc() #18558 - zap_impl: use flex array field for mzap_phys_t.mz_chunks #18550 - arc: export additional required symbols #18533 - Fix double free for blocks cloned after DDT prune #18520 - zarcstat: detect attached L2ARC device with no data #18499 - zdb: detect BRT and DDT leaks during block traversal #18494 - sa: fix sa_add_projid lock ordering #18503 - zfs: annotate nested dd_lock in reservation sync accounting #18497 - Fix off-by-one in PREVIOUSLY_REDACTED handler that drops last block #18477 - key lookup failure should always return EACCES #18448 - Fix "panic: cache_vop_rename: lingering negative entry" #18430 - Fix aarch64 build failure by removing earlyclobber (#18532) - Linux 5.6 compat: fix fs_parse API mismatch #18585 - linux/super: properly apply ro/rw mount option to superblock #18557 #18563 - config: show progress output for kernel API checks #18554 - linux: suppress reclaim lockdep in zfs_inactive via rwlock wrappers #18505 - linux/zpl_super: handle 'source' option directly #18529 - Linux: avoid znode list lock inversion during resume #18517 - Linux: annotate nested xattr setattr znode locks #18506 - linux: verify stale znodes in legacy fallocate #18458 - ZTS: relax zpool_import_parallel_pos.ksh timing #18634 - Fix uninitialized variable warning in zil_parse() #18633 - Add additional verification of size fields and strings (#18623) #18623 - CI: Add alternative URLs for CentOS stream #18628 - CI: Increase default RCU stall timeout on Linux #18624 - CI: Update CodeQL actions to v4 #18629 - CI: Re-enable CodeQL workflows on push #18627 - Remove /etc/sudoers.d/zfs #18626 - pam: use open fd instead of path #18618 - Extend dataset zfs_ioc_set_prop() secpolicy #18617 - Fix uninitialized variable warning in vdev_prop_get() #18616 - sharenfs: Check for invalid characters #18613 - Fix the integer type in zfs_ioc_userspace_many() #18615 - nvpair: Check for un-terminated strings in packed nvlist #18604 - CI: add concurrency support to zfs-arm #18608 - CI: apt-get update before purging host packages #18607 #18609 - CI: skip smatch, zloop, and zfs-arm for documentation-only changes #18601 - CI: Lustre 6.16 kernel compatibility fix (#18602) - CI: Update checkstyle checkout action to v6 #18600 - .github: update workflows README #18590 - CI: run full CI when a workflow YAML changes #18577 - CI: skip full CI runs on push events #18571 - CI: enable FreeBSD 15.0-RELEASE in matrix #18561 - CI: Build custom branch from zfs-qemu-packages #18569 - ZTS: zfs_unshare_006_pos.ksh enable usershares #18547 - CI: Fix qemu-guest-agent systemd enable #18547 - CI: Add Ubuntu 26.04 builder #18547 - CI: remove FreeBSD 13.5 (EOL April 30, 2026) #18553 - CI: Allow testing with a newer GCC on ARM builder #18540 - CI: Remove deprecated Fedora 42 #18545 - CI: Fix 99.99 META version #18526 #18531 - CI: FreeBSD 15.1 STABLE #18524 - CI: skip qemu matrix for documentation-only pull requests #18518