DF-5063 / df5063_probe.sh
#!/bin/sh # DF-5063 — composite-minor probe (run after df5063_sdcomp.sh setup + /tmp/mk built). # NOTE: reads are 512-byte aligned (vinum rejects unaligned I/O). export PATH=/sbin:/bin:/usr/sbin:/usr/bin echo "== sanity: raw devices still work" dd if=/dev/vinum/sd/s0 bs=512 count=1 2>/dev/null | tr -d '\0' | head -c 20; echo " <- raw sd s0" printf 'SD-S0-DATA' | dd of=/dev/vinum/sd/s0 bs=512 seek=0 conv=sync 2>/dev/null echo "== baseline: hand-made rawplex p0 node (minor 0x50000000)" rm -f /tmp/px0; /tmp/mk /tmp/px0 32 1342177280 dd if=/tmp/px0 bs=512 count=1 2>&1 | tail -1 echo "== baseline: composite SD pord=0 sord=0 (minor 0x20000000, VALID slot)" rm -f /tmp/sdc00; /tmp/mk /tmp/sdc00 32 536870912 dd if=/tmp/sdc00 bs=512 count=1 2>/dev/null | tr -d '\0' | head -c 20; echo " <- composite SD (0,0)"; dd if=/tmp/sdc00 bs=512 count=1 2>&1 | tail -1 echo "== composite SD pord=1 sord=0 (minor 0x20010000, EMPTY slot -> Plexno -1 -> PLEX[-1])" rm -f /tmp/sdc10; /tmp/mk /tmp/sdc10 32 536936448 dd if=/tmp/sdc10 bs=512 count=1 2>&1 | tail -1 echo "== composite SD pord=2 sord=0 (minor 0x20020000)" rm -f /tmp/sdc20; /tmp/mk /tmp/sdc20 32 537001984 dd if=/tmp/sdc20 bs=512 count=1 2>&1 | tail -1 echo "== composite SD pord=2 sord=1 (minor 0x20120000)" rm -f /tmp/sdc21; /tmp/mk /tmp/sdc21 32 538050560 dd if=/tmp/sdc21 bs=512 count=1 2>&1 | tail -1 echo "== composite PLEX pord=0 (minor 0x10000000, valid slot)" rm -f /tmp/pxc0; /tmp/mk /tmp/pxc0 32 268435456 dd if=/tmp/pxc0 bs=512 count=1 2>&1 | tail -1 echo "== composite PLEX pord=2 (minor 0x10020000, empty slot)" rm -f /tmp/pxc2; /tmp/mk /tmp/pxc2 32 268632064 dd if=/tmp/pxc2 bs=512 count=1 2>&1 | tail -1 echo "== sweep all empty-slot ordinals (pord 1..7, sord 0..7)" p=1 while [ $p -le 7 ]; do s=0 while [ $s -le 7 ]; do M=$(( (2 << 28) | (p << 16) | (s << 20) )) rm -f /tmp/sw; /tmp/mk /tmp/sw 32 $M >/dev/null 2>&1 OUT=$(dd if=/tmp/sw bs=512 count=1 2>&1 | head -1) echo "pord=$p sord=$s minor=$(printf 0x%x $M): $OUT" s=$((s+1)) done p=$((p+1)) done echo "== done" dmesg | tail -5 |