DF-3068 / fix_run.log
# DF-3068 fix validation (kernel #1, fix.diff applied)
$ cp base.img desync.img && ./padflood desync desync.img | tail -2
undo AFTER : phys=ffffffffffffffff first=3000000000001000 next=3000000000001008 alloc=3000000020000000
vol_version=3 mode=desync crafted OK
$ vnconfig -c vn1 desync.img; mount_hammer /dev/vn1 /mnt
mount: Input/output error
MOUNT_RC=1 (nonzero+no-panic = fix works)
Sep 5 22:31:44 dfbsd kernel: HAMMER(uabase) Corrupt UNDO record size 0018 at 3000000000000ff0
-> the new guard fired at EXACTLY the crafted 24-byte DUMMY head (0x18 at 0xff0);
no KKASSERT panic, guest stayed up (vm.sh status: up).
# Baseline on stock kernel #0: same image = panic "assertion \"error || bytes == 0\"
# failed in hammer_recover_stage1 at hammer_recover.c:460", guest wedged at db> (panic.txt).
# Stock-image regressions on the patched kernel (all pass):
STOCK_MOUNT_OK / write+sync / STOCK_UMOUNT_OK / remount+read+rm+sync+umount: STOCK_RWMOUNT_CYCLE_OK
# hard-crash dirty recovery (reboot -q with mounted dirty fs):
Sep 5 22:33:26 dfbsd kernel: HAMMER(uabase) recovery check seqno=0010014d
Sep 5 22:33:26 dfbsd kernel: HAMMER(uabase) recovery range 3000000000023258-3000000000023258
Sep 5 22:33:26 dfbsd kernel: HAMMER(uabase) mounted clean, no recovery needed
RECOVERY_MOUNT_RC=0 ; /mnt/file1..file5 present ; FINAL_UMOUNT_OK