WIP: uniproc
[hband-tools.git] / disk-mgmt / ddwrite
blobb218ea531e8839eae08d3e6044904a3666a4629a
1 #!/bin/sh
3 set -u
5 usage="[DDWRITE_REWIND=<sectors>] [DDWRITE_INCREMENT=<sectors>] ddwrite <device> [<initial-seek>]"
6 rewind_sectors=${DDWRITE_REWIND:-10}
7 increment=${DDWRITE_INCREMENT:-10000}
9 devpath=${1?$usage}
10 if [ ! -e "$devpath" ]
11 then
12 echo "$usage" >&2
13 exit 255
15 seek=${2:-0}
17 while true
19 echo "ddwrite: device=$devpath seek=$seek" >&2
20 ddoutput=`LANG=C dd if=/dev/zero of="$devpath" bs=512 oflag=direct seek=$seek count=$increment 2>&1`
21 echo "$ddoutput" >&2
22 if expr "$ddoutput" : '.*No space left on device' >/dev/null
23 then
24 break
26 sectors=`echo "$ddoutput" | grep "records out" | tail -n1 | sed -e "s/[^0-9].*//"`
27 seek=$(( seek + sectors - ( sectors < increment ? rewind_sectors : 0 ) ))
28 done