raid56 stripe_alloc -- reference: harnesses, artifacts, results, and where they live

Last reverified 2026-09-15; review round 1 results added 2026-09-16 04:10. Three hosts: aigendu (the share host: kernel trees, harness repositories, forensics, Claude's memory), bhive (test VM, the FAIL fault model, kernel build master) and dhive (test VM, the CORRUPT fault model, benchmark host). Companion documents: TEST-CATALOG.md (every test campaign, what it proved), README.md (the Stage 0 replay method), the octopus test plan (~/share/raid56-wh-harness/6.18-octopus-test-plan.md) and the cover letters (covers/ on zygo-misc-next-zb64).

Conventions that apply everywhere below: push files to the VMs with rsync (atomic rename), never scp/cp; scripts arrive 0644, so chmod +x locally first; launch long VM payloads detached (setsid nohup ... &), never through systemd-run; confirm a launch with pgrep and by its next observable step; a bare sync on a VM stalls for minutes draining the virtiofs share -- use sync -f <mnt>; keep loop images on /mnt/wh or /mnt/linux, never /var/tmp or /; clean /mnt/wh leftovers before a suite (preflight needs 20-25 G free); after every VM reboot check /etc/cron.d and pgrep for stale launchers.


1. Hosts

host role access notes
aigendu share host; everything under ~/share is a slow virtiofs/NFS-style share (avoid worktree-heavy git ops) local Claude job scratch: ~/.claude/jobs/<job>/tmp (ephemeral); memory: ~/.claude/projects/-home-aigendu-share-linux/memory/
bhive test VM, FAIL model (dm-error member), kernel build master, 8 CPU / 15 G ssh root@bhive; serial console port 23, gdb stub 24 (qemu on the VM host) /mnt/linux 88 G LV (kernel trees), /mnt/wh 104 G LV (test volume), bigtest 176 G (Zygo's, untouched), folio_repro_0..7 10 G LVs (soak rig), /root/share = bhive<->dhive shared virtiofs (NOT aigendu's ~/share)
dhive test VM, CORRUPT model (dm-flakey drop_writes + rotating garbage), benchmarks, 8 CPU / 11 G ssh root@dhive; console 23, gdb 24 clone of bhive (2026-08-07), VG renamed dhive-vg; /mnt/linux 181 G, /mnt/wh 150 G, bench 16 G LV (raw-LV A/B); a dhive hang can be qemu-level, cross-check against bhive

Port triage: 22 dead but 23/24 open = guest wedged/booting, read the console; all three dead = host or LAN. A guest panic leaves 23 answering.

2. Kernel trees, lanes and refs (aigendu)

One git object store, several worktrees (git worktree list in ~/share/linux):

path checked out purpose
~/share/linux zygo-linus-master-zb64 (keep it there) linus/master lane; all lane git is checkout-free (temp GIT_INDEX_FILE, merge-tree --write-tree, commit-tree, update-ref)
~/share/linux-stable-6.18 detached 6.18 lane worktree (production lane)
~/share/linux-misc-next detached misc-next lane worktree (submission lane); port-scratch/ = 2026-08-19 port notes, diverged-*.txt
~/share/kbuild-linux wip/slow-path-v2 stale build worktree from the #116 liveness-fix build; historical

Branch naming per lane: LANE/topics/<topic> (patch series), LANE/testing (octopus merge of every topic on the lane base), zygo-LANE-zb64 (testing + Zygo's personal/config commits = what gets built). 6.18 lane refs have the 6.18/ prefix, misc-next misc-next/, master none. Priorities: 6.18 = production, misc-next = submission (covers/ lives there), master = formality and may drift (not given the raid6 fix).

Lane state 2026-09-17:

lane base topics testing zb64 built as
6.18 stable/linux-6.18.y v6.18.52 (8f3741e6feb0), rebased 2026-09-16 11 (stripe-alloc 73 = 40 (the series + v1 refusal + quiesce; the 6.18-only defrag NO_FLUSH commit was dropped at the rebase for Filipe's backport) + the 25-commit ENOSPC/relocation/reclaim chain (v2, landed 2026-09-16) + 7 review-round-1 fixes + b72dc2da property/cache symmetry (2026-09-17); raid56-fixes 10 incl. RO-repair guard; balance-resume 1; delalloc-fixes 2; deadlock-fixes 3; compress-fixes; dedupe-fixes; backref-hang; dev-extent-defrag; prealloc-size; raid6-fixes 2 = the x1 SIMD fix + the DO-NOT-UPSTREAM raid6_pq.algo= pin, kept on the topic 2026-09-17 so it survives rebases) f33be9b7d62d ddbba0a6148b bhive #215 (as cand54 eb742bb0de84, tree-identical); the previous tip 4ec82e513870 = bhive #214 / dhive #77, and dhive #78 = the same tree with KASAN
misc-next kdave misc-next 7c6b5acf3cc7 (rebased 2026-09-16) 11 (stripe-alloc 39 -- still the pre-chain series: the one-pass port of chain v2 + round-1 fixes + the UAF fix + the property/cache fold is pending; raid56-fixes 9; balance-resume 1; same others; raid6-fixes) 00d7c119 e1e3534fe578 (= 25f61681b3b7 built as dhive #76, + two covers commits) dhive #76 (build check only)
master v7.2 + merge window (98f21c54f995, 2026-08-19) 8 194a233b4e5b 226f1e0f0f3b --

Other ref namespaces:

Checkout-free lane tooling: scripts/lane/ in this repository (README there): lanetopic.sh (fast-forward a topic + re-make the octopus + replay zb64), lanerewrite.sh, laneretag.sh, lanefix.sh, laneaddtopic.sh (new one-patch topic), chainv2.sh (rebuild the ENOSPC chain with a drop/fold plan), rebuildtopics618.sh, enable-quiesce.py (blob-edit example), kloc.py (code-line deltas), blobedit.py (exact-string source edits on a ref -> commit, how the round-1 fixes were written). Every script backs refs up under refs/backup/ and prints a content oracle -- read it before trusting a result.

Upstream-ready patch files: ~/share/patches/2026-09-12-misc-next/{delalloc-fixes,raid56-rbio-fixes}/ and ~/share/patches/2026-09-14-raid6-x1/ (both path variants + SEND.txt).

3. Kernel builds on the VMs

4. Harness repositories (aigendu -> VMs)

repository (aigendu) deployed to contents
~/share/raid56-wh-harness (git; canonical) /root/harness on both VMs (bhive is a git remote of it, push-to-deploy; dhive's clone points at bhive; rsync the whole dir after edits -- to BOTH VMs) Stage 0 replay matrix (setup-replay-log.sh, run-workload.sh, replay-matrix.sh, verify.py), the drivers (run-rebase-validation.sh, run-6.18-validation.sh, run-r6c3-validation.sh, run-geometry.sh), every directed reproducer, TEST-CATALOG.md, NOTE-*.md, scripts/ (probes, vm-heartbeat-monitor.sh, lane/), results/ (benchmark CSVs), fixtures/, this file
~/share/raid56-hang-debug (git since 2026-08-23; history before that reconstructed, see its HISTORY.md) /root/raid56-hang-debug on both (rsync) the deadlock/soak rig repro-folio-hang.sh (+ churn_writer.py, deduper.py, ballast), repro-reloc-slice-deadlock.sh, min-dedupe-deadlock.sh, repro-standalone.sh, drgn probes (folio_probe.py, rbio_walk.py), extract_ftrace.sh, profile-claim-test.sh, the two deadlock reports, captures/ (every hang capture)
~/share/vm-scripts (git) /root/*.sh, /root/*.py on each VM (./sync.sh push <host>; pull after a launch) bhive/ (241 files) and dhive/ (155): after-boot launchers, queue-*.sh candidate queues, benches (bench-ab.sh, bench-n-lv.sh, bench-lv-orch.sh), probes (bg-snap.py, run-overlap.py, storm-snap.sh), guards, build58.sh, raid6-3dev-{test.sh,parity.py}
~/share/xfstests (git clone) /root/xfstests on both fsstress at /root/xfstests/ltp/fsstress; dm-log-writes tooling built from it
~/share/btrfs-forensics (NOT a git repo; bulk only since 2026-09-17) -- the live serial console logs and one 167 MB boot log; everything else moved into this repo's forensics/ (section 7)
~/share/bees-project -- bees work; /root/bees* on the VMs and the bees logs under /root/share/root-* belong to it, not to this project

5. Test suites and drivers

Run on each VM as root; every driver writes a live report.md plus per-stage logs into a timestamped directory (.aborted suffix if it died early).

driver what env output
run-rebase-validation.sh the regression plan: sanity stage0 fsync directed octopus soak (STAGES=, LIST=1, STOP_ON_FAIL=1, BUDGET_SECS=14400, SOAK_SECS=43200, SUT=, VMLINUX=) SUT=/mnt/linux/linux (or /mnt/linux/misc-next) /root/rebase-validation-<ts>/report.md
run-6.18-validation.sh (the octopus acceptance suite, called by the driver's octopus stage) T1-T13 under a fault present for the whole run, passes P1_online / P2_degraded / P3_stock, 6x3 GiB raid5 + spare; ROLE auto from hostname (bhive=FAIL, dhive=CORRUPT); declared expectations: P1/P2 all 13 PASS, P3 FAIL(exp) allowed, T9 SKIP under CORRUPT; meta_buffer spare metadata chunks and a data-sized T6 shrink keep the small geometry from aborting PASSES_RUN=, BUDGET_SECS=, SOAK_SECS=, FILES=, DEV_MB=, CONTINUE_ON_FAIL=1 /root/6.18-validation-report.md (live), /root/6.18-validation.log; the driver copies them into its run dir
run-r6c3-validation.sh raid6 data + raid1c3 metadata coverage: matrix-stock matrix-sa fsync-sa recovery cdev cstripe (R6_STAGES=) -- /root/r6c3-validation-<ts>/report.md, /root/r6c3-validation-latest -> the 2026-08-28 run (symlink not updated since; use the newest dir)
replay-matrix.sh (+ run-workload.sh, setup-replay-log.sh, verify.py) Stage 0: dm-log-writes replay, cut x torn-tail x dropped-device; WH_TAIL_MODEL=entries (harsh, primary committed-data evidence) or barrier (flush-consistent, the only model where degraded criteria are valid); WH_FSYNC_WINDOW, WH_DEGRADED_CONTINUE/REPLAY/STRICT see README.md per-run CSV + summary in the workdir
run-geometry.sh the raid5 3..10 / raid6 4..10 device sweep under three policies (2026-08-01; raid6 rows over raid1 metadata are weak, see r6c3) -- historical
round-1 review tests (2026-09-16) stripe-meta-toggle-test.sh (runtime enable/disable of the property on a live fs with raid56 METADATA: MPROF=raid5/raid6, SMT_MNTOPTS=ssd/ssd_spread/nossd, legacy data extents before the flip, a fill to the metadata edge, then a property-enabled fs disabled and unmounted; pauses the reclaim-regimen service), prealloc-race-test.sh (fallocate storms vs manifest-verified buffered writers at the fill edge), run-meta-fsync-tear.sh + metamix-scan.py (raid56-metadata fsync-window characterization: replay matrix with degraded replay, zero-log fallback, continuation, offline check and the per-stripe tree-block scan; uniform and late-cut passes) MPROF, SMT_, PR_, MT_* /root/smtoggle-*.log, /root/prerace-*.log, /root/meta-fsync-tear-<ts>/
directed stage scripts balance-reclaim-test.sh (liveness-map regression, both profiles/allocators), fill-edge-debug.sh (FE_DEBUG=0), enospc-dataloss.sh (manifest-verified fill to ENOSPC, MODE=fsync/nofsync), enospc-umount.sh, bg-gate-test.sh, scrub-enospc-repro.sh, nocow-strand-test.sh (needs the wip counters, else exit 77), nocow-ro-drain-test.sh, legacy-conversion-repro.sh, punch-hole-warn-repro.sh, stripe-claimable-warn-repro.sh, stripe-warn-sweep.sh, corrupt-{churn,devices,stripe,recovery}-test.sh, rolling-failure-test.sh, old-stripe-test.sh, metadata-recovery-test.sh, stripe-meta-enospc-test.sh, directed-writehole.sh; directed-expected-warns.txt declares the only WARNs a script may raise; exit 77 = SKIPPED -- per-script log in the run dir
soak (raid56-hang-debug/repro-folio-hang.sh) 8 LVs (one removed), optional dm-crypt (SOAK_CRYPT=1), degraded,compress=zstd:3,flushoncommit,stripe_alloc,discard=async, churn/dedupe/snapshot/balance/rm workers, heartbeat + capture on a stall; BACKING=auto/lv/loop CRYPT=, MAX=, VMLINUX= /root/folio-repro.log (the script re-execs into it), captures under /root/share/root-<vm>/folio-capture-* and /mnt/linux/forensics-archive/ (dhive)
benches (dhive) bench-ab.sh LABEL BOOT (arms N non-raid56 / Rfresh / Rfrag / C capacity-at-the-edge, 3 reps), bench-n-lv.sh (non-raid56 on a raw LV, fio with end_fsync), bench-lv-orch.sh / bench-orch.sh (boot alternation lane/chain), fsync-bench*.sh (Zygo's) REPS= /root/bench/results*.csv, summary*.txt, profile-chain.txt (ftrace profile), copies in results/ here
probes raid6-3dev-test.sh / raid6-3dev-parity.py (3-device raid6 write/scrub/degraded read + raw P/Q classifier; the lib/raid6 x1 positive control), raid6-3dev-repro.sh (minimal reproducer, this repo), sys-chunk-rmw-probe.sh (does a raid56 SYSTEM chunk take real write holes: yes), why-rmw*.sh (RMW attribution from tracepoints), stripe-pessimism-measure.sh, rbio-cache-bench.sh, stripe-meta-bench.sh, t5b-writeback-probe.sh, fsync-* forensics -- --
monitors (aigendu, under the Monitor tool; they die at context compaction -- re-arm) scripts/vm-heartbeat-monitor.sh <state> bhive dhive (heartbeat-based: reports LOSS of signal, D-state, taint, progress) and the per-run acceptance monitor generated in the job tmp -- job tmp

6. Results -- where the evidence is

Lane tip 2026-09-17: zygo-6.18.x-zb64 = 22886dbec236 (testing f0f47dd9eb1d), tree-identical to cand54 (refs/wip/cand54/6.18-zb64 = eb742bb0de84, bhive #215): the rebased lane + b72dc2da. Validated: the rebased lane (4ec82e513870, #214) passed the full acceptance on bhive 2026-09-17 (sanity/stage0/fsync PASS, octopus P1/P2/P3 13/13 each, no unexpected failure) and P1/P2 13/13 under KASAN on dhive #78; cand54 passed the directed stage (bg-gate property cases GREEN, balance-resume PASS). Pending candidate: refs/cand/parkref/{topic,testing,zb64} (zb64 5f3b8f082462, rebuilt on the post-knob lane) adds 1459c2b83afb "btrfs: stripe_alloc: hold a reference on parked rbios", the fix for the parked-rbio use-after-free root-caused in forensics/parked-rbio-uaf-rootcause-20260917.md. Built as bhive #217 with KASAN; the lane refs do not move until it is green (candidate made with scripts/lane/candtopic.sh, which is lanetopic.sh without the ref updates). bhive built the pre-re-message commit 8f67cef3e02c; the tree is byte-identical (5e6c05d6fbba), so that run validates the candidate as it stands. The history below is the round-1 candidate sequence.

Current candidate = cand53 (refs/wip/cand53/6.18-zb64 = 6.18 zb64 [lane incl. the landed chain and the SEVEN round-1 fixes] + the raid6_pq.algo= knob), bhive #213 / dhive #74. cand52 (2b724c29822c, bhive #212 / dhive #73) had six of the seven; the seventh (btrfs_free_open_stripe_runs teardown) came from a mount-fail assertion the tear run hit on cand52. cand49 (848031137e86, bhive #209 / dhive #69) was the pre-review candidate: lane + v2 + knob, booted with avx2x1 forced; cand48 = the same without the raid6 fix.

suite host / kernel date result artifact
rebased 6.18 (v6.18.52) full acceptance, FAIL model bhive #214 (4ec82e513870) 2026-09-17 07:03 sanity/stage0/fsync PASS; octopus 39/39 (P1, P2, P3 all 13/13), no unexpected failure; directed FAIL(1) = only the property/option case that b72dc2da fixes (RED control) bhive:/root/rebase-validation-20260916-215858/
rebased 6.18 under KASAN, CORRUPT model (parked-rbio UAF repro) dhive #78 (4ec82e513870 + KASAN) 2026-09-17 P1 and P2 13/13 each, collapsed and default park knobs, NO KASAN report yet; round 2 = P1-only alternating regimes running dhive:/root/kasan-repro-loop*.log, /root/kasan2-loop*.log, forensics/dhive-rmw-listdel-oops-20260916.txt
cand54 = lane + b72dc2da (property/cache symmetry): directed stage bhive #215 (eb742bb0de84) 2026-09-17 09:00 directed PASS: bg-gate property cases all OK ("no cache, never had v1" GREEN, was RED on #214), balance-resume-test PASS (cursor persisted, resume -dvrange=0..N, full chunks below the cursor relocated); promoted as the lane tip bhive:/root/rebase-validation-20260917-071344/, /root/cand54-*.log
cand55 = lane + 1459c2b83afb (parked-rbio refcount fix), KASAN bhive #217 (built from 8f67cef3e02c; that build predates the raid6 knob's promotion, so its tree is the candidate minus lib/raid6/algos.c) 2026-09-17 RUNNING: P1_online CORRUPT at the default park knobs, stopping on a KASAN report, a refcount_t: warning (mis-balanced get/put) or any raid56 WARNING (a leaked park reference); dhive #78 stays PRE-fix as the control bhive:/root/after-boot-kasan-fix.log, /root/kasanfix-loop*.log, forensics/parked-rbio-uaf-rootcause-20260917.md
review round 1: runtime toggle under raid56 metadata cand49 #209/#69 (RED), cand50 #70 (BUG at enable), cand51 #71 (stale remainder), cand52 #212/#73 PASS raid5, raid6, raid5+ssd_spread, raid6+ssd 2026-09-16 RED: disable left counters stale, runs unretired, unmount asserted (btrfs_free_block_groups.cold); cand50: stripe_unusable_scan assertion (free space in the legacy allocation cluster); cand52: all variants PASS, only the enabling transaction's own RMW reports remain bhive:/root/smtoggle-*-cand52.log, dhive:/root/smtoggle-*-cand5[012]*.log; console ~/share/btrfs-forensics/console-logs/dhive-console.log (the cand49 oops, the cand50 BUG)
review round 1: prealloc race cand49, cand51, cand52 (both hosts) 2026-09-16 PASS everywhere (0 drops, 0 lost, 6 rounds) -- the window does not reproduce; the fix stands on inspection /root/prerace-cand*.log
review round 1: directed regression set dhive #71 (cand51) PASS; bhive #212 / dhive #73 (cand52) FAIL(1) each = harness criteria (bg-gate expected the now-silenced uncovered-RMW line; nocow-ro-drain failed on an incidental full-fs COW ENOSPC with the nocow data intact) -- both tests fixed, re-run on cand53 2026-09-16 fixed candidate green; the two cand52 FAILs were test-criterion artifacts, not kernel bugs dhive:/root/rebase-validation-20260916-012505/report.md (cand51 clean)
raid56-metadata fsync-window tear, uniform cuts (early, zero-log fallback) bhive #209 (cand49) 2026-09-16 01:42 raid5 (5 dev): 40 armed, 0 committed damage, 45 continuations clean, degraded replay refused 2/40 (both on the member the scan named, "Failed to recover log tree" -5) -> zero-log: committed intact 2/2, continuation clean 2/2; raid6 (6 dev, adjacent-pair drops): 48 armed, 0 damage, 54 continuations, 0 refusals; no torn stripe held committed blocks; no mixed rows (cuts spread over the fsync stream) results/meta-fsync-tear-cand49-20260916/ (this repo), bhive:/root/meta-fsync-tear-20260916-004215/
raid56-metadata fsync-window tear, 4 passes (raid5/raid6 x uniform/late) bhive #213 (cand53) 2026-09-16 09:02 162 armed cases: 0 committed-data damage, 0 torn stripe held a committed tree block, 0 MIXED (no log+non-log co-location even with commit-landing late cuts); degraded replay refused only 2/40 raid5-uniform (log tears), ro,degraded,rescue=nologreplay recovered the committed set intact 2/2 (825 files); raid6 48/48 + 36/36 replayed; taint 0, no crash (the teardown fix held) results/meta-fsync-tear-cand53-20260916/ (this repo)
raid6+raid1c3 coverage, 7/7 bhive #209 2026-09-15 00:56 all stages PASS, taint 0; matrix stock RED (72 rows, 27/27 controls), stripe_alloc GREEN 43/43 continuations, strict fsync 24 cases zero loss, recovery PASS, cdev stock 10 dropped / sa 0, cstripe stock 570 / sa 0 bhive:/root/r6c3-validation-20260914-220341/
raid6+raid1c3 coverage, 7/7 dhive #69 2026-09-15 00:57 same, taint 0 dhive:/root/r6c3-validation-20260914-220713/
raid6 3-device parity probe both, cand49 2026-09-14 P == D0 and Q == D0 -- parity CORRECT with avx2x1 forced; cand48p (#208) oopses in 35 s /root/raid6-3dev-parity-cand49-avx2x1.log; ~/share/raid56-wh-harness/forensics/bhive-cand48p-forced-avx2x1-3dev-oops-20260914.txt
octopus FAIL model, 12 h soak bhive #207 (cand48) 2026-09-14 03:54 3 loops, P1 13/13 x3, P2 13/13 x3, P3 13/13 + 12/13 + 12/13 (T8 FAIL(exp) = 20 ms expedited-RCU config artifact), no unexpected failure, taint 0 bhive:/root/octopus-cand48-soak.log, /root/6.18-validation-report.md; the first cand48 run bhive:/root/rebase-validation-20260913-052255/ shows directed FAIL(1) (nocow-ro-drain harness false FAIL, fixed) and octopus FAIL(1) (P2 T6 shrink sizing, fixed; rerun 13/13 in /root/octopus-cand48-p2.log)
full acceptance CORRUPT model dhive #68 (cand48b bd22a0f85984) 2026-09-14 14:13 sanity, stage0, fsync, directed, octopus all PASS (12/12 per pass + T9 SKIP) dhive:/root/rebase-validation-20260914-044429/report.md, /root/rebase-validation-cand48c.log
full acceptance CORRUPT model dhive #67 (cand47) 2026-09-12/13 GREEN 12/12/12, taint 0; directed on a healthy fs: fill-edge 0 drops, enospc-dataloss 4x 0 loss, the only allocation-failed dumps reloc=1 dhive:/root/rebase-validation-cand47.log, /root/relocsplit.log
6.18 lane (no chain) acceptance dhive #66 (lane618, eac334bfde47) 2026-09-13 sanity/stage0/fsync PASS; directed FAIL(1) = the expected fill-edge FAIL (chain missing) + nocow-strand SKIP; octopus P1 12/12+skip, P2 11/12 (T8 = the 20 ms RCU config artifact) dhive:/root/rebase-validation-20260912-225712/report.md, /root/rebase-validation-lane618.log
misc-next lane acceptance (7.3-rc2) bhive #17 (1ce0b769fa9d, SUT /mnt/linux/misc-next) 2026-09-13 sanity/fsync PASS; directed FAIL(1) = the lane's expected fill-edge FAIL; octopus PASS: P1 13/13, P2 13/13, P3 7 + 6 FAIL(exp) with a post-T13 stock relocation abort (geometry); enable-quiesce verified in directed bhive:/root/rebase-validation-20260912-185127/report.md, /root/rebase-validation-mn0912d.log, /root/octopus-mn0912-t6exp.log
A/B bench chain (cand48 #68) vs lane (#66) dhive 2026-09-13/14 raid5+stripe_alloc: seq +32%, rand4k +12%, small files +86% (fragmented), balance -24%; capacity: refill after delete-half+balance -23.6% (accepted pessimism), bigfile -1.5%, smallfill +0.9%; non-raid56 quiet-host raw LV: seq +2.2%, seq+fsync -0.4%, dio -5.9% (overlapping), rand 0.0%, CPU 0.2% results/bench-*-20260913.*, results/bench-lv-quiet2-cand48-vs-lane618-20260914.* (final), results/bench-cand48-writepath-profile-20260913.txt; raw on dhive:/root/bench/ (the first A/B, results-cand47probes-vs-lane.csv, is confounded by debug probes -- do not quote)
eb-leak A/B (stock control) dhive cand30 P2_STOCK 2026-09-10/11 25 degraded loops, 0 leaks; stripe_alloc lock-free builds 2/21; suggestive, unresolved (probes retired to 6.18/historic/2026-09-13-cand47-debug) dhive:/root/octopus-cand30-stock*.log; saved journals bhive:/mnt/linux/forensics-2026-09-12/saved-cand3*-leak-journal.txt
r6c3 first runs (6 stages) bhive #151 / dhive #37; #166 / #40 2026-08-28/29 all PASS both hosts /root/r6c3-validation-20260828-2346{40,41}/ (the -latest symlink), /root/r6c3-validation-20260907-* (cand23/24 reruns)
24 h octopus endurance bhive (FAIL) / dhive (CORRUPT), 6.18.42 SUT 2026-08-12/13 4 loops each, all green (12/13 + T9 skip on CORRUPT) ~/share/raid56-wh-harness/forensics/{bhive-FAIL,dhive-CORRUPT}-24h-final-report.md + .log; /root/6.18-validation-report.attempt1.md (the loop-leak attempt)
P3b positive control (pristine 6.18.42) both 2026-08-13 FAIL model: T6 + T12 fail; CORRUPT: T2 + T10 fail -> suite discriminates ~/share/raid56-wh-harness/forensics/p3b/
geometry sweep (raid5 3..10, raid6 4..10, 3 policies, both crash models) bhive 2026-08-01 clean on every load-bearing claim; barrier model 94/94 continuations results/ of the run on the VM at the time (see TEST-CATALOG section 1); raid6 rows weak (raid1 metadata)
corrupt-churn residual A/B bhive #167, dhive #42 2026-09-04/05 stock 360 drops vs stripe_alloc 32 / 37 (~91% cut, NOT zero; unattributed -- open) logs in the run dirs of those dates; NOTE-b-eio-cluster.md
claim-scan CPU A/B dhive (baseline) / bhive (fix) 2026-08-16 1447 us -> 0.8 us per claim, 48 -> 218 files/s raid56-hang-debug/profile-claim-test.sh; forensics in the memory file stripe-alloc-claim-scan-cpu
metadata RMW audit #112 2026-08-05 stripe_alloc alone 174 committed blocks exposed; + stripe_meta 0 stripe-meta-bench.sh; NOTE-metadata-full-stripe-options.md
metadata crash matrix (raid5 data + raid5 metadata) bhive #150 / dhive #34 (fix), then landed #151 / #37 2026-08-27 first full 60-case pass ever (the two abandoned-report paths), then the landed code green on both VM workdirs of that date were recycled; the record is the memory file stripe-alloc-drain-bug and the patch 38 message

Older run directories are under /root/archive-runs/ on each VM; /root/*.log (204 on bhive, 113 on dhive) are queue, after-boot and stage logs named after their candidate (octopus-candNN*.log, rebase-validation-candNN.log, queue-*.log, after-boot-*.out). The launchers that produced them are versioned in vm-scripts.

7. Forensics and records (~/share/raid56-wh-harness/forensics/, in git since 2026-09-17)

Consolidated from ~/share/btrfs-forensics/ on 2026-09-17; only the bulk stays there, outside git: console-logs/{bhive,dhive}-console.log (live serial captures, GBs, read by the heartbeat monitor) and bulk/dhive-rbio-cache-oops-2026-09-04/dhive-boot-1-kernel.log (167 MB). The current test plan is ~/share/raid56-wh-harness/6.18-octopus-test-plan.md (rev 5); the rev-4 text is forensics/history/.

path (under forensics/) what
history/6.18-octopus-test-plan-rev4.md the previous plan text (rev 3 + rev 4 addenda); superseded by the top-level rev 5
(~/share/btrfs-forensics/console-logs/) the live serial console captures stay OUTSIDE git; dhive-cand45-p3-rbio-uncache-bug-2026-09-12.txt (the plug-list BUG_ON)
raid6-x1-single-data-disk-20260914.md, bhive-cand48-r6c3-raid6-syndrome-oops-20260914.txt, bhive-cand48p-forced-avx2x1-3dev-oops-20260914.txt the lib/raid6 x1 bug: mechanism, original panic, positive control
dhive-rbio-cache-oops-2026-09-04/ the rbio cache-steal UAF (dmesg, octopus report at crash time; the 167 MB boot log is in btrfs-forensics/bulk/)
dhive-rmw-listdel-oops-20260916.txt the parked-rbio use-after-free (2026-09-16 all-CPU wedge): full Oops + analysis
bhive-cand52-logreplay-fail-bg-refs-bug-20260916.txt open META runs leaking bg refs after a failed degraded log replay (fixed by btrfs_free_open_stripe_runs)
bhive-cand21-raid56-bug726-2026-09-06.txt a raid56.c:726 BUG console (cand21)
balance-zerofill-2026-08-07/ the liveness-map corruption: scanners, damage map, generation correlation (also in covers/forensics/)
gate-deadlock-2026-08-09/ the "commit deadlock" that was parking latency: FINDINGS.md, sysrq, the park/adaptive-park A/B diffs and results
retire-finish-ordered-2026-08-17/ the production retire<->finish-ordered deadlock (dmesg, ftrace)
claimable-above-scanned-2026-08-13/bg-above-scanned.log Zygo's field log of the stripe_claimable over-count (the async-discard double credit)
stripe-alloc-rmw-2026-08-08/ why-rmw attribution outputs
p3b/ positive-control reports and logs
admission-design/claimable-stripe-admission.md the admission-gate design
harness-drafts/ data-rmw-counter.patch (now in the tree as stripe_park_stats.data_rmw), corrupt-churn-test-v2.sh (never adopted), park-tunables.patch
btrfs-unfreeze-degraded-ro-2026-08-11.md, btrfs-progs-v7.0-sast-2026-08-16.txt side findings
{bhive-FAIL,dhive-CORRUPT}-24h-final-report.md the August endurance runs

Hang captures: ~/share/raid56-hang-debug/captures/ (bhive carry-log-tail deadlock 2026-08-16 with TRIAGE.md, dedupe deadlock, variant B, enospc spiral, rmw-park lockup, dhive carry control, stock-6.12 minimal) plus the two reports at the top of that repo. On the VMs: /root/share/root-{bhive,dhive}/ (old /root forensics moved there 2026-08-29: folio captures, spin samples, bees logs), bhive:/mnt/linux/forensics-2026-09-12/ (saved cand32-39 journals, r6c3-cand48-crash-20260914/), dhive:/mnt/linux/forensics-archive/ (folio captures 2026-08-15..19), bhive:/root/br-stall-02{24,44}.txt (the one-off balance-reclaim stall stacks).

8. Open items (2026-09-16)