DragonFlyBSD Kernel Audit
DF-2633 / storm_measurements.txt
← back to finding ↓ download raw
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)