DF-2633 / storm_measurements.txt
DF-2633 — xop_strategy_write error-storm measurements (stock kernel #0)
All numbers below are grep(1) counts against dfbsd-qemu/boot.log captured
DURING the live session (the serial file restarts on each qemu boot, so
these transcript-captured counts are the durable record; the decisive
run transcript is planD.log / stock_run.log).
Session 1 (vn1 over tmpfs image, 256MB, run_df2633.sh "attempt 1"):
fill : write() ENOSPC at block 3836 (off 251396096); FILL_FSYNC rc=0
storm : $ grep -c "xop_strategy_write: error 32" boot.log
325891
$ grep -o ... | sort -u | wc -l
134 (distinct 64KB logical offsets failing = 8704KB)
30s growth: 358346 -> 364750 lines (213 lines/s, never stops)
umount : "Resource temporarily unavailable" (EBUSY) forever, 120s+
watchdog (umount_hang.attempt1.log)
guest : ps ax timed out (>120s) under the flood; guest degraded but
alive; only escape from the wedged mount is a crash.
Session 2 / Plan D (vn1 over tmpfs image, fill 251658240 bytes):
fill : write() ENOSPC at block 3840; FILL_FSYNC rc=0 errno=0
storm : 4079 lines "xop_strategy_write: error 32" in the ~90s between
wall-hit and the crash; 137 distinct failing 64KB offsets
(= 8856576 bytes of write()-successful data whose backend
allocation permanently failed)
phase2 : 500/500 creates -> ENOSPC, append write -> ENOSPC,
tail.bin/mm.bin O_CREAT -> ENOSPC, APPEND_FSYNC rc=0
media : dd snapshot of the image taken while mounted+storming
(crash semantics), md5-verified copy
crash : kill -9 qemu; reboot; storm.img remounts (hammer2 recovery)
COMPLETELY EMPTY: df 0 used, no fill.bin at all.
-> 251,658,240 bytes that write() returned success for and
fsync(2) returned 0 for: 100% silent loss.
(postcrash_verify.log)