#! /bin/sh # regression test for creating a table with a set of adjacent # mappings. . ${TEST_ROOT}/etc/dm_tools.sh usage() { echo "Usage: `basename $0` [ ]+" 1>&2 exit 1 } if [ $# -lt 6 ]; then usage fi # globals devname="mirror_test" segment_size=$1; shift mirror_count=$1; shift if [ $# -ne `expr $mirror_count \* 2` ]; then echo "Incorrect number of mirror arguments" 1>&2 usage fi # Generate the tables mirror_table="0 $segment_size mirror core 1 1024 $mirror_count $@" declare -a linear_table for ((i = 0; i < $mirror_count; i++)); do linear_table[$i]="0 $segment_size linear $1 $2"; shift; shift; done # initialise mirrors remove_quietly linear create_notable linear pattern=`date +%s` for ((i = 0; i < $mirror_count; i++)); do info "initialising mirror $i" reload linear ${linear_table[$i]} stamp_pattern linear $(( $pattern + $i )) done remove linear # create the device info "create mirrorset device" remove_quietly $devname create $devname $mirror_table info "load map for mirrorset" reload $devname $mirror_table info "wait for sync to complete" wait_for_event $devname 0 # remove remove $devname # check individual mirrors remove_quietly linear create_notable linear for ((i = 0; i < $mirror_count; i++)); do info "checking mirror $i" reload linear ${linear_table[$i]} verify_pattern linear $pattern done remove linear succeed ok # FIXME: add an at exit to destroy the device on fatal