diff options
Diffstat (limited to '')
32 files changed, 341 insertions, 41 deletions
diff --git a/tests/00createnames b/tests/00createnames new file mode 100644 index 0000000..64b81b9 --- /dev/null +++ b/tests/00createnames @@ -0,0 +1,93 @@ +set -x -e + +# Test how <devname> and --name= are handled for create mode. +# We need to check three properties, generated from those parameters: +# - devnode name +# - link in /dev/md/ (MD_DEVNAME property from --detail --export) +# - name in metadata (MD_NAME property from --examine --export) + +function _verify() { + local DEVNODE_NAME="$1" + local WANTED_LINK="$2" + local WANTED_NAME="$3" + + local RES="$(mdadm -D --export $DEVNODE_NAME | grep MD_DEVNAME)" + if [[ "$?" != "0" ]]; then + echo "Cannot get details for $DEVNODE_NAME - unexpected devnode." + exit 1 + fi + + if [[ "$WANTED_LINK" != "empty" ]]; then + local EXPECTED="MD_DEVNAME=$WANTED_LINK" + if [[ "$RES" != "$EXPECTED" ]]; then + echo "$RES doesn't match $EXPECTED." + exit 1 + fi + fi + + + local RES="$(mdadm -E --export $dev0 | grep MD_NAME)" + if [[ "$?" != "0" ]]; then + echo "Cannot get metadata from $dev0." + exit 1 + fi + + local EXPECTED="MD_NAME=$(hostname):$WANTED_NAME" + if [[ "$RES" != "$EXPECTED" ]]; then + echo "$RES doesn't match $EXPECTED." + exit 1 + fi +} + +function _create() { + local DEVNAME=$1 + local NAME=$2 + + if [[ -z "$NAME" ]]; then + mdadm -CR "$DEVNAME" -l0 -n 1 $dev0 --force + else + mdadm -CR "$DEVNAME" --name="$NAME" -l0 -n 1 $dev0 --force + fi + + if [[ "$?" != "0" ]]; then + echo "Cannot create device." + exit 1 + fi +} + +# The most trivial case. +_create "/dev/md/name" +_verify "/dev/md127" "name" "name" +mdadm -S "/dev/md127" + +_create "name" +_verify "/dev/md127" "name" "name" +mdadm -S "/dev/md127" + +# Use 'mdX' as name. +_create "/dev/md/md0" +_verify "/dev/md127" "md0" "md0" +mdadm -S "/dev/md127" + +_create "md0" +_verify "/dev/md127" "md0" "md0" +mdadm -S "/dev/md127" + +# <devnode> is used to create MD_DEVNAME but, name is used to create MD_NAME. +_create "/dev/md/devnode" "name" +_verify "/dev/md127" "devnode" "name" +mdadm -S "/dev/md127" + +_create "devnode" "name" +_verify "/dev/md127" "devnode" "name" +mdadm -S "/dev/md127" + +# Devnode points to /dev/ directory. MD_DEVNAME doesn't exist. +_create "/dev/md0" +_verify "/dev/md0" "empty" "0" +mdadm -S "/dev/md0" + +# Devnode points to /dev/ directory and name is set. +_create "/dev/md0" "name" +_verify "/dev/md0" "empty" "name" +mdadm -S "/dev/md0" diff --git a/tests/00raid0 b/tests/00raid0 index 8bc1898..9b8896c 100644 --- a/tests/00raid0 +++ b/tests/00raid0 @@ -6,11 +6,9 @@ check raid0 testdev $md0 3 $mdsize2_l 512 mdadm -S $md0 -# now with version-0.90 superblock +# verify raid0 with layouts fail for 0.90 mdadm -CR $md0 -e0.90 -l0 -n4 $dev0 $dev1 $dev2 $dev3 -check raid0 -testdev $md0 4 $mdsize0 512 -mdadm -S $md0 +check opposite_result # now with no superblock mdadm -B $md0 -l0 -n5 $dev0 $dev1 $dev2 $dev3 $dev4 @@ -22,8 +20,8 @@ mdadm -S $md0 # now same again with different chunk size for chunk in 4 32 256 do - mdadm -CR $md0 -e0.90 -l raid0 --chunk $chunk -n3 $dev0 $dev1 $dev2 - check raid0 + mdadm -CR $md0 -e0.90 -l linear --chunk $chunk -n3 $dev0 $dev1 $dev2 + check linear testdev $md0 3 $mdsize0 $chunk mdadm -S $md0 diff --git a/tests/00readonly b/tests/00readonly index 28b0fa1..afe243b 100644 --- a/tests/00readonly +++ b/tests/00readonly @@ -4,10 +4,15 @@ for metadata in 0.9 1.0 1.1 1.2 do for level in linear raid0 raid1 raid4 raid5 raid6 raid10 do + if [[ $metadata == "0.9" && $level == "raid0" ]]; + then + continue + fi mdadm -CR $md0 -l $level -n 4 --metadata=$metadata \ $dev1 $dev2 $dev3 $dev4 --assume-clean check nosync check $level + udevadm settle mdadm -ro $md0 check readonly state=$(cat /sys/block/md0/md/array_state) diff --git a/tests/01r5integ.broken b/tests/01r5integ.broken new file mode 100644 index 0000000..2073763 --- /dev/null +++ b/tests/01r5integ.broken @@ -0,0 +1,7 @@ +fails rarely + +Fails about 1 in every 30 runs with a sha mismatch error: + + c49ab26e1b01def7874af9b8a6d6d0c29fdfafe6 /dev/md0 does not match + 15dc2f73262f811ada53c65e505ceec9cf025cb9 /dev/md0 with /dev/loop3 + missing diff --git a/tests/01raid6integ.broken b/tests/01raid6integ.broken new file mode 100644 index 0000000..1df735f --- /dev/null +++ b/tests/01raid6integ.broken @@ -0,0 +1,7 @@ +fails infrequently + +Fails about 1 in 5 with a sha mismatch: + + 8286c2bc045ae2cfe9f8b7ae3a898fa25db6926f /dev/md0 does not match + a083a0738b58caab37fd568b91b177035ded37df /dev/md0 with /dev/loop2 and + /dev/loop3 missing diff --git a/tests/02lineargrow b/tests/02lineargrow index e05c219..595bf9f 100644 --- a/tests/02lineargrow +++ b/tests/02lineargrow @@ -20,4 +20,6 @@ do testdev $md0 3 $sz 1 mdadm -S $md0 + mdadm --zero /dev/loop2 + mdadm --zero /dev/loop3 done diff --git a/tests/03r0assem b/tests/03r0assem index 6744e32..44df064 100644 --- a/tests/03r0assem +++ b/tests/03r0assem @@ -68,9 +68,9 @@ mdadm -S $md2 ### Now for version 0... mdadm --zero-superblock $dev0 $dev1 $dev2 -mdadm -CR $md2 -l0 --metadata=0.90 -n3 $dev0 $dev1 $dev2 -check raid0 -tst="testdev $md2 3 $mdsize0 512" +mdadm -CR $md2 -llinear --metadata=0.90 -n3 $dev0 $dev1 $dev2 +check linear +tst="testdev $md2 3 $mdsize0 1" $tst uuid=`mdadm -Db $md2 | sed 's/.*UUID=//'` diff --git a/tests/04r0update b/tests/04r0update index 73ee3b9..b95efb0 100644 --- a/tests/04r0update +++ b/tests/04r0update @@ -1,7 +1,7 @@ # create a raid0, re-assemble with a different super-minor -mdadm -CR -e 0.90 $md0 -l0 -n3 $dev0 $dev1 $dev2 -testdev $md0 3 $mdsize0 512 +mdadm -CR -e 0.90 $md0 -llinear -n3 $dev0 $dev1 $dev2 +testdev $md0 3 $mdsize0 1 minor1=`mdadm -E $dev0 | sed -n -e 's/.*Preferred Minor : //p'` mdadm -S /dev/md0 diff --git a/tests/04r5swap.broken b/tests/04r5swap.broken new file mode 100644 index 0000000..e38987d --- /dev/null +++ b/tests/04r5swap.broken @@ -0,0 +1,7 @@ +always fails + +Fails with errors: + + mdadm: /dev/loop0 has no superblock - assembly aborted + + ERROR: no recovery happening diff --git a/tests/04update-metadata b/tests/04update-metadata index 232fc1f..2b72a30 100644 --- a/tests/04update-metadata +++ b/tests/04update-metadata @@ -8,10 +8,14 @@ set -xe dlist="$dev0 $dev1 $dev2 $dev3" -for ls in raid0/4 linear/4 raid1/1 raid5/3 raid6/2 +for ls in linear/4 raid1/1 raid5/3 raid6/2 do s=${ls#*/} l=${ls%/*} - mdadm -CR --assume-clean -e 0.90 $md0 --level $l -n 4 -c 64 $dlist + if [[ $l == 'raid1' ]]; then + mdadm -CR --assume-clean -e 0.90 $md0 --level $l -n 4 $dlist + else + mdadm -CR --assume-clean -e 0.90 $md0 --level $l -n 4 -c 64 $dlist + fi testdev $md0 $s 19904 64 mdadm -S $md0 mdadm -A $md0 --update=metadata $dlist diff --git a/tests/07autoassemble.broken b/tests/07autoassemble.broken new file mode 100644 index 0000000..8be0940 --- /dev/null +++ b/tests/07autoassemble.broken @@ -0,0 +1,8 @@ +always fails + +Prints lots of messages, but the array doesn't assemble. Error +possibly related to: + + mdadm: /dev/md/1 is busy - skipping + mdadm: no recogniseable superblock on /dev/md/testing:0 + mdadm: /dev/md/2 is busy - skipping diff --git a/tests/07autodetect.broken b/tests/07autodetect.broken new file mode 100644 index 0000000..294954a --- /dev/null +++ b/tests/07autodetect.broken @@ -0,0 +1,5 @@ +always fails + +Fails with error: + + ERROR: no resync happening diff --git a/tests/07changelevelintr.broken b/tests/07changelevelintr.broken new file mode 100644 index 0000000..284b490 --- /dev/null +++ b/tests/07changelevelintr.broken @@ -0,0 +1,9 @@ +always fails + +Fails with errors: + + mdadm: this change will reduce the size of the array. + use --grow --array-size first to truncate array. + e.g. mdadm --grow /dev/md0 --array-size 56832 + + ERROR: no reshape happening diff --git a/tests/07changelevels.broken b/tests/07changelevels.broken new file mode 100644 index 0000000..9b930d9 --- /dev/null +++ b/tests/07changelevels.broken @@ -0,0 +1,9 @@ +always fails + +Fails with errors: + + mdadm: /dev/loop0 is smaller than given size. 18976K < 19968K + metadata + mdadm: /dev/loop1 is smaller than given size. 18976K < 19968K + metadata + mdadm: /dev/loop2 is smaller than given size. 18976K < 19968K + metadata + + ERROR: /dev/md0 isn't a block device. diff --git a/tests/07reshape5intr.broken b/tests/07reshape5intr.broken new file mode 100644 index 0000000..efe52a6 --- /dev/null +++ b/tests/07reshape5intr.broken @@ -0,0 +1,45 @@ +always fails + +This patch, recently added to md-next causes the test to always fail: + +7e6ba434cc60 ("md: don't unregister sync_thread with reconfig_mutex +held") + +The new error is simply: + + ERROR: no reshape happening + +Before the patch, the error seen is below. + +-- + +fails infrequently + +Fails roughly 1 in 4 runs with errors: + + mdadm: Merging with already-assembled /dev/md/0 + mdadm: cannot re-read metadata from /dev/loop6 - aborting + + ERROR: no reshape happening + +Also have seen a random deadlock: + + INFO: task mdadm:109702 blocked for more than 30 seconds. + Not tainted 5.18.0-rc3-eid-vmlocalyes-dbg-00095-g3c2b5427979d #2040 + "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. + task:mdadm state:D stack: 0 pid:109702 ppid: 1 flags:0x00004000 + Call Trace: + <TASK> + __schedule+0x67e/0x13b0 + schedule+0x82/0x110 + mddev_suspend+0x2e1/0x330 + suspend_lo_store+0xbd/0x140 + md_attr_store+0xcb/0x130 + sysfs_kf_write+0x89/0xb0 + kernfs_fop_write_iter+0x202/0x2c0 + new_sync_write+0x222/0x330 + vfs_write+0x3bc/0x4d0 + ksys_write+0xd9/0x180 + __x64_sys_write+0x43/0x50 + do_syscall_64+0x3b/0x90 + entry_SYSCALL_64_after_hwframe+0x44/0xae diff --git a/tests/07revert-grow.broken b/tests/07revert-grow.broken new file mode 100644 index 0000000..9b6db86 --- /dev/null +++ b/tests/07revert-grow.broken @@ -0,0 +1,31 @@ +always fails + +This patch, recently added to md-next causes the test to always fail: + +7e6ba434cc60 ("md: don't unregister sync_thread with reconfig_mutex held") + +The errors are: + + mdadm: No active reshape to revert on /dev/loop0 + ERROR: active raid5 not found + +Before the patch, the error seen is below. + +-- + +fails rarely + +Fails about 1 in every 30 runs with errors: + + mdadm: Merging with already-assembled /dev/md/0 + mdadm: backup file /tmp/md-backup inaccessible: No such file or directory + mdadm: failed to add /dev/loop1 to /dev/md/0: Invalid argument + mdadm: failed to add /dev/loop2 to /dev/md/0: Invalid argument + mdadm: failed to add /dev/loop3 to /dev/md/0: Invalid argument + mdadm: failed to add /dev/loop0 to /dev/md/0: Invalid argument + mdadm: /dev/md/0 assembled from 1 drive - need all 5 to start it + (use --run to insist). + + grep: /sys/block/md*/md/sync_action: No such file or directory + + ERROR: active raid5 not found diff --git a/tests/07revert-shrink.broken b/tests/07revert-shrink.broken new file mode 100644 index 0000000..c33c39e --- /dev/null +++ b/tests/07revert-shrink.broken @@ -0,0 +1,9 @@ +always fails + +Fails with errors: + + mdadm: this change will reduce the size of the array. + use --grow --array-size first to truncate array. + e.g. mdadm --grow /dev/md0 --array-size 53760 + + ERROR: active raid5 not found diff --git a/tests/07testreshape5.broken b/tests/07testreshape5.broken new file mode 100644 index 0000000..a8ce03e --- /dev/null +++ b/tests/07testreshape5.broken @@ -0,0 +1,12 @@ +always fails + +Test seems to run 'test_stripe' at $dir directory, but $dir is never +set. If $dir is adjusted to $PWD, the test still fails with: + + mdadm: /dev/loop2 is not suitable for this array. + mdadm: create aborted + ++ return 1 + ++ cmp -s -n 8192 /dev/md0 /tmp/RandFile + ++ echo cmp failed + cmp failed + ++ exit 2 diff --git a/tests/09imsm-assemble.broken b/tests/09imsm-assemble.broken new file mode 100644 index 0000000..a6d4d5c --- /dev/null +++ b/tests/09imsm-assemble.broken @@ -0,0 +1,6 @@ +fails infrequently + +Fails roughly 1 in 10 runs with errors: + + mdadm: /dev/loop2 is still in use, cannot remove. + /dev/loop2 removal from /dev/md/container should have succeeded diff --git a/tests/09imsm-create-fail-rebuild.broken b/tests/09imsm-create-fail-rebuild.broken new file mode 100644 index 0000000..40c4b29 --- /dev/null +++ b/tests/09imsm-create-fail-rebuild.broken @@ -0,0 +1,5 @@ +always fails + +Fails with error: + + **Error**: Array size mismatch - expected 3072, actual 16384 diff --git a/tests/09imsm-overlap b/tests/09imsm-overlap deleted file mode 100644 index ff5d209..0000000 --- a/tests/09imsm-overlap +++ /dev/null @@ -1,28 +0,0 @@ - -. tests/env-imsm-template - -# 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=1024 -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 - -udevadm settle - -offset=0 -imsm_check member $member0 $num_disks $level $size 1024 $offset -offset=$((offset+size+4096)) -imsm_check member $member1 $num_disks $level $size 1024 $offset -offset=$((offset+size+4096)) -imsm_check member $member2 $num_disks $level $size 1024 $offset -offset=$((offset+size+4096)) -imsm_check member $member3 $num_disks $level $size 1024 $offset -offset=$((offset+size+4096)) -imsm_check member $member4 $num_disks $level $size 1024 $offset diff --git a/tests/09imsm-overlap.broken b/tests/09imsm-overlap.broken new file mode 100644 index 0000000..e7ccab7 --- /dev/null +++ b/tests/09imsm-overlap.broken @@ -0,0 +1,7 @@ +always fails + +Fails with errors: + + **Error**: Offset mismatch - expected 15360, actual 0 + **Error**: Offset mismatch - expected 15360, actual 0 + /dev/md/vol3 failed check diff --git a/tests/10ddf-assemble-missing.broken b/tests/10ddf-assemble-missing.broken new file mode 100644 index 0000000..bfd8d10 --- /dev/null +++ b/tests/10ddf-assemble-missing.broken @@ -0,0 +1,6 @@ +always fails + +Fails with errors: + + ERROR: /dev/md/vol0 has unexpected state on /dev/loop10 + ERROR: unexpected number of online disks on /dev/loop10 diff --git a/tests/10ddf-fail-create-race.broken b/tests/10ddf-fail-create-race.broken new file mode 100644 index 0000000..6c0df02 --- /dev/null +++ b/tests/10ddf-fail-create-race.broken @@ -0,0 +1,7 @@ +usually fails + +Fails about 9 out of 10 times with many errors: + + mdadm: cannot open MISSING: No such file or directory + ERROR: non-degraded array found + ERROR: disk 0 not marked as failed in meta data diff --git a/tests/10ddf-fail-two-spares.broken b/tests/10ddf-fail-two-spares.broken new file mode 100644 index 0000000..eeea56d --- /dev/null +++ b/tests/10ddf-fail-two-spares.broken @@ -0,0 +1,5 @@ +fails infrequently + +Fails roughly 1 in 3 with error: + + ERROR: /dev/md/vol1 should be optimal in meta data diff --git a/tests/10ddf-incremental-wrong-order.broken b/tests/10ddf-incremental-wrong-order.broken new file mode 100644 index 0000000..a5af3ba --- /dev/null +++ b/tests/10ddf-incremental-wrong-order.broken @@ -0,0 +1,9 @@ +always fails + +Fails with errors: + ERROR: sha1sum of /dev/md/vol0 has changed + ERROR: /dev/md/vol0 has unexpected state on /dev/loop10 + ERROR: unexpected number of online disks on /dev/loop10 + ERROR: /dev/md/vol0 has unexpected state on /dev/loop8 + ERROR: unexpected number of online disks on /dev/loop8 + ERROR: sha1sum of /dev/md/vol0 has changed diff --git a/tests/14imsm-r1_2d-grow-r1_3d.broken b/tests/14imsm-r1_2d-grow-r1_3d.broken new file mode 100644 index 0000000..4ef1d40 --- /dev/null +++ b/tests/14imsm-r1_2d-grow-r1_3d.broken @@ -0,0 +1,5 @@ +always fails + +Fails with error: + + mdadm/tests/func.sh: line 325: dvsize/chunk: division by 0 (error token is "chunk") diff --git a/tests/14imsm-r1_2d-takeover-r0_2d.broken b/tests/14imsm-r1_2d-takeover-r0_2d.broken new file mode 100644 index 0000000..89cd4e5 --- /dev/null +++ b/tests/14imsm-r1_2d-takeover-r0_2d.broken @@ -0,0 +1,6 @@ +always fails + +Fails with error: + + tests/func.sh: line 325: dvsize/chunk: division by 0 (error token + is "chunk") diff --git a/tests/18imsm-r10_4d-takeover-r0_2d.broken b/tests/18imsm-r10_4d-takeover-r0_2d.broken new file mode 100644 index 0000000..a27399f --- /dev/null +++ b/tests/18imsm-r10_4d-takeover-r0_2d.broken @@ -0,0 +1,5 @@ +fails rarely + +Fails about 1 run in 100 with message: + + ERROR: size is wrong for /dev/md/vol0: 2 * 5120 (chunk=128) = 20480, not 0 diff --git a/tests/18imsm-r1_2d-takeover-r0_1d.broken b/tests/18imsm-r1_2d-takeover-r0_1d.broken new file mode 100644 index 0000000..aa1982e --- /dev/null +++ b/tests/18imsm-r1_2d-takeover-r0_1d.broken @@ -0,0 +1,6 @@ +always fails + +Fails with error: + + tests/func.sh: line 325: dvsize/chunk: division by 0 (error token + is "chunk") diff --git a/tests/19raid6auto-repair.broken b/tests/19raid6auto-repair.broken new file mode 100644 index 0000000..e91a142 --- /dev/null +++ b/tests/19raid6auto-repair.broken @@ -0,0 +1,5 @@ +always fails + +Fails with: + + "should detect errors" diff --git a/tests/19raid6repair.broken b/tests/19raid6repair.broken new file mode 100644 index 0000000..e91a142 --- /dev/null +++ b/tests/19raid6repair.broken @@ -0,0 +1,5 @@ +always fails + +Fails with: + + "should detect errors" |