
Category: ZFS
-

Changes since RC1
- 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
-
Completely supports Kernel 6.10 and early phase of 6.11.
It also provides support for FreeBSD 12.2-RELEASE and newer.

-
“OpenZFS 2.2.5 is now available as the newest stable update to this open-source ZFS file-system implementation for Linux and FreeBSD systems.
OpenZFS 2.2.5 adds official support now for Linux 6.9 while continuing to retain support back through Linux 4.18 kernels. Yes, Linux 6.10 is out as stable now for the past three weeks and there are some Linux 6.10 compatibility patches in OpenZFS 2.2.5 but apparently not yet enough to claim full support. On the FreeBSD side there is support with FreeBSD 12.2 and later.
Besides supporting Linux 6.9 and some Linux 6.10 bits, OpenZFS 2.2.5 brings dozens of various bug fixes. There is improved dnode hashing, cleaning up buffer re-compression in L2ARC, various libspl fixes, various ZTS fixes, and other fixes scattered throughout.”


-
“The current implementation of zvol uses a single taskq, leading to lock contention under heavy load and consequently decreased throughput. Introducing multiple taskqs and implementing a switch based on IO offset can alleviate this lock contention, thus improving overall throughput.”

https://github.com/openzfs/zfs/pull/15992
https://github.com/openzfs/zfs/commit/99741bde59d1d1df0963009bb624ddc105f7d8dc
-

“OpenZFS 2.2.3 is heavy on fixes plus now has support for the Linux 6.7 kernel as well as some preliminary Linux 6.8 kernel compatibility… The Linux 6.8 support isn’t yet official and still prone to breaking before the stable v6.8 in March, but at least some initial elements are here. OpenZFS support going back to the Linux 3.10 kernel is maintained as well as for FreeBSD 12.2 and newer.”

-
Fast Deduplication was developed by Klara Inc and iXsystems and offers up to x20 greater performance.
“With the introduction of Fast Dedup, there have been several major innovations including:
- The size of metadata is now dynamically sized to fit in either RAM or dedicated flash devices to avoid hitting the performance penalty wall.
- The metadata structure has been completely re-engineered to enable efficient updates using a log append process, greatly improving performance for large updates such as deletions.
- The dedup table will favor dedup-able data and prune blocks that show no dedup potential.
- Combining metadata improvements with properly configured storage, including dedicated metadata flash devices, will improve the sustained dedup performance by over an order of magnitude for larger systems.”

Some users are sceptical about potential data loss issues, as with any filesystem technologies..


-
A bug caused the “arc_prune” thread to consume 100% of a CPU even on idle and impacting workloads running on the system.
https://www.freebsd.org/security/advisories/FreeBSD-EN-23:18.openzfs.asc
-
Ed Maste, the Director of Project Development for The FreeBSD Foundation, sent the following email in the freebsd-stable mailing list, regarding a new ZFS issue. It appears that it affects earlier versions of OpenZFS and it is not related to block cloning.

Dear FreeBSD community,
We want to bring your attention to a potential data corruption issue
affecting multiple versions of OpenZFS. It was initially reported
against OpenZFS 2.2.0 but also affects earlier and later versions.This issue can be reproduced with targeted effort but it has not been
observed frequently in real-world scenarios. This issue is not related
to block cloning, although it is possible that enabling block cloning
increases the probability of encountering the issue.It is unclear if the issue is reproducible on the version of ZFS in
FreeBSD 12.4.A short term workaround is available for FreeBSD 14.0 and 13.2 by
setting the vfs.zfs.dmu_offset_next_sync sysctl to 0:echo vfs.zfs.dmu_offset_next_sync=0 >> /etc/sysctl.conf
sysctl vfs.zfs.dmu_offset_next_sync=0
The workaround may result in inaccurate reporting of file holes in
sparse files, reintroducing OpenZFS issue 6958[1]. See the ZFS(4) man
page for more information on this setting.The workaround does not deterministically prevent the issue but does
drastically reduce the likelihood of encountering it.For more information, see OpenZFS issue 15526[2] and OpenZFS pull
request 15571[3]. FreeBSD bug report PR 275308[4] is open to track the
FreeBSD erratum update which will bring in the fix, after it is
committed to OpenZFS. Please check the FreeBSD PR regularly if you are
looking for details on the timeline of the FreeBSD erratum update.We want to assure the FreeBSD community that we are actively monitoring the situation. Thank you for your understanding and continued support.
<https://lists.freebsd.org/archives/freebsd-stable/2023-November/001726.html> -

Block cloning bug in 2.2.0 results in data corruption and chunks replaced by zeros !!!
$ file /usr/lib/go/pkg/tool/linux_amd64/* | grep data
/usr/lib/go/pkg/tool/linux_amd64/asm: data
/usr/lib/go/pkg/tool/linux_amd64/cgo: data
/usr/lib/go/pkg/tool/linux_amd64/compile: data
/usr/lib/go/pkg/tool/linux_amd64/covdata: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, Go BuildID=xHCzRQtrkEP-Bbxql0SF/zxsofCJFlBoPlUclgwBG/TrsgK6SKiY4q6TIhyBjU/UwcISvZgqfQaEf3Kr_Tq, not stripped
/usr/lib/go/pkg/tool/linux_amd64/cover: data
/usr/lib/go/pkg/tool/linux_amd64/link: data
/usr/lib/go/pkg/tool/linux_amd64/vet: data$ hexdump /usr/lib/go/pkg/tool/linux_amd64/compile
0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
0000fa0 0000 0000 0000 0000 0000 0000 5a41 3447
0000fb0 336a 3933 5a49 4f2d 6641 6342 7a6d 3646
0000fc0 582f 5930 5a4d 6761 5659 6f34 6d39 4130
0000fd0 4957 6555 2f67 686d 6a63 6675 5976 4e6a
0000fe0 346c 3070 5157 494e 5f41 5a2f 336d 6342
0000ff0 4e6d 4a4f 306c 4277 4a72 774d 4d41 006c
0001000 0000 0000 0000 0000 0000 0000 0000 0000
*
0ac9280 5a41 3447 336a 3933 5a49 4f2d 6641 6342
0ac9290 7a6d 3646 582f 5930 5a4d 6761 5659 6f34
0ac92a0 6d39 4130 4957 6555 2f67 686d 6a63 6675
0ac92b0 5976 4e6a 346c 3070 5157 494e 5f41 5a2f
0ac92c0 336d 6342 4e6d 4a4f 306c 4277 4a72 774d
0ac92d0 4d41 006c 0000 0000 0000 0000 0000 0000
0ac92e0 0000 0000 0000 0000 0000 0000 0000 0000
*
1139380 0000 0000 0000 0000 0000
1139389As a workaround block cloning is disabled by default !!! : https://github.com/openzfs/zfs/commit/479dca51c66a731e637bd2d4f9bba01a05f9ac9f


A complete list of changes and fixes can be found in the respective git repo: https://github.com/openzfs/zfs/releases/tag/zfs-2.2.1









