#!/bin/sh
# DF-4900 fix validation: patched dm module must refuse the 513th unit
# cleanly (ENOSPC) instead of panicking.
echo "== loading PATCHED dm module =="
kldload /usr/obj/usr/src/sys/dev/disk/dm/dm.ko || exit 1
kldstat -v | grep -m1 "dm " ; kldstat | grep dm
echo "== 512 creates (should all succeed) =="
i=0
while [ $i -lt 512 ]; do
	dmsetup create $(printf f%04d $i) --notable >/dev/null 2>&1 || { echo "UNEXPECTED FAIL at $i"; exit 1; }
	i=$((i+1))
done
echo "512 created OK; d0000 minor: $(ls -lH /dev/mapper/f0000 | awk '{print $5 $6}')"
echo "== 513th create (must fail cleanly, no panic) =="
if dmsetup create f0512 --notable >/dev/null 2>&1; then
	echo "NOT FIXED: 513th create succeeded"
else
	echo "513th create refused: $?"
fi
echo "still alive: $(uptime)"
dmsetup remove_all
echo "fix validation complete"
