#! /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="stripe_test" segment_count=$1; shift segment_size=$1; shift chunk_size=$1; shift stripe_count=$1; shift if [ $# -ne `expr $stripe_count \* 2` ]; then echo "Insufficient stripe arguments" 1>&2 usage fi # Generate the tables single_target="0 `expr $segment_count \* $segment_size` striped $stripe_count $chunk_size $@" loffset=0 table="" count=0 while [ $count -lt $segment_count ]; do if [ -n "$table" ]; then table="${table}\n" fi table="${table}$loffset $segment_size striped $stripe_count $chunk_size " need_dev=1 for arg; do if [ $need_dev -eq 1 ]; then table="$table $arg" need_dev=0 else table="$table `expr $arg + $loffset / $stripe_count`" need_dev=1 fi done loffset=`expr $loffset + $segment_size` count=`expr $count + 1` done # create the device remove_quietly $devname info "create device" push_level create $devname $table pop_level info "stamp pattern" push_level pattern=`date +%s` stamp_pattern $devname $pattern pop_level info "reload with suspend" push_level suspend $devname reload $devname $table verify_pattern $devname $pattern pop_level info "reload without suspend" push_level reload $devname $table verify_pattern $devname $pattern pop_level info "remove and recreate" push_level remove $devname create $devname $table verify_pattern $devname $pattern pop_level info "single target equivalence" push_level remove $devname create $devname $single_target verify_pattern $devname $pattern pop_level # remove remove $devname succeed ok # FIXME: add an at exit to destroy the device on fatal