summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeil Brown <neilb@suse.de>2005-08-16 07:00:22 +0000
committerNeil Brown <neilb@suse.de>2005-08-16 07:00:22 +0000
commitc13c45e9130608314ced83ac488c386ac502865b (patch)
tree9fb02cbb0767325ac9e3cda98f9de0b4c90c3a90
parentfe80f49b6e157e006d63d0319f6d022226e4e197 (diff)
downloadmdadm-c13c45e9130608314ced83ac488c386ac502865b.tar.gz
mdadm-c13c45e9130608314ced83ac488c386ac502865b.tar.xz
mdadm-c13c45e9130608314ced83ac488c386ac502865b.zip
Add test for multipath and make it work.
Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au>
-rw-r--r--Create.c2
-rw-r--r--test15
-rw-r--r--tests/00multipath24
3 files changed, 39 insertions, 2 deletions
diff --git a/Create.c b/Create.c
index d1e1088..86b9dff 100644
--- a/Create.c
+++ b/Create.c
@@ -252,7 +252,7 @@ int Create(struct supertype *st, char *mddev, int mdfd,
fprintf(stderr, Name ": no size and no drives given - aborting create.\n");
return 1;
}
- if (level > 0) {
+ if (level > 0 || level == LEVEL_MULTIPATH || level == LEVEL_FAULTY) {
/* size is meaningful */
if (minsize > 0x100000000ULL) {
fprintf(stderr, Name ": devices too large for RAID level %d\n", level);
diff --git a/test b/test
index 1e7e841..dadca13 100644
--- a/test
+++ b/test
@@ -42,11 +42,19 @@ devlist=
for d in 0 1 2 3 4 5 6 7
do
[ -f $targetdir/mdtest$d ] || dd if=/dev/zero of=$targetdir/mdtest$d count=$size bs=1K > /dev/null 2>&1
- losetup /dev/loop$d $targetdir/mdtest$d
+ if [ $d -eq 7 ]
+ then
+ losetup /dev/loop$d $targetdir/mdtest6 # for multipath use
+ else
+ losetup /dev/loop$d $targetdir/mdtest$d
+ fi
eval dev$d=/dev/loop$d
eval file$d=$targetdir/mdtest$d
eval devlist=\"\$devlist \$dev$d\"
done
+path0=$dev6
+path1=$dev7
+
# mdadm always adds --quiet, and we want to see any unexpected messages
mdadm() {
@@ -119,6 +127,11 @@ testdev() {
fi
}
+rotest() {
+ dev=$1
+ fsck -fn $dev >&2
+}
+
for script in tests/$prefix*[^~]
diff --git a/tests/00multipath b/tests/00multipath
new file mode 100644
index 0000000..efad690
--- /dev/null
+++ b/tests/00multipath
@@ -0,0 +1,24 @@
+
+#
+# create a multipath, and fail and stuff
+
+mdadm -CR $md1 -l multipath -n2 $path0 $path1
+
+testdev $md1 1 $mdsize0 1
+
+mdadm $md1 -f $path0
+rotest $md1
+testdev $md1 1 $mdsize0 1
+
+mdadm $md1 -r $path0
+mdadm $md1 -a $path0
+
+rotest $md1
+testdev $md1 1 $mdsize0 1
+
+mdadm $md1 -f $path1
+mdadm $md1 -r $path1
+rotest $md1
+testdev $md1 1 $mdsize0 1
+
+mdadm -S $md1