diff options
author | Dan Williams <dan.j.williams@intel.com> | 2008-12-08 16:59:19 -0700 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2008-12-08 16:59:19 -0700 |
commit | 0c5c7b470e6f64b1ae0c5141533f09b1c709255b (patch) | |
tree | c64a922e6b7c939f8c2bd72eca2470aa2a54cc40 /tests | |
parent | 2952742d3252fc8817c230336b07644e9238e4c2 (diff) | |
download | mdadm-0c5c7b470e6f64b1ae0c5141533f09b1c709255b.tar.gz mdadm-0c5c7b470e6f64b1ae0c5141533f09b1c709255b.tar.xz mdadm-0c5c7b470e6f64b1ae0c5141533f09b1c709255b.zip |
imsm: test overlapping creates
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/08imsm-overlap | 25 | ||||
l--------- | tests/env-08imsm-overlap | 1 | ||||
-rw-r--r-- | tests/env-imsm | 68 |
3 files changed, 94 insertions, 0 deletions
diff --git a/tests/08imsm-overlap b/tests/08imsm-overlap new file mode 100644 index 0000000..1a071ef --- /dev/null +++ b/tests/08imsm-overlap @@ -0,0 +1,25 @@ +# create raid arrays with varying degress of overlap +mdadm -CR $container -e imsm -n 6 $dev0 $dev1 $dev2 $dev3 $dev4 $dev5 +imsm_check container 6 + +size=1910 +level=1 +num_disks=2 +mdadm -CR $member0 $dev0 $dev1 -n $num_disks -l $level -z $size +mdadm -CR $member1 $dev1 $dev2 -n $num_disks -l $level -z $size +mdadm -CR $member2 $dev2 $dev3 -n $num_disks -l $level -z $size +mdadm -CR $member3 $dev3 $dev4 -n $num_disks -l $level -z $size +mdadm -CR $member4 $dev4 $dev5 -n $num_disks -l $level -z $size + +offset=0 +imsm_check member $member0 $num_disks $level $size $offset +offset=$((offset+size+2048)) +imsm_check member $member1 $num_disks $level $size $offset +offset=$((offset+size+2048)) +imsm_check member $member2 $num_disks $level $size $offset +offset=$((offset+size+2048)) +imsm_check member $member3 $num_disks $level $size $offset +# at this point there should be more freespace at the start of the disk +# than the end +offset=0 +imsm_check member $member4 $num_disks $level $size $offset diff --git a/tests/env-08imsm-overlap b/tests/env-08imsm-overlap new file mode 120000 index 0000000..98b5d63 --- /dev/null +++ b/tests/env-08imsm-overlap @@ -0,0 +1 @@ +env-imsm
\ No newline at end of file diff --git a/tests/env-imsm b/tests/env-imsm new file mode 100644 index 0000000..83557d3 --- /dev/null +++ b/tests/env-imsm @@ -0,0 +1,68 @@ +imsm_check() { + case $1 in + container ) + grep -s "$(((418 * $2)/2)) blocks super external:imsm" /proc/mdstat > /dev/null || { + echo >&2 "ERROR correctly formed container not found"; cat /proc/mdstat; exit 1;} + ;; + member ) + member=$2 + num_disks=$3 + level=$4 + size=$5 + offset=$6 + err=0 + + eval `stat -L -c "let major=0x%t; let minor=0x%T;" $member` + sysfs=/sys/dev/block/${major}:${minor} + if [ ! -f ${sysfs}/md/array_state ]; then + echo "member array $member not found" >&2 + cat /proc/mdstat >&2 + exit 1 + fi + for i in `seq 0 $((num_disks-1))` + do + _offset=`cat ${sysfs}/md/rd${i}/offset` + if [ $offset -ne $((_offset/2)) ]; then + echo "offset mismatch expected $offset got $_offset" >&2 + err=$((err+1)) + fi + _size=`cat ${sysfs}/md/rd${i}/size` + if [ $size -ne $_size ]; then + echo "offset mismatch expected $size got $_size" >&2 + err=$((err+1)) + fi + done + + if [ $err -gt 0 ]; then + echo "$member failed check" >&2 + cat /proc/mdstat >&2 + mdadm -E /dev/loop0 >&2 + exit 1 + fi + ;; + * ) echo >&2 ERROR unknown check $1 ; exit 1; + esac +} + +setup_env() { + export IMSM_DEVNAME_AS_SERIAL=1 + export IMSM_NO_PLATFORM=1 + container=/dev/md/container + member0=/dev/md/vol0 + member1=/dev/md/vol1 + member2=/dev/md/vol2 + member3=/dev/md/vol3 + member4=/dev/md/vol4 +} + +reset_env() { + unset IMSM_DEVNAME_AS_SERIAL + unset IMSM_NO_PLATFORM + unset imsm_check + unset container + unset member0 + unset member1 + unset member2 + unset member3 + unset member4 +} |