#! /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 log_dev=$1; shift log_offset=$1; shift log_size=$1; shift if [ $# -ne `expr $mirror_count \* 2` ]; then echo "Incorrect number of mirror arguments" 1>&2 usage fi # Generate the tables log_table="0 $log_size linear $log_dev $log_offset" mirror_table="0 $segment_size mirror disk 2 /dev/mapper/log 1024 $mirror_count $@" linear1_table="0 $segment_size linear $1 $2"; shift; shift; linear2_table="0 $segment_size linear $1 $2"; shift; shift; # create the device remove_quietly $devname remove_quietly log info "create log device" push_level create log $log_table pop_level info "zero log device" push_level dd if=/dev/zero of=/dev/mapper/log pop_level info "create mirror device" push_level create $devname $linear1_table pop_level info "stamp pattern across mirror 1" push_level pattern=`date +%s` stamp_pattern $devname $pattern pop_level info "load map for mirror 2" push_level reload $devname $linear2_table pop_level info "stamp patten across mirror 2" push_level stamp_pattern $devname $(( $pattern + 1 )) pop_level info "load map for mirrorset" push_level reload $devname $mirror_table pop_level info "wait for sync to complete" push_level wait_for_event $devname 0 pop_level info "suspend and resume to prompt a re-read of the log" suspend $devname resume $devname # FIXME: check it's all in sync #info "suspend, zero log then resume" #suspend $devname #dd if=/dev/zero of=/dev/mapper/log #resume $devname # remove remove $devname remove log succeed ok # FIXME: add an at exit to destroy the device on fatal