Hello from ZFS Town! It’s Friday, 6 June 2025 and I’m your host, Rob Norris.
NOTE
hello
Links
Introducing ZFS AnyRaid, Sponsored by Eshtek — HexOS
At the beginning of this year, we made the decision to invest a substantial chunk of capital to support an open source project for which we have great personal interest. ZFS AnyRaid will give users the ability to mix different sized drives in a pool, a highly-requested feature since our la
Upstream activity
#17280 zcp: get_prop: fix encryptionroot and encryption
@snajpa 2025-04-27-2025-05-28 closed
#17367 zfs_cmd
: reorganise zfs_cmd_t
to match original size
@robn 2025-05-22-2025-05-28 closed
2aa3fbe761 extended
zinject_record_t
, and in doing so inadvertently extendedzfs_cmd_t
, which broke compatibility with userspace tools without the change.
#17372 Only interrupt active disk I/Os in failmode=continue
@pcd1193182 2025-05-23-2025-05-28 closed
failmode=continue is in a sorry state. Originally designed to fix a very specific problem, it causes crashes and panics for most people who end up trying to use it. At this point, we should either remove it entirely, or try to make it more usable.
#17379 Add FreeBSD posix_fadvise support
@amotin 2025-05-26-2025-05-29 closed
See #13694 (née #9807) for motivation and context. The present PR is for feature parity on FreeBSD.
#17381 events: include zio type in IO error reports
@robn 2025-05-27-2025-05-30 closed
I am making more and varied IO shapes that fail aggressively. This patch is helping me!
#17382 zio_add_child: collapse into a single function
@robn 2025-05-27-2025-05-31 closed
In my work I’m often hooking up different things to zios, and changing in both places is easy to miss. The only difference is the locking, and that’s easy enough to handle with a boolean.
#17383 ZVOL: Comment platform-specific empty functions bodies on FreeBSD side
@fuporovvStack 2025-05-27-2025-05-28 closed
Resolve some XXXs.
#17384 ZVOL: Make zvol_inhibit_dev module parameter platform-independent
@fuporovvStack 2025-05-27-2025-05-29 closed
Unify ZFS kernel module parameters between Linux and FreeBSD.
#17385 ZVOL: Make zvol_prefetch_bytes module parameter platform-independent
@fuporovvStack 2025-05-27-2025-05-31 closed
Unify ZFS kernel module parameters names between Linux and FreeBSD.
#17386 ZVOL: Make zvol_volmode module parameter platform-independent
@fuporovvStack 2025-05-27-2025-05-31 closed
Unify ZFS kernel module parameters names between Linux and FreeBSD.
#17388 zio: add separate pipeline stages for logical IO
@robn 2025-05-28- open
The “logical” IO responsible for farming work out to the vdevs goes through the
VDEV_IO
stages, even though it does no IO itself, does not have a vdev set, and is not a “vdev” child IO.This means the
VDEV_IO
stages need special handling for this particular kind of IO, some of it totally irrelevant to real vdev IO (eg config lock, retry, etc). It also leads to some confusing asymmetries, eg the DVA throttle is held in the logical, and then released in pieces in the children.(I can elaborate on what I’m doing if more justification is needed, but I’m hopeful this stands on its own as a good cleanup).
#17391 Improve allocation fallback handling
@amotin 2025-05-28-2025-05-31 closed
Created a pool with very small dedup vdev and observed DDT leaking to special vdev. Reduced special vdev size and observed further leaks to normal vdev.
#17392 zfs-2.2.8 patchset
@tonyhutter 2025-05-28- open
Support EL9.6
#17393 Linux 6.15 compat: META
@tonyhutter 2025-05-28-2025-05-28 closed
Update the META file to reflect compatibility with the 6.15 kernel.
#17394 abd_os: move headers from libzpool to libspl
@robn 2025-05-29-2025-05-30 closed
5b9e695 added specific userspace versions of
abd_os.h
andabd_impl_os.h
for libzpool. However,abd.h
andabd_impl.h
, which include them, are packaged withlibzfs
, so other programs building againstlibzfs
can fail to build, either because the headers aren’t installed, or because they aren’t on any standard include path.
#17395 Set spa_final_txg in spa_unload()
@amotin 2025-05-29-2025-05-30 closed
I’ve noticed that after some dedup tests system reboot ends up in assertion about
ms_defer
tree not empty. It seems to be caused by DDT flushing still freeing some blocks while ZFS trying to reach a final steady state due tospa_final_txg
, while being set byspa_export_common()
on pool export, is not set whenspa_unload()
is called byspa_evict_all()
on system reboot/shutdown. Settingspa_final_txg
inspa_unload()
fixes this issue.
#17396 linux/zvol_os: don’t try to set disk ops if alloc fails
@robn 2025-05-29-2025-05-30 closed
Just a trivial crasher noticed during experimenting.
If the kernel fails to allocate the gendisk,
zvo_disk
will beNULL
, and derefencing it will explode.
#17397 ZTS: Add AlmaLinux 10
@mcmilk 2025-05-29-2025-05-30 closed
[no summary]
#17398 ZIL: “crash” the ZIL if the pool suspends during fallback
@robn 2025-05-29- open
Currently, if something goes wrong inside the ZIL,
zil_commit()
it will fall back to a full txg sync, which provides the same semantics, just slower. If pool suspends,txg_wait_synced_flags()
will block until the pool resumes. The end result is that syncing ops likefsync()
block regardless of howfailmode=
is set.Since #17355,
txg_wait_synced_flags()
can bail out if the pool suspends while waiting. We can use this feature to not blockzil_commit()
if the pool suspends, but instead unwind and return an error. Once wired back through, this allowsfsync()
and friends to returnEIO
rather than blocking forever.This is an obvious good, as it allows applications to take alternate action when the pool suspends, rather than just waiting forever.
(Further information in my BSDCan 2024 talk “Why fsync() on OpenZFS can’t fail, and what happens when it does”, if you like that sort of thing).
#17399 vdev_disk: remove classic IO submission
@robn 2025-05-29-2025-05-30 closed
Since it was disabled for 2.3, there’s been no confirmed sightings of strange IO errors, misalignments or related shenanigans. Absence of evidence and all that, but I’d rather fix bugs in the new code than in the old.
“It isn’t hubris until he’s failed.” – Chrisjen Avasarala
#17400 Skip faulting removed vdevs and clarify removal status
@ixhamza 2025-05-29-2025-05-30 closed
Fixes a race condition where
vdev_remove_wanted
may be set after probe initiation, causing redundant fault and removal events. Clarifies theZPOOL_STATUS_REMOVED_DEV
message, which previously implied that removal was always manual.
#17401 Linux build: always use objtool
@AttilaFueloep 2025-05-29-2025-05-30 closed
Closes #17364
#17403 CI: Retire Ubuntu 20.04 builder
@behlendorf 2025-05-30-2025-05-30 closed
Keep the CI green, retire builders which are EOL.
#17405 ZVOL: Return early, if volmode is ZFS_VOLMODE_NONE on FreeBSD side
@fuporovvStack 2025-05-30- open
Return early, if volmode is ZFS_VOLMODE_NONE on FreeBSD side
#17406 Rename zvol kernel module parameters sysctls on FreeBSD side
@fuporovvStack 2025-05-30-2025-05-30 closed
Make modules parameters names different for FreeBSD and Linux.
#17407 Make rewrite use Uncached I/O
@amotin 2025-05-30-2025-05-31 closed
Rewrite is a one-time/rare bulk administrative operation, which should minimally affect payload caching. Plus some avoided memory copies in its data path allow to significantly increase its speed. I was thinking about this from the beginning, but the rewrite and Uncached I/O control patches landed about the same time.
My tests show reduction of time to rewrite 28GB of uncompressed files on NVMe pool from 17 to 9 seconds and minimal ARC usage.
#17408 CI: Retire Fedora 40 builder
@behlendorf 2025-05-30-2025-05-31 closed
Keep the CI green, retire builders which are EOL.
#17409 Include class name into struct metaslab_class
@amotin 2025-06-01- open
With increasing number of metaslab classes it can be helpful for debugging to know what we are looking at.