xref: /freebsd/tests/sys/geom/class/mirror/5_test.sh (revision 96950419f15510287080c557174e0d8409f06956)
109d98641SEnji Cooper#!/bin/sh
209d98641SEnji Cooper
309d98641SEnji Cooper. `dirname $0`/conf.sh
409d98641SEnji Cooper
509d98641SEnji Cooperecho "1..5"
609d98641SEnji Cooper
709d98641SEnji Cooperbalance="split"
809d98641SEnji Cooperddbs=8192
909d98641SEnji Coopernblocks1=1024
1009d98641SEnji Coopernblocks2=`expr $nblocks1 / \( $ddbs / 512 \)`
1109d98641SEnji Coopersrc=`mktemp $base.XXXXXX` || exit 1
1209d98641SEnji Cooperdst=`mktemp $base.XXXXXX` || exit 1
1309d98641SEnji Cooper
1409d98641SEnji Cooperdd if=/dev/random of=${src} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
1509d98641SEnji Cooper
16*96950419SGleb Smirnoffattach_md us0 -t malloc -s `expr $nblocks1 + 1` || exit 1
17*96950419SGleb Smirnoffattach_md us1 -t malloc -s `expr $nblocks1 + 1` || exit 1
18*96950419SGleb Smirnoffattach_md us2 -t malloc -s `expr $nblocks1 + 1` || exit 1
1909d98641SEnji Cooper
2009d98641SEnji Coopergmirror label -b $balance -s `expr $ddbs / 2` $name /dev/${us0} /dev/${us1} /dev/${us2} || exit 1
2109d98641SEnji Cooperdevwait
2209d98641SEnji Cooper
2309d98641SEnji Cooperdd if=${src} of=/dev/mirror/${name} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
2409d98641SEnji Cooper
2509d98641SEnji Cooperdd if=/dev/mirror/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
2609d98641SEnji Cooperif [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
2709d98641SEnji Cooper	echo "not ok 1"
2809d98641SEnji Cooperelse
2909d98641SEnji Cooper	echo "ok 1"
3009d98641SEnji Cooperfi
3109d98641SEnji Cooper
3209d98641SEnji Coopergmirror remove $name ${us0}
3309d98641SEnji Cooperdd if=/dev/mirror/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
3409d98641SEnji Cooperif [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
3509d98641SEnji Cooper	echo "not ok 2"
3609d98641SEnji Cooperelse
3709d98641SEnji Cooper	echo "ok 2"
3809d98641SEnji Cooperfi
3909d98641SEnji Cooper
4009d98641SEnji Coopergmirror remove $name ${us1}
4109d98641SEnji Cooperdd if=/dev/mirror/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
4209d98641SEnji Cooperif [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
4309d98641SEnji Cooper	echo "not ok 3"
4409d98641SEnji Cooperelse
4509d98641SEnji Cooper	echo "ok 3"
4609d98641SEnji Cooperfi
4709d98641SEnji Cooper
4809d98641SEnji Coopergmirror remove $name ${us2}
4909d98641SEnji Cooperdd if=/dev/mirror/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
5009d98641SEnji Cooperif [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
5109d98641SEnji Cooper	echo "not ok 4"
5209d98641SEnji Cooperelse
5309d98641SEnji Cooper	echo "ok 4"
5409d98641SEnji Cooperfi
5509d98641SEnji Cooper
5609d98641SEnji Cooper# mirror/${name} should be removed.
5709d98641SEnji Cooperif [ -c /dev/${name} ]; then
5809d98641SEnji Cooper	echo "not ok 5"
5909d98641SEnji Cooperelse
6009d98641SEnji Cooper	echo "ok 5"
6109d98641SEnji Cooperfi
6209d98641SEnji Cooper
6309d98641SEnji Cooperrm -f ${src} ${dst}
64