Recent OpenZFS work, by @robn.
(Summary by the AI ๐ค, read more about that).
- Current Focus Areas
- Pull requests: Active ยท Recently completed
- Day journal
Current Focus Areas
-
Mounts / dataset mount state โ A colleague’s report of bind mount failures after
zfs recv -Fopened into structural issues with how ZFS manages dataset mount state. Broader work is expanding into mounting infrastructure:mountcache-initialisolates the initial mountcache infrastructure (the/proc/mountinfoparser, dual-tree cache,zfs_is_mountedintegration) as a discrete unit being prepared for PR submission. A newlibmountbranch is reworking ZFS userspace mount management to use Linux’slibmountlibrary,kernel-mount-directreworks snapshot mounting inzfs_ctldir, andfs-context-upliftis pursuing fullinit_fs_contextmount API adoption. -
Linux kernel support policy โ The
fs-contextadoption work raised a question about the minimum kernel version requirement (currently 4.18/RHEL8-derived): 4.18 was never an LTS kernel, doesn’t compile with modern toolchains, and doesn’t reflect actual support commitments. #18295 proposes removing the version gate in favour of configure checks, with supported distros documented in the README instead.
Pull requests
Active
| PR | Title | Status |
|---|---|---|
| #18295 | Linux: remove minimum version requirement | awaiting review |
| #18296 | libzfs: mnttab cleanup | awaiting review |
Recently completed
| PR | Title | Status |
|---|---|---|
| #18281 | libzpool: lift zfs_file ops out to separate source file | merged 6 Mar |
| #18285 | Separate SIMD compile checks for userspace and kernel | merged 5 Mar |
| #18259 | More consistent use of TREE_* macros in AVL comparators |
merged 4 Mar |
Gone Cold
| PR | Title | Last activity |
|---|---|---|
| #18205 | recv_begin_check: ensure no mounts before destroying destination | 25 Feb |
| #18207 | mountpoint_cmp: flatten mountpoint= parameter before sorting |
18 Feb |
Day journal
9 Mar (Monday)
- Linux support โ Opened #18295 โ remove minimum Linux kernel version requirement; prefer configure checks over a version gate; document actually-supported distros and kernels in README instead
- Mounts โ Opened #18296 โ libzfs mnttab cleanup; pulls
libzfs_mnttab_*functions intolibzfs_mnttab.c, general modernisation (SPL mutexes, alloc/free helpers), removes unused legacystruct extmnttabandgettmntany(); preparatory cleanup carried across every mount management prototype, sent separately since it stands on its own - Mounts โ Commented on #18296 in response to @lundman โ sketched design direction for mount abstraction: opaque mntent object representing a dataset/mountpoint pair, with OS-specific methods (mount, unmount, property changes, sort); libmount wrapping on Linux, direct implementation on FreeBSD/Windows; libzfs and tools would only ever interact through the abstraction
- Mounts โ Started
libzfs-mnttab-libmountbranch โ WIP initial shape of OS-specific mount API, integrating mnttab cleanup changes with the libmount work into a new branch; first cut at the opaque object abstraction described in the design comment - Reviewed and approved #18290 โ FreeBSD: improve dmesg kernel message prefix (concussious); noted Linux mixes
ZFS:andzfs:prefixes too, consistency wouldn’t hurt - Closed #17351 โ rename
zedbinary tozfs-zed; no compelling case made; resolving namespace clashes in a global shared namespace is out of scope
8 Mar (Sunday)
- Linux support โ Started
linux-no-minimumbranch โ prompted byfs-contextadoption work; investigated minimum kernel version requirement; found 4.18 minimum is RHEL8-derived, no longer compiles with modern toolchains, and doesn’t reflect actual support commitments
7 Mar (Saturday)
- Mounts โ Split
mountcache-initialbranch offmountcacheโ isolating the initial mountcache infrastructure (the/proc/mountinfoparser, dual-tree cache,zfs_is_mountedintegration) as a discrete unit for submission as a PR
6 Mar (Friday)
-
Commented on #17000 โ design discussion on
zfs create -ppsyntax for creating parents withcanmount=no; suggested-O canmount=noas a general “properties for implicitly-created parents” alternative (intelfx); conceded it was a stretch; behlendorf resolved to proceed with-pp(intelfx) -
#18281 (libzpool: lift zfs_file ops out to separate source file) merged by behlendorf
5 Mar (Thursday)
-
SHA-512 / SIMD build โ Opened #18285 โ separate SIMD compile checks for userspace and kernel toolchains;
HAVE_SIMD()selector macro picks the right set at compile time; eliminates Ubuntu 24.04 builder failures whereobjtoolrejects SHA512EXT in the kernel module even though the host compiler supports it -
#18285 (separate SIMD compile checks for userspace and kernel) approved by behlendorf and directly applied
4 Mar (Wednesday)
-
SHA-512 / SIMD build โ Investigated behlendorf’s report of Ubuntu 24.04 build failure in #18233; diagnosed as toolchain/kernel mismatch: compiler supports SHA512EXT but
objtoolin the kernel rejects it; responded with intent to fix properly; startedsimd-configbranch โ refactoring SIMD feature detection to test against both host and kernel toolchains separately -
Opened #18281 โ split
zfs_file_*ops out oflibzpool/kernel.cinto a newlibzpool/zfs_file_os.csource file; cleanup requested by @lundman to ease porting work (merged 6 Mar) -
#18259 (more consistent
TREE_*macro use in AVL comparators) merged by behlendorf -
#18281 (libzpool: lift zfs_file ops out to separate source file) approved by lundman
3 Mar (Tuesday)
-
Mounts โ Created
libmountbranch โ WIP: reworking ZFS userspace mount management to use Linux’slibmountlibrary; detect and link libmount, initial mount/unmount through it,mnttab_cacheremade as a libmount wrapper,zfs_iter_mountedreimplemented over mtab -
Responded to amotin’s review nits on #18259 โ removed unneeded
lvb != rvbredundancy (good catch); defended belt-and-suspenders wrapping ofzbookmark_compare()(AVL comparators must return -1/0/1, non-AVL functions could break at distance if changed); pushed updated branch -
#18259 (more consistent
TREE_*macro use in AVL comparators) reviewed by amotin with nits
2 Mar (Monday)
- Commented on #18259 โ responded to amotin’s Clang disassembly feedback; pushed rebase to master with
||โ|inzfs_refcount_compareto eliminate extra branch (tradeoff: load instead, on same cacheline); noted potential for separate search vs insertion comparator as a future idea
27 Feb (Friday)
- Mounts โ Created
fs-context-upliftbranch โ WIP: beginning fullinit_fs_contextmount API adoption, next step following #18260 - Commented on #18259 โ posted annotated disassembly showing macro changes produce identical codegen in kernel and userspace builds; noted
spa_mapping_key_compare()as another candidate for the same treatment
26 Feb (Thursday)
- #18233 (SHA-512 via Intel SHA512 extension) merged by behlendorf
- #18260 (prefer
fs_contextmount API when available, groundwork for fullinit_fs_contextadoption) merged by behlendorf
25 Feb (Wednesday)
- Mounts โ Continued progress on
mountcachebranch: built out core mountcache infrastructure โ alloc/free, locking (rrwlock),/proc/mountinforefresh, dual-tree lookup (by dataset and by mountpoint), integrated cache intolibzfs_handle_t, wired upzfs_is_mountedto use it; then filtered non-ZFS mount entries out of cache, generalised foreach iterator - SHA-512 performance โ Responded to review comment on #18233 โ clarified
0.00 CPBvalues insha2_testoutput when the CPU MHz argument is omitted; not a regression - SHA-512 performance โ Posted performance results on Core Ultra 9 285K VM for #18233: sha512ext at 1.82 CPB vs avx2 at 3.18 CPB (~1.75x faster on Arrow Lake desktop)
- Reviewed and approved #18261 โ remove deprecated Fedora 41 from CI (tonyhutter)
24 Feb (Tuesday)
-
Linux 7.0 compat โ Commented on #18216: confirmed full ZTS pass on 7.0-rc1; maintainer flagged
init_fs_contextfull adoption as a 2.5 goal -
SHA-512 performance โ Rebased #18233 to master; shared first real hardware test results (Core Ultra 7 258V, ThinkPad X1 gen 13): sha512ext hashes 1GiB in 205ms vs avx2 at 945ms โ ~4.6x faster; in-kernel test to follow
-
Opened #18259 โ more consistent use of
TREE_CMP()/TREE_ISIGN()/TREE_PCMP()macros in AVL comparators; ZTS pass on Linux; notes a few curious constructions worth discussing (merged 4 Mar) -
Linux 7.0 compat โ Opened #18260 โ prefer new
fs_contextmount API when available (compiles back to 5.2), inverting the 7.0 compat shim check; sending to CI to verify support range before fullinit_fs_contextadoption (merged 26 Feb) -
#18216 (Linux 7.0 compat:
blk_queue_nonrot,posix_acl_to_xattr, legacy mount API removal) merged by behlendorf -
#18233 (SHA-512 via Intel SHA512 extension) approved by tonyhutter
23 Feb (Monday)
- Mounts โ Started new
mountcachebranch โ fresh approach to mount caching, starting with an initial/proc/mountinfoparser - Mounts โ Started
kernel-mount-directbranch โ reworkingzfs_ctldirsnapshot mounting to hold avfsmountdirectly in the snapshot entry rather than going through the automount path - Started
superblock-experimentsbranch โ early WIP: reimagining superblock vs inode relationship
22 Feb (Sunday)
- #18215 (
F_SETLEASEcompatibility fix) merged - #18233 (SHA-512 via Intel SHA512 extension) approved by AttilaFueloep; nit about
.bytedirectives inzfs_sha512_transform_sha512ext
20 Feb (Friday)
- #18230 (
zdb --keycrash fix and test harness improvements) merged by behlendorf - #18216 (
blk_queue_nonrot/posix_acl_to_xattr/legacy mount API changes) approved by behlendorf
19 Feb (Thursday)
-
SHA-512 performance โ Responded to two review comments on #18233 โ fixed bugs in cpuid detection logic caught by reviewer; pushed
sha512ext(multiple iterations) -
SHA-512 performance โ Fixed
$NFawk bug; pushedsha2-test-all-correct(final) -
Mounts โ Commented on #18205 โ investigated full unmount/remount approach; concluded it needs more work; PR left as safety-check only for now
-
Mounts โ Created
mnttab-cache-highlanderbranch (WIP: mount table caching) -
#18232 (
sha2_testcorrectness checks for all implementations) merged by behlendorf -
#18216 (Linux 7.0 compat) approved by tonyhutter
18 Feb (Wednesday)
- SHA-512 performance โ Created
sha512extandsha2-test-all-correctbranches - SHA-512 performance โ Opened #18232 โ extend
sha2_testcorrectness checks to all implementations; fix output formatting andget_cpu_freqfor variable-frequency CPUs (merged 19 Feb) - SHA-512 performance โ Opened #18233 โ
icp: SHA-512 via Intel SHA512 extension; tested via Intel SDE with Arrow Lake emulation; requesting community testing on real hardware (merged 26 Feb) - SHA-512 performance โ Pushed
sha512extandsha2-test-all-correctbranches (iteration) - Linux 7.0 compat โ Pushed
setleasebranch; commented on #18215 โ addressed review feedback on commit structure - Mounts โ Commented on #18207 โ discussed canonical vs. use-time normalisation of
mountpoint=; noted cross-OS implications - SHA-512 performance โ Responded to review on #18230 โ leftover error-threading code in
zdb_derive_key()
17 Feb (Tuesday)
- SHA-512 performance โ Created
sha512-avx512branch and pushed โ deleted same day (AVX-512 approach abandoned) - SHA-512 performance โ Created
zdb-load-key-smarterbranch; opened #18230 โ fixzdb --keycrash on unencrypted datasets; fix test harness to catch silentzdbassertion failures (merged 20 Feb)
16 Feb (Monday)
- Linux 7.0 compat โ Pushed
setleasebranch; responded to review on #18215, fixed commit split - Code review: #18222, #18133
15 Feb (Sunday)
- Linux 7.0 compat โ Created
setleasebranch; opened #18215 โ explicitly set.setlease = generic_setleaseto survive removal of kernel fallback in 7.0 (merged 22 Feb) - Linux 7.0 compat โ Pushed
linux-7.0-compatbranch; opened #18216 โ handleblk_queue_nonrotrename, newposix_acl_to_xattrsignature, legacy mount API removal - Code review: #18214
14 Feb (Saturday)
- Linux 7.0 compat โ Created
linux-7.0-compatbranch
13 Feb (Friday)
- Mounts โ Commented on #18205 โ worked out root cause (outstanding long holds prevent destroy); updated PR description
12 Feb (Thursday)
- Mounts โ Created
flatten-mount-pointbranch; opened #18207 โ flattenmountpoint=parameter before sort inmountpoint_cmp, fixing mount ordering when trailing slashes present - Mounts โ Commented on #18205 responding to CI failures
11 Feb (Wednesday)
- Linux 6.19 compat โ Approved #18197 META update to mark 6.19 support (tonyhutter) โ merged; 6.19 work now fully landed
- Mounts โ Created
no-busy-receive-destroybranch; opened #18205 โ abortzfs recv -FwithEBUSYwhen dataset has outstanding bind mounts
9 Feb (Monday)
- Linux 6.19 compat โ Confirmed ZTS run passed on 6.19 release day; #18053 effectively complete
- Opened and merged #18189 โ AUTHORS update