DF-4895 / trigger.sh
#!/bin/sh # DF-4895 deterministic trigger (guest, root, after setup_vinum.sh): # 1. proper force-stop of drive d2 -> set_drive_state(down, force) # -> daemon vn_close(drive->vp); drive->vp = NULL # 2. state pokes restore drive/sd/plex/vol "up" (vp stays NULL) # 3. single 32KB RAID-5 group write: # first phase reads go via the (still valid) cdev, # complete_raid5_write() second phase hits vn_strategy(NULL) # -> Fatal trap 12 (vn_strategy+0x38, fault address 0x5c) [ -f /tmp/cc ] || { dd if=/dev/zero bs=512 count=64 2>/dev/null | tr "\0" "\314" > /tmp/cc; } echo "[1] vinum stop -f d2 (daemon closes vp)" vinum stop -f d2; sleep 3 echo "[2] poke states back up (vp stays NULL)" vinum setstate -f up d2 for o in rv.p0.s0 rv.p0.s1 rv.p0.s2 rv.p0 rv; do vinum setstate -f up $o >/dev/null 2>&1 done sleep 1 echo "[3] the write:" dd of=/dev/vinum/vol/rv bs=32768 seek=5 count=1 if=/tmp/cc conv=notrunc echo "SURVIVED (no panic)" |