#!/bin/sh
# DF-2652 run: mount, write fileB (overlaps fileA's mismarked block), remount, read fileA.
# Stock kernel: fileA corrupted (EIO with default iscsi32 brefs; foreign
# content with forge2652b.img).  Patched kernel: fileA intact.
set -e
cd "$(dirname "$0")"
IMG="${1:-forge2652.img}"
../../dfbsd-qemu/vm.sh run_root "
vnconfig -u vn0 2>/dev/null || true
vnconfig -c vn0 /tmp/$IMG
mkdir -p /mnt/h2t
mount -t hammer2 /dev/vn0@testvol /mnt/h2t && echo MOUNT_OK
cp /tmp/fileB.bin /mnt/h2t/fileB
sync
umount /mnt/h2t
vnconfig -u vn0
vnconfig -c vn0 /tmp/$IMG
mount -t hammer2 /dev/vn0@testvol /mnt/h2t
echo 'fileA chunks 16..19:'
dd if=/mnt/h2t/fileA bs=16k skip=16 count=4 2>/dev/null | grep -ao 'FILE[AB]-CHUNK-[0-9]*' | head -5
md5 /mnt/h2t/fileA
umount /mnt/h2t
vnconfig -u vn0
"
