1
0
Fork 0

Merging upstream version 4.2+20230223.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-02-14 06:01:59 +01:00
parent 866376462c
commit 30ed170f74
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
76 changed files with 2282 additions and 1386 deletions

93
tests/00createnames Normal file
View file

@ -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"

View file

@ -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

View file

@ -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)

7
tests/01r5integ.broken Normal file
View file

@ -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

View file

@ -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

View file

@ -20,4 +20,6 @@ do
testdev $md0 3 $sz 1
mdadm -S $md0
mdadm --zero /dev/loop2
mdadm --zero /dev/loop3
done

View file

@ -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=//'`

View file

@ -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

7
tests/04r5swap.broken Normal file
View file

@ -0,0 +1,7 @@
always fails
Fails with errors:
mdadm: /dev/loop0 has no superblock - assembly aborted
ERROR: no recovery happening

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,5 @@
always fails
Fails with error:
ERROR: no resync happening

View file

@ -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

View file

@ -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.

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,5 @@
always fails
Fails with error:
**Error**: Array size mismatch - expected 3072, actual 16384

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,5 @@
fails infrequently
Fails roughly 1 in 3 with error:
ERROR: /dev/md/vol1 should be optimal in meta data

View file

@ -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

View file

@ -0,0 +1,5 @@
always fails
Fails with error:
mdadm/tests/func.sh: line 325: dvsize/chunk: division by 0 (error token is "chunk")

View file

@ -0,0 +1,6 @@
always fails
Fails with error:
tests/func.sh: line 325: dvsize/chunk: division by 0 (error token
is "chunk")

View file

@ -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

View file

@ -0,0 +1,6 @@
always fails
Fails with error:
tests/func.sh: line 325: dvsize/chunk: division by 0 (error token
is "chunk")

View file

@ -0,0 +1,5 @@
always fails
Fails with:
"should detect errors"

View file

@ -0,0 +1,5 @@
always fails
Fails with:
"should detect errors"