diff options
author | NeilBrown <neilb@suse.de> | 2009-10-22 11:13:13 +1100 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2009-10-22 11:13:13 +1100 |
commit | 4a997737a14f580e3addfa1db6be005c37e7c0f4 (patch) | |
tree | 2bb5c80319e81728d54822d5b930098746c07057 /tests | |
parent | 9739642288555dae607ee4aa0eec0e9245cecf74 (diff) | |
parent | 0eb26465c0a14d707ca00f4f7bcdb67bde36f706 (diff) | |
download | mdadm-4a997737a14f580e3addfa1db6be005c37e7c0f4.tar.gz mdadm-4a997737a14f580e3addfa1db6be005c37e7c0f4.tar.xz mdadm-4a997737a14f580e3addfa1db6be005c37e7c0f4.zip |
Merge branch 'master' into devel-3.1
Diffstat (limited to 'tests')
-rw-r--r-- | tests/09imsm-assemble | 46 | ||||
-rw-r--r-- | tests/10ddf-create | 8 | ||||
-rw-r--r-- | tests/env-09imsm-assemble | 32 |
3 files changed, 82 insertions, 4 deletions
diff --git a/tests/09imsm-assemble b/tests/09imsm-assemble new file mode 100644 index 0000000..7389b0e --- /dev/null +++ b/tests/09imsm-assemble @@ -0,0 +1,46 @@ +# validate the prodigal member disk scenario i.e. a former container +# member is returned after having been rebuilt on another system +num_disks=4 +size=$((10*1024)) +mdadm -CR $container -e imsm -n $num_disks $dev0 $dev1 $dev2 $dev3 +mdadm -CR $member $dev0 $dev2 -n 2 -l 1 -z $size +mdadm --wait $member +mdadm -Ss + +# make dev0 and dev1 a new rebuild family +mdadm -A $container $dev0 $dev1 +mdadm -I $container +mdadm --wait ${member}_0 +mdadm -Ss + +# make dev2 and dev3 a new rebuild family +mdadm -A $container $dev2 $dev3 +mdadm -I $container +mdadm --wait ${member}_0 +mdadm -Ss + +# reassemble and make sure one of the families falls out +mdadm -A $container $dev0 $dev1 $dev2 $dev3 +mdadm -I $container +testdev ${member}_0 1 $size 1 +if mdadm --remove $container $dev0 ; then + # the dev[23] family won + imsm_check_removal $container $dev1 + imsm_check_hold $container $dev2 + imsm_check_hold $container $dev3 +else + # the dev[01] family won + imsm_check_hold $container $dev1 + imsm_check_removal $container $dev2 + imsm_check_removal $container $dev3 +fi +mdadm -Ss + +# reassemble with a new id for the dev[23] family +mdadm -A $container $dev0 $dev1 +mdadm -I $container +mdadm -A ${container}2 $dev2 $dev3 --update=uuid +mdadm -I ${container}2 + +testdev ${member}_0 1 $size 1 +testdev ${member}_1 1 $size 1 diff --git a/tests/10ddf-create b/tests/10ddf-create index db22b64..a32dc0f 100644 --- a/tests/10ddf-create +++ b/tests/10ddf-create @@ -55,8 +55,8 @@ mdadm -Ss mdadm -Asc /var/tmp/mdadm.conf check nosync # This failed once. The raid5 was resyncing. -mdadm -Dbs > /tmp/mdadm.conf -diff /tmp/mdadm.conf /var/tmp/mdadm.conf +mdadm -Dbs | sort > /tmp/mdadm.conf +sort /var/tmp/mdadm.conf | diff /tmp/mdadm.conf - mdadm -Ss # and now assemble fully incrementally. @@ -70,7 +70,7 @@ do done check nosync -mdadm -Dbs > /tmp/mdadm.conf -diff /tmp/mdadm.conf /var/tmp/mdadm.conf +mdadm -Dbs | sort > /tmp/mdadm.conf +sort /var/tmp/mdadm.conf | diff /tmp/mdadm.conf - mdadm -Ss rm /tmp/mdadm.conf /var/tmp/mdadm.conf diff --git a/tests/env-09imsm-assemble b/tests/env-09imsm-assemble new file mode 100644 index 0000000..b12954b --- /dev/null +++ b/tests/env-09imsm-assemble @@ -0,0 +1,32 @@ +imsm_check_hold() { + if mdadm --remove $1 $2; then + echo "$2 removal from $1 should have been blocked" >&2 + cat /proc/mdstat >&2 + mdadm -E $2 + exit 1 + fi +} + +imsm_check_removal() { + if ! mdadm --remove $1 $2 ; then + echo "$2 removal from $1 should have succeeded" >&2 + cat /proc/mdstat >&2 + mdadm -E $2 + exit 1 + fi +} + +setup_env() { + export IMSM_DEVNAME_AS_SERIAL=1 + export IMSM_TEST_OROM=1 + container=/dev/md/container + member=/dev/md/vol0 +} + +reset_env() { + unset IMSM_DEVNAME_AS_SERIAL + unset IMSM_TEST_OROM + unset imsm_check + unset container + unset member +} |