# OpenZFS zfs-2.3.9 - Product: OpenZFS (https://whatsnew.fyi/product/openzfs) - Vendor: OpenZFS - Date: 2026-08-21 - Version: zfs-2.3.9 - Original notes: https://github.com/openzfs/zfs/releases/tag/zfs-2.3.9 - Permalink: https://whatsnew.fyi/product/openzfs/releases/zfs-2.3.9 - 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'. --- - **added** — Add workaround for device_access ZTS test - **added** — Add 'capsh' to commands.cfg - **added** — zhack: add "mmp reclaim" to recover a pool stranded by MMP - **added** — Add missing checks to zfs_clone_range_replay() - **added** — libspl: Implement VERIFY_IMPLY and VERIFY_EQUIV - **added** — Add SECURITY.md policy file - **changed** — vdev_disk: use calling cred to check for device access - **changed** — vdev_file: use calling cred to check for device access - **changed** — zfs_file_open: add cred arg, use it to check access - **changed** — vdev_open: pass credential to check for permission to open device - **changed** — secpolicy_sys_config: only permit a global zone credential - **changed** — secpolicy_zinject: only permit a global zone credential - **changed** — config: detect idmap method via generic_permission test - **changed** — mmp: tell a failed uberblock claim apart from remote activity - **changed** — Make systemd-udev-settle optional for the import units - **changed** — nvpair: i_get_value_size() string array handling tweak - **changed** — nvpair: Improve native handling of unterminated strings - **changed** — Linux 5.19/6.17: handle differences in how to flush delay workqueue - **changed** — Linux 6.3: follow_down() gains flags arg - **changed** — Linux 6.18 compat: vfs_parse_fs_string() takes 3 args - **fixed** — Fix ddtprune causing space leak - **fixed** — nvpair: Fix operator precedence - **fixed** — build: Fix release detection when build dir is not source dir - **fixed** — man: zvol_request_sync is not ignored under blk-mq - **fixed** — libzfs: don't read a dataset handle after closing it in resume send - **fixed** — mmp: do not require writes to mirror legs the config marks absent - **fixed** — libzfs: String trimming should not operate out of bounds - **fixed** — libzfs: don't truncate a resolved vdev path in zpool_vdev_name() - **fixed** — libzfs: Do not call munmap() when mmap() fails - **fixed** — zfs: fix stale POSIX ACL cache after rollback - **fixed** — zed: let autoexpand see capacity changes on partitioned disks - **fixed** — dmu_recv: Avoid potential null deref - **fixed** — DDT: Fix several bugs in pruning - **fixed** — mmp: skip non-writeable vdevs during activity check - **fixed** — L2ARC: bound the rebuild by the write hand on a first sweep - **fixed** — libzfs: fallback VDEV_UPATH to VDEV_PATH for non-DM devices - **fixed** — Fix reads for blocks freed after being cloned - **fixed** — Rate limit Direct I/O verify zevents - **fixed** — zpl_inode: remove zpl_rename no-flags variants - **fixed** — Fix receive -x according to comment - **fixed** — linux: batch DMU reads of non-resident pages in mappedread() - **fixed** — Linux: fix zfs_write() infinite loop on unfaultable buffer - **fixed** — build: Fix for building dist target outside of project root - **fixed** — libzfs: fix MS_CRYPT/MS_OVERLAY collision with umount2(2) flags - **fixed** — linux: handle mmap read beyond file size - **fixed** — Fix race between device removal completion and pool export - **fixed** — ddt_log: Fix refcount tagging for begin/commit - **fixed** — Update mtime/ctime when fallocate grows a file - **fixed** — Clean up embedded slog metaslab across txgs - **fixed** — zbookmark_compare: handle "marker" bookmarks with negative levels - **removed** — secpolicy_nfs: remove, not used ###### Supported Platforms - **Linux**: compatible with 4.18 - 7.2 kernels - **FreeBSD**: compatible with releases starting from 13.3+, 14.0+ ###### Changes - [zfs-2.3.9] Add workaround for device_access ZTS test - [zfs-2.3.9] Add 'capsh' to commands.cfg - ZTS: device access tests #18960 - vdev_disk: use calling cred to check for device access #18960 - vdev_file: use calling cred to check for device access #18960 - zfs_file_open: add cred arg, use it to check access #18960 - vdev_open: pass credential to check for permission to open device #18960 - secpolicy_zfs: add a note about the power of CAP_SYS_ADMIN #18959 - secpolicy_sys_config: only permit a global zone credential #18959 - secpolicy_zinject: only permit a global zone credential #18959 - secpolicy_nfs: remove, not used #18959 - ZTS: test secpolicy_zinject correctly limits namespace access #18959 - ZTS: test secpolicy_sys_config correctly limits namespace access #18959 - config: detect idmap method via generic_permission test #18769 - mmp: tell a failed uberblock claim apart from remote activity #18892 - ZTS: add coverage for zhack mmp reclaim #18892 - zhack: add "mmp reclaim" to recover a pool stranded by MMP #18892 - Make systemd-udev-settle optional for the import units #18832 - Fix ddtprune causing space leak #17982 #17983 - Linux 7.2 compat: META #18941 - nvpair: i_get_value_size() string array handling tweak #18877 - nvpair: Improve native handling of unterminated strings #18876 - CodeQL: Flag implicit compare-then-assign in branch conditions #18899 - Linux 5.19/6.17: handle differences in how to flush delay workqueue #18847 - Linux 6.3: follow_down() gains flags arg #18847 - Linux 6.18 compat: vfs_parse_fs_string() takes 3 args #18847 - nvpair: Fix operator precedence #18874 - ZTS: don't read a command's exit status as a missing binary #18726 #18882 - build: Fix release detection when build dir is not source dir #18891 - CI: don't fail a passing job when a log reader has already exited #18885 - CI: publish the per-VM test counter atomically #18885 - man: zvol_request_sync is not ignored under blk-mq #18887 - libzfs: don't read a dataset handle after closing it in resume send #18870 #18883 - ZTS: add coverage for the MMP claim on a degraded mirror #18855 - mmp: do not require writes to mirror legs the config marks absent #18855 - libzfs: String trimming should not operate out of bounds #18868 - libzfs: don't truncate a resolved vdev path in zpool_vdev_name() #18851 #18871 - libzfs: Do not call munmap() when mmap() fails #18869 - Add missing checks to zfs_clone_range_replay() #18867 - zfs: fix stale POSIX ACL cache after rollback #18837 - zed: let autoexpand see capacity changes on partitioned disks #12505 #18833 - ZTS: make file_check actually compare the resume test results #18834 - dmu_recv: Avoid potential null deref #18848 - DDT: Fix several bugs in pruning #18838 - cstyle: better tolerance for struct literals - libspl: Implement VERIFY_IMPLY and VERIFY_EQUIV #18822 - mmp: skip non-writeable vdevs during activity check #18823 #18835 - zdb: output refcounts from verify_spacemap_refcounts() #18809 - L2ARC: bound the rebuild by the write hand on a first sweep #3114 #3400 #5583 #10224 #12779 #18827 - libzfs: fallback VDEV_UPATH to VDEV_PATH for non-DM devices #18439 #18802 - Fix reads for blocks freed after being cloned #18421 #18724 - Rate limit Direct I/O verify zevents #18795 - CI: Update Alpine Linux runner to 3.24.1 #18790 - Remove libuutil from the pull request template and fix headings #18791 - CI: Fix race caused by shared ctr file updates #18778 - zpl_inode: remove zpl_rename no-flags variants #18769 - ZTS: migration/setup: clear stale zfs_member label before new_fs #18492 #18753 - Fix receive -x according to comment #18737 #18738 - Add SECURITY.md policy file #18766 - linux: batch DMU reads of non-resident pages in mappedread() #16031 #18741 - Linux: fix zfs_write() infinite loop on unfaul _[Truncated at 4000 characters — full notes: https://github.com/openzfs/zfs/releases/tag/zfs-2.3.9]_