** rc15
- Fixed a BSOD (MEMORY_MANAGEMENT) that could occur running .exe files directly from a ZFS volume, caused by a Valid
Data Length race during cached writes. - Fixed data corruption during large downloads to a ZFS volume (e.g. LM Studio model downloads) —
FSCTL_QUERY_FILE_REGIONS was reporting invalid data regions incorrectly, and several related races/deadlocks in the
cached-write fast path (fastio_write) under concurrent writers have been fixed. - Fixed a second, related MEMORY_MANAGEMENT BSOD that could occur when a file was reopened while another handle
already had it memory-mapped. - Fixed filenames being mangled to the wrong case when a pool is mounted to a folder (reparse point) instead of a
drive letter. - Fixed pool mount failures when Driver Verifier is enabled.
- Fixed partition number (dki_partition) always reporting 0 on Windows.
- Healed pre-existing non-power-of-2 block sizes that could otherwise cause issues when a file's block size grows.
- Fixed several bugs in zfsinstaller found during code review.
- Fix BSOD in shani benchmark at boot
** rc14
- Pageout write stalls in rangelock
- panic exceptions were masked
- Unmount fixes, cause finally known of poor unmount
- Change condvar to be posix compliant in mutex_exit -> cv_broadcast cases
- Setting mountpoint would compute wrong path
** rc13
- Previous Versions (VSS) fixes with automounts, Windows Server 2025 and more.
- ZIL replace BSOD fix
- Fix snapshot mounts, browsing
Noticed today that creating a new pool on an uninitialized disk, then exporting it makes the pool vanish. Not show in "import" scan. Creating the pool again, with identical command, and export import works.
Will probably go to rc14 quicker for this reason.
** rc12
a lot of big changes, test calmly
- fix MountManager confusion from snapshot mounts
- fix zfs_vss_pool_remove not removing snapshots on pool export
- zfs_vnops_windows_lib: also filter snapshot DCBs from BusRelations
- zfs_vnops_windows_lib: exclude snapshot mounts from BusRelations reply
- zfs_ctldir: return mounted snapshot root vnode from zfsctl_root_lookup
- icp: fix AVX2-VAES GCM path for both kernel and userland on Windows
- icp/simd: add VAES and VPCLMULQDQ runtime detection, enable AVX2-VAES GCM path
- icp: restore ASMABI on aesni_gcm_encrypt/decrypt declarations
- zfs_windows_unmount: rmdir reparse-point directory after deletion
- zfs_windows_unmount: clear DCB mounted_on before DeleteReparsePoint
- zfs_vnops_windows_lib: fix FileStandardInformation size for ADS
- wosix_open: strip trailing backslash from paths
- posix/zutil: fix zpool import -d . from UNC CWD
- zfs_vnops_windows: fix FileStreamInformation for directories
- zfs_vnops_windows: fix fsutil fsinfo volumeinfo storage IOCTL failures
- zfs_vnops_windows: advertise FILE_SUPPORTS_BLOCK_REFCOUNTING when feature is enabled
- zfs_vnops_windows: implement FileLinkInformationEx support
- zfs_vnops_windows: fix git clone (pack file corruption + unlink failure)
- zfs_vnops_windows: implement FSCTL_OFFLOAD_READ and FSCTL_OFFLOAD_WRITE
- zfs_vss/vfsops/vnops: fix three BSODs in VSS snapshot path
** rc11
- Show selected letter in driveletter property
- Delete required admin privileges, fixed
- Unmounted BSOD fix
- Fix mount timeout
- Volume Shadow Copy provider for Previous Versions
** rc10
- Add FileCompressionInformation to enable query of on-disk compressed size
- Do some performance fixes to make things faster
- Hardlink deletion would hide all other hardlinks
- Fix deadlock in write path
- Prioritise HarddiskXPartitionY paths over hack path
- Add import --fix-gpt to correct NumPartitions=9 to NumPartitions=128.
- Fix up condvar and mutex
- Use User credentials, enabling
zfs allowto work. Mix Unix and Windows permissions and hope for the best - OpenZVOL unload bug fixes
- Fix spl_panic() call print and stack
So with Unix created GPT partitions, they use gpt.NumPartitions=9, this Windows does not accept, and Windows
computes gpt.checksum "as if" gpt.Numpartitions==128. So checksum mismatches, and partition table is ignored.
This is why OpenZFS uses path encoding of #partition_offset#partition_length#/path/to/device, saved into vdev->vdev_physpath.
This continues to work.
We added a new zpool import --fix-gpt which will rewrite gpt.NumPartitions=128, and recompute gpt.checksum. Since libefi already reads in the full GPT partition, we need not change anything else, and write it back out. This is left as a user option, as there could be partition usage I am unaware of. Who know if some legacy archs can only use fewer partitions? Or store microcode in the backhalf.
If GPT is written with gpt.NumPartitions=128, Windows will recognise the partitions, and create //?/HarddiskXPartitionY device objects, so we can import those directly, no need for special path. Success. We prioritise //?/HarddiskXPartitionY over #partition_offset#partition_length#/path/to/device - but it will try both.
Let's check for regression in this release.
** rc9
- Fix uninstall process. Recommended to remove previous version, reboot, before install rc9
- Remove UAC requirement
- Attempt elevation on some commands
- Add "zfs allow" feature
** rc8
- Fix thread priority BSOD on large multicore systems in
KiAddThreadToPrcbQueue() - Correct potential arm64 disk IO race in completion.
- Speedup dirlisting, avoid memory fragmentation
- OpenZVOL driver unload fix
- Fix double free of MDL in write path (CrystalDiskMark)
c3ac00aebfe121b78a7806f608a58e76 *OpenZFSOnWindows-debug-2.4.1rc8.exe
1 user managed to download rc8 before it got finalised - grab it again :)
** rc7
- Fix blake3 BSOD
- Internal: automatically populate symstore for builds
- Internal: fix github CI for minimal build, disable spdxcheck
** rc6
- Fix write crash due to signed enum
This release we feel some confidence in.
** rc5
- Fix boot crash - ULONG tunables accessed 64bit
** rc4
- Rewrite the Delete file/dir framework
- Fix Events notifcation for Explorer progress [1]
- Fix BSOD in delete print
- Fix zdb
[1] I have noticed that sometimes Explorer does not update Progress when deleting with recycle.bin. It says "calculating"
the whole time, and gets removed when deletion completes - appearing as if frozen.
** rc3
- Many BSOD cases due to unsigned enum in upstream
** rc2
- fix file based pools BSOD
- fix reparseparse/junction deletion (will affect mounts)
** rc1
Synced up with upstream for openzfs-2.4.1 -
This is a very large list of commits:
https://github.com/openzfsonwindows/openzfs/commits/zfs-Windows-2.4.1-release/?since=20260116
It would seem file-based pools will not work: 5632ca6