Merging upstream version 4.4.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
d98b081a3d
commit
dfe7ded19c
48 changed files with 181 additions and 105 deletions
35
CHANGELOG.md
35
CHANGELOG.md
|
@ -1,3 +1,38 @@
|
||||||
|
# Release [mdadm-4.4](https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/log/?h=mdadm-4.4)
|
||||||
|
|
||||||
|
Features:
|
||||||
|
- Remobe custom bitmap file support from Yu Kuai.
|
||||||
|
- Custom device policies implementation from Mariusz Tkaczyk.
|
||||||
|
- Self encrypted drives (**SED**) support for IMSM metadata from Blazej Kucman.
|
||||||
|
- Support more than 4 disks for **IMSM** RAID10 from Mateusz Kusiak.
|
||||||
|
- Read **IMSM** license information from ACPI tables from Blazej Kucman.
|
||||||
|
- Support devnode in **--Incremental --remove** from Mariusz Tkaczyk.
|
||||||
|
- Printing **IMSM** license type in **--detail-platform** from Blazej Kucman.
|
||||||
|
- README.md from Mariusz Tkaczyk and Anna Sztukowska.
|
||||||
|
|
||||||
|
Fixes:
|
||||||
|
- Tests improvements from Xiao Ni and Kinga Stefaniuk.
|
||||||
|
- Mdmon's Checkpointing improvements from Mateusz Kusiak.
|
||||||
|
- Pass mdadm environment flags to systemd-env to enable tests from Mateusz Kusiak.
|
||||||
|
- Superblock 1.0 uuid printing fixes from Mariusz Tkaczyk.
|
||||||
|
- Find VMD bus manually if link is not available from Mariusz Tkaczyk.
|
||||||
|
- Unconditional devices count printing in --detail from Anna Sztukowska.
|
||||||
|
- Improve SIGTERM handling during reshape, from Mateusz Kusiak.
|
||||||
|
- **Monitor.c** renamed to **Mdmonitor.c** from Kinga Stefaniuk.
|
||||||
|
- Mdmonitor service documentation update from Mariusz Tkaczyk.
|
||||||
|
- Rework around writing to sysfs files from Mariusz Tkaczyk.
|
||||||
|
- Drop of HOT_REMOVE_DISK ioctl in Manage in favour of sysfs from Mariusz Tkaczyk.
|
||||||
|
- Delegate disk removal to managemon from Mariusz Tkaczyk.
|
||||||
|
- Some clean-ups of legacy code and functionalities like **--auto=md** from Mariusz Tkaczyk.
|
||||||
|
- Manual clean-up, references to old kernels removed from Mariusz Tkaczyk.
|
||||||
|
- Various static code analysis fixes.
|
||||||
|
|
||||||
|
In this release we created github repository and allowed participation through
|
||||||
|
Github. It allowed us to use Github actions adn create CI. Currently, we have:
|
||||||
|
- Compilation tests with various gcc.
|
||||||
|
- **mdadm** tests.
|
||||||
|
- Checkpatch test.
|
||||||
|
|
||||||
# Release [mdadm-4.3](https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/log/?h=mdadm-4.3)
|
# Release [mdadm-4.3](https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/log/?h=mdadm-4.3)
|
||||||
|
|
||||||
Features:
|
Features:
|
||||||
|
|
4
ReadMe.c
4
ReadMe.c
|
@ -28,10 +28,10 @@
|
||||||
#include "mdadm.h"
|
#include "mdadm.h"
|
||||||
|
|
||||||
#ifndef VERSION
|
#ifndef VERSION
|
||||||
#define VERSION "4.3"
|
#define VERSION "4.4"
|
||||||
#endif
|
#endif
|
||||||
#ifndef VERS_DATE
|
#ifndef VERS_DATE
|
||||||
#define VERS_DATE "2024-02-15"
|
#define VERS_DATE "2024-11-07"
|
||||||
#endif
|
#endif
|
||||||
#ifndef EXTRAVERSION
|
#ifndef EXTRAVERSION
|
||||||
#define EXTRAVERSION ""
|
#define EXTRAVERSION ""
|
||||||
|
|
|
@ -19,7 +19,7 @@ check all nobitmap
|
||||||
mdadm --grow $md0 --bitmap=internal
|
mdadm --grow $md0 --bitmap=internal
|
||||||
[ $? -eq '0' ] ||
|
[ $? -eq '0' ] ||
|
||||||
die "$NODE1: change bitmap 'none' to 'internal' failed."
|
die "$NODE1: change bitmap 'none' to 'internal' failed."
|
||||||
sleep 1
|
sleep 2
|
||||||
mdadm -X $dev0 $dev1 &> /dev/null
|
mdadm -X $dev0 $dev1 &> /dev/null
|
||||||
[ $? -eq '0' ] ||
|
[ $? -eq '0' ] ||
|
||||||
die "$NODE1: create 'internal' bitmap failed."
|
die "$NODE1: create 'internal' bitmap failed."
|
||||||
|
@ -37,7 +37,7 @@ mdadm --grow $md0 --bitmap=clustered
|
||||||
[ $? -eq '0' ] ||
|
[ $? -eq '0' ] ||
|
||||||
die "$NODE1: change bitmap 'none' to 'clustered' failed."
|
die "$NODE1: change bitmap 'none' to 'clustered' failed."
|
||||||
ssh $NODE2 mdadm -A $md0 $dev0 $dev1
|
ssh $NODE2 mdadm -A $md0 $dev0 $dev1
|
||||||
sleep 1
|
sleep 2
|
||||||
for ip in $NODES
|
for ip in $NODES
|
||||||
do
|
do
|
||||||
ssh $ip "mdadm -X $dev0 $dev1 | grep -q 'Cluster name'" ||
|
ssh $ip "mdadm -X $dev0 $dev1 | grep -q 'Cluster name'" ||
|
||||||
|
|
|
@ -85,7 +85,7 @@ check_dlm()
|
||||||
crm configure clone base-clone base-group \
|
crm configure clone base-clone base-group \
|
||||||
meta interleave=true
|
meta interleave=true
|
||||||
fi
|
fi
|
||||||
sleep 1
|
sleep 2
|
||||||
for ip in $NODE1 $NODE2
|
for ip in $NODE1 $NODE2
|
||||||
do
|
do
|
||||||
ssh $ip "pgrep dlm_controld > /dev/null" || {
|
ssh $ip "pgrep dlm_controld > /dev/null" || {
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
.\" the Free Software Foundation; either version 2 of the License, or
|
.\" the Free Software Foundation; either version 2 of the License, or
|
||||||
.\" (at your option) any later version.
|
.\" (at your option) any later version.
|
||||||
.\" See file COPYING in distribution for details.
|
.\" See file COPYING in distribution for details.
|
||||||
.TH MDADM 8 "" v4.3
|
.TH MDADM 8 "" v4.4
|
||||||
.SH NAME
|
.SH NAME
|
||||||
mdadm \- manage MD devices
|
mdadm \- manage MD devices
|
||||||
.I aka
|
.I aka
|
||||||
|
|
2
mdmon.8
2
mdmon.8
|
@ -1,5 +1,5 @@
|
||||||
.\" See file COPYING in distribution for details.
|
.\" See file COPYING in distribution for details.
|
||||||
.TH MDMON 8 "" v4.3
|
.TH MDMON 8 "" v4.4
|
||||||
.SH NAME
|
.SH NAME
|
||||||
mdmon \- monitor MD external metadata arrays
|
mdmon \- monitor MD external metadata arrays
|
||||||
|
|
||||||
|
|
|
@ -147,7 +147,7 @@ do
|
||||||
systemctl stop mdcheck_continue.timer
|
systemctl stop mdcheck_continue.timer
|
||||||
exit 0;
|
exit 0;
|
||||||
fi
|
fi
|
||||||
sleep 120
|
sleep 220
|
||||||
done
|
done
|
||||||
|
|
||||||
# We've waited, and there are still checks running.
|
# We've waited, and there are still checks running.
|
||||||
|
|
24
test
24
test
|
@ -46,12 +46,19 @@ md125=/dev/md125
|
||||||
mdp0=/dev/md_d0
|
mdp0=/dev/md_d0
|
||||||
mdp1=/dev/md_d1
|
mdp1=/dev/md_d1
|
||||||
|
|
||||||
|
SKIP=3
|
||||||
|
|
||||||
die() {
|
die() {
|
||||||
echo -e "\n\tERROR: $* \n"
|
echo -e "\n\tERROR: $* \n"
|
||||||
save_log fail
|
save_log fail
|
||||||
exit 2
|
exit 2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
skip() {
|
||||||
|
echo -e "\n\tSKIPPING, REASON: $* \n"
|
||||||
|
exit $SKIP
|
||||||
|
}
|
||||||
|
|
||||||
ctrl_c() {
|
ctrl_c() {
|
||||||
exitonerror=1
|
exitonerror=1
|
||||||
ctrl_c_error=1
|
ctrl_c_error=1
|
||||||
|
@ -142,11 +149,18 @@ do_test() {
|
||||||
succeed "succeeded\n"
|
succeed "succeeded\n"
|
||||||
_fail=0
|
_fail=0
|
||||||
else
|
else
|
||||||
print_time_elapsed $start_sec
|
exit_code=$? # Capture the exit code from the script
|
||||||
save_log fail
|
if [ $exit_code -eq $SKIP ]; then
|
||||||
_fail=1
|
warn "skipping"
|
||||||
if [ "$_broken" == "1" ]; then
|
save_log
|
||||||
echo " (KNOWN BROKEN TEST: $_broken_msg)"
|
_fail=0
|
||||||
|
else
|
||||||
|
print_time_elapsed $start_sec
|
||||||
|
save_log fail
|
||||||
|
_fail=1
|
||||||
|
if [ "$_broken" == "1" ]; then
|
||||||
|
echo " (KNOWN BROKEN TEST: $_broken_msg)"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
restore_system_speed_limit
|
restore_system_speed_limit
|
||||||
|
|
|
@ -8,7 +8,7 @@ check resync
|
||||||
mdadm $md0 --fail $dev2
|
mdadm $md0 --fail $dev2
|
||||||
check resync
|
check resync
|
||||||
mdadm $md0 --fail $dev1
|
mdadm $md0 --fail $dev1
|
||||||
sleep 1
|
sleep 2
|
||||||
check nosync
|
check nosync
|
||||||
check state U___
|
check state U___
|
||||||
mdadm $md0 --add $dev4 $dev3
|
mdadm $md0 --add $dev4 $dev3
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
mdadm -CR $md0 -l5 -n4 $dev0 $dev1 $dev2 $dev3
|
mdadm -CR $md0 -l5 -n4 $dev0 $dev1 $dev2 $dev3
|
||||||
check recovery
|
check recovery
|
||||||
mdadm $md0 --fail $dev3
|
mdadm $md0 --fail $dev3
|
||||||
sleep 1
|
sleep 2
|
||||||
check nosync
|
check nosync
|
||||||
check state UUU_
|
check state UUU_
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@ do
|
||||||
|
|
||||||
mdadm $md0 --add $dev1 $dev5
|
mdadm $md0 --add $dev1 $dev5
|
||||||
mdadm $md0 --replace $dev0
|
mdadm $md0 --replace $dev0
|
||||||
sleep 1
|
sleep 2
|
||||||
mdadm $md0 --fail $dev2
|
mdadm $md0 --fail $dev2
|
||||||
check wait
|
check wait
|
||||||
sum2=`sha1sum < $md0`
|
sum2=`sha1sum < $md0`
|
||||||
|
@ -42,7 +42,7 @@ do
|
||||||
mdadm $md0 --remove $dev0 $dev2
|
mdadm $md0 --remove $dev0 $dev2
|
||||||
mdadm $md0 --add $dev0 $dev2
|
mdadm $md0 --add $dev0 $dev2
|
||||||
mdadm $md0 --replace $dev3
|
mdadm $md0 --replace $dev3
|
||||||
sleep 1
|
sleep 2
|
||||||
mdadm $md0 --fail $dev0 $dev2
|
mdadm $md0 --fail $dev0 $dev2
|
||||||
check wait
|
check wait
|
||||||
sum3=`sha1sum < $md0`
|
sum3=`sha1sum < $md0`
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# make a raid5 array, byte swap the superblocks, then assemble...
|
# make a raid5 array, byte swap the superblocks, then assemble...
|
||||||
|
|
||||||
mdadm -CR $md0 -e 0.90 -l5 -n4 $dev0 $dev1 $dev2 $dev3
|
mdadm -CR $md0 -e 0.90 -l5 -n4 $dev0 $dev1 $dev2 $dev3
|
||||||
sleep 4
|
sleep 6
|
||||||
mdadm -S $md0
|
mdadm -S $md0
|
||||||
|
|
||||||
mdadm -E --metadata=0 $dev1 > $targetdir/d1
|
mdadm -E --metadata=0 $dev1 > $targetdir/d1
|
||||||
|
|
|
@ -8,11 +8,11 @@ testdev $md0 1 $mdsize1a 64
|
||||||
|
|
||||||
#mdadm -E $dev1
|
#mdadm -E $dev1
|
||||||
mdadm --grow $md0 --bitmap=internal --bitmap-chunk=4 --delay=1 || { mdadm -X $dev2 ; exit 1; }
|
mdadm --grow $md0 --bitmap=internal --bitmap-chunk=4 --delay=1 || { mdadm -X $dev2 ; exit 1; }
|
||||||
sleep 4
|
sleep 6
|
||||||
dirty1=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
dirty1=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
|
|
||||||
testdev $md0 1 $mdsize1a 64
|
testdev $md0 1 $mdsize1a 64
|
||||||
sleep 4
|
sleep 6
|
||||||
dirty2=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
dirty2=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
|
|
||||||
if [ $dirty1 -ne 0 -o $dirty2 -ne 0 ]
|
if [ $dirty1 -ne 0 -o $dirty2 -ne 0 ]
|
||||||
|
|
|
@ -8,11 +8,11 @@ testdev $md0 1 $mdsize1b 64
|
||||||
|
|
||||||
#mdadm -E $dev1
|
#mdadm -E $dev1
|
||||||
mdadm --grow $md0 --bitmap=internal --bitmap-chunk=4 --delay=1
|
mdadm --grow $md0 --bitmap=internal --bitmap-chunk=4 --delay=1
|
||||||
sleep 4
|
sleep 6
|
||||||
dirty1=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
dirty1=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
|
|
||||||
testdev $md0 1 $mdsize1b 64
|
testdev $md0 1 $mdsize1b 64
|
||||||
sleep 4
|
sleep 6
|
||||||
dirty2=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
dirty2=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
|
|
||||||
if [ $dirty1 -ne 0 -o $dirty2 -ne 0 ]
|
if [ $dirty1 -ne 0 -o $dirty2 -ne 0 ]
|
||||||
|
|
|
@ -9,7 +9,7 @@ mdadm -S $md0
|
||||||
|
|
||||||
mdadm --assemble $md0 $dev1 $dev2
|
mdadm --assemble $md0 $dev1 $dev2
|
||||||
testdev $md0 1 $mdsize0 64
|
testdev $md0 1 $mdsize0 64
|
||||||
sleep 4
|
sleep 6
|
||||||
dirty1=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
dirty1=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
|
|
||||||
if [ $dirty1 -ne 0 ]
|
if [ $dirty1 -ne 0 ]
|
||||||
|
@ -18,7 +18,7 @@ then echo >&2 "ERROR bad 'dirty' counts: $dirty1"
|
||||||
fi
|
fi
|
||||||
mdadm $md0 -f $dev1
|
mdadm $md0 -f $dev1
|
||||||
testdev $md0 1 $mdsize0 64
|
testdev $md0 1 $mdsize0 64
|
||||||
sleep 4
|
sleep 6
|
||||||
total=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) bits.*/\1/p'`
|
total=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) bits.*/\1/p'`
|
||||||
dirty2=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
dirty2=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
if [ $dirty2 -ne $total ]
|
if [ $dirty2 -ne $total ]
|
||||||
|
@ -34,7 +34,7 @@ mdadm $md0 --add $dev1
|
||||||
check recovery
|
check recovery
|
||||||
|
|
||||||
check wait
|
check wait
|
||||||
sleep 4
|
sleep 6
|
||||||
dirty3=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
dirty3=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
|
|
||||||
if [ $dirty3 -ne 0 ]
|
if [ $dirty3 -ne 0 ]
|
||||||
|
|
|
@ -10,7 +10,7 @@ mdadm -S $md0
|
||||||
|
|
||||||
mdadm --assemble $md0 $dev1 $dev2
|
mdadm --assemble $md0 $dev1 $dev2
|
||||||
testdev $md0 1 $mdsize1b 64
|
testdev $md0 1 $mdsize1b 64
|
||||||
sleep 4
|
sleep 6
|
||||||
dirty1=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
dirty1=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
|
|
||||||
if [ $dirty1 -ne 0 ]
|
if [ $dirty1 -ne 0 ]
|
||||||
|
@ -19,7 +19,7 @@ then echo >&2 "ERROR bad 'dirty' counts: $dirty1"
|
||||||
fi
|
fi
|
||||||
mdadm $md0 -f $dev1
|
mdadm $md0 -f $dev1
|
||||||
testdev $md0 1 $mdsize1b 64
|
testdev $md0 1 $mdsize1b 64
|
||||||
sleep 4
|
sleep 6
|
||||||
total=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) bits.*/\1/p'`
|
total=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) bits.*/\1/p'`
|
||||||
dirty2=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
dirty2=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
if [ $dirty2 -ne $total ]
|
if [ $dirty2 -ne $total ]
|
||||||
|
@ -35,7 +35,7 @@ mdadm $md0 --add $dev1
|
||||||
check recovery
|
check recovery
|
||||||
|
|
||||||
check wait
|
check wait
|
||||||
sleep 4
|
sleep 6
|
||||||
dirty3=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
dirty3=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
|
|
||||||
if [ $dirty3 -ne 0 ]
|
if [ $dirty3 -ne 0 ]
|
||||||
|
|
|
@ -11,7 +11,7 @@ mdadm -S $md0
|
||||||
mdadm --assemble $md0 $dev1 $dev2
|
mdadm --assemble $md0 $dev1 $dev2
|
||||||
check bitmap
|
check bitmap
|
||||||
testdev $md0 1 $mdsize11 64
|
testdev $md0 1 $mdsize11 64
|
||||||
sleep 4
|
sleep 6
|
||||||
dirty1=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
dirty1=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
|
|
||||||
if [ $dirty1 -ne 0 ]
|
if [ $dirty1 -ne 0 ]
|
||||||
|
@ -20,7 +20,7 @@ then echo >&2 "ERROR bad 'dirty' counts: $dirty1"
|
||||||
fi
|
fi
|
||||||
mdadm $md0 -f $dev1
|
mdadm $md0 -f $dev1
|
||||||
testdev $md0 1 $mdsize11 64
|
testdev $md0 1 $mdsize11 64
|
||||||
sleep 4
|
sleep 6
|
||||||
total=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) bits.*/\1/p'`
|
total=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) bits.*/\1/p'`
|
||||||
dirty2=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
dirty2=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
if [ $dirty2 -ne $total ]
|
if [ $dirty2 -ne $total ]
|
||||||
|
@ -35,7 +35,7 @@ mdadm --assemble -R $md0 $dev2
|
||||||
mdadm $md0 --add $dev1
|
mdadm $md0 --add $dev1
|
||||||
check recovery
|
check recovery
|
||||||
check wait
|
check wait
|
||||||
sleep 4
|
sleep 6
|
||||||
dirty3=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
dirty3=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
|
|
||||||
if [ $dirty3 -ne 0 ]
|
if [ $dirty3 -ne 0 ]
|
||||||
|
|
|
@ -10,7 +10,7 @@ mdadm -S $md0
|
||||||
|
|
||||||
mdadm --assemble $md0 $dev1 $dev2
|
mdadm --assemble $md0 $dev1 $dev2
|
||||||
testdev $md0 1 $mdsize12 64
|
testdev $md0 1 $mdsize12 64
|
||||||
sleep 4
|
sleep 6
|
||||||
dirty1=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
dirty1=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
|
|
||||||
if [ $dirty1 -ne 0 ]
|
if [ $dirty1 -ne 0 ]
|
||||||
|
@ -19,7 +19,7 @@ then echo >&2 "ERROR bad 'dirty' counts: $dirty1"
|
||||||
fi
|
fi
|
||||||
mdadm $md0 -f $dev1
|
mdadm $md0 -f $dev1
|
||||||
testdev $md0 1 $mdsize12 64
|
testdev $md0 1 $mdsize12 64
|
||||||
sleep 4
|
sleep 6
|
||||||
total=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) bits.*/\1/p'`
|
total=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) bits.*/\1/p'`
|
||||||
dirty2=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
dirty2=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
if [ $dirty2 -ne $total ]
|
if [ $dirty2 -ne $total ]
|
||||||
|
@ -35,7 +35,7 @@ mdadm $md0 --add $dev1
|
||||||
check recovery
|
check recovery
|
||||||
|
|
||||||
check wait
|
check wait
|
||||||
sleep 4
|
sleep 6
|
||||||
dirty3=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
dirty3=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
|
|
||||||
if [ $dirty3 -ne 0 ]
|
if [ $dirty3 -ne 0 ]
|
||||||
|
|
|
@ -9,17 +9,17 @@ mdadm -CR $md0 -l1 -n2 -binternal --bitmap-chunk=4 -d1 $dev1 $dev2
|
||||||
check resync
|
check resync
|
||||||
check wait
|
check wait
|
||||||
testdev $md0 1 $mdsize1a 64
|
testdev $md0 1 $mdsize1a 64
|
||||||
sleep 4
|
sleep 6
|
||||||
|
|
||||||
mdadm $md0 -f $dev2
|
mdadm $md0 -f $dev2
|
||||||
sleep 1
|
sleep 2
|
||||||
mdadm $md0 -r $dev2
|
mdadm $md0 -r $dev2
|
||||||
mdadm $md0 -a $dev2
|
mdadm $md0 -a $dev2
|
||||||
#cat /proc/mdstat
|
#cat /proc/mdstat
|
||||||
check nosync
|
check nosync
|
||||||
|
|
||||||
mdadm $md0 -f $dev2
|
mdadm $md0 -f $dev2
|
||||||
sleep 1
|
sleep 2
|
||||||
mdadm $md0 -r $dev2
|
mdadm $md0 -r $dev2
|
||||||
testdev $md0 1 $mdsize1a 64
|
testdev $md0 1 $mdsize1a 64
|
||||||
mdadm $md0 -a $dev2
|
mdadm $md0 -a $dev2
|
||||||
|
@ -27,7 +27,7 @@ check wait
|
||||||
blockdev --flushbufs $dev1 $dev2
|
blockdev --flushbufs $dev1 $dev2
|
||||||
cmp --ignore-initial=$[64*512] --bytes=$[$mdsize0*1024] $dev1 $dev2
|
cmp --ignore-initial=$[64*512] --bytes=$[$mdsize0*1024] $dev1 $dev2
|
||||||
|
|
||||||
mdadm $md0 -f $dev2; sleep 1
|
mdadm $md0 -f $dev2; sleep 2
|
||||||
mdadm $md0 -r $dev2
|
mdadm $md0 -r $dev2
|
||||||
if dd if=/dev/zero of=$md0 ; then : ; fi
|
if dd if=/dev/zero of=$md0 ; then : ; fi
|
||||||
blockdev --flushbufs $md0 # ensure writes have been sent.
|
blockdev --flushbufs $md0 # ensure writes have been sent.
|
||||||
|
|
|
@ -3,13 +3,14 @@
|
||||||
# readd should fail.
|
# readd should fail.
|
||||||
#
|
#
|
||||||
mdadm -B $md0 -l1 -n2 -d1 $dev1 $dev2
|
mdadm -B $md0 -l1 -n2 -d1 $dev1 $dev2
|
||||||
|
sleep 2
|
||||||
check resync
|
check resync
|
||||||
check wait
|
check wait
|
||||||
testdev $md0 1 $size 1
|
testdev $md0 1 $size 1
|
||||||
sleep 4
|
sleep 6
|
||||||
|
|
||||||
mdadm $md0 -f $dev2
|
mdadm $md0 -f $dev2
|
||||||
sleep 1
|
sleep 2
|
||||||
mdadm $md0 -r $dev2
|
mdadm $md0 -r $dev2
|
||||||
if mdadm $md0 --re-add $dev2; then
|
if mdadm $md0 --re-add $dev2; then
|
||||||
err "re-add should fail"
|
err "re-add should fail"
|
||||||
|
|
|
@ -9,7 +9,7 @@ mdadm -S $md0
|
||||||
|
|
||||||
mdadm --assemble $md0 $dev1 $dev2 $dev3
|
mdadm --assemble $md0 $dev1 $dev2 $dev3
|
||||||
testdev $md0 2 $mdsize1 512
|
testdev $md0 2 $mdsize1 512
|
||||||
sleep 4
|
sleep 6
|
||||||
dirty1=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
dirty1=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
|
|
||||||
if [ $dirty1 -ne 0 ]
|
if [ $dirty1 -ne 0 ]
|
||||||
|
@ -18,7 +18,7 @@ then echo >&2 "ERROR bad 'dirty' counts: $dirty1"
|
||||||
fi
|
fi
|
||||||
mdadm $md0 -f $dev1
|
mdadm $md0 -f $dev1
|
||||||
testdev $md0 2 $mdsize1 512
|
testdev $md0 2 $mdsize1 512
|
||||||
sleep 4
|
sleep 6
|
||||||
dirty2=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
dirty2=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
if [ $dirty2 -lt 400 ]
|
if [ $dirty2 -lt 400 ]
|
||||||
then
|
then
|
||||||
|
@ -33,7 +33,7 @@ mdadm --zero $dev1 # force --add, not --re-add
|
||||||
mdadm $md0 --add $dev1
|
mdadm $md0 --add $dev1
|
||||||
check recovery
|
check recovery
|
||||||
check wait
|
check wait
|
||||||
sleep 4
|
sleep 6
|
||||||
dirty3=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
dirty3=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
|
|
||||||
if [ $dirty3 -ne 0 ]
|
if [ $dirty3 -ne 0 ]
|
||||||
|
|
|
@ -4,28 +4,28 @@ set -x -e
|
||||||
# then reshape back up to RAID5 and RAID5
|
# then reshape back up to RAID5 and RAID5
|
||||||
|
|
||||||
mdadm -CR $md0 -l6 -n5 $dev0 $dev1 $dev2 $dev3 $dev4
|
mdadm -CR $md0 -l6 -n5 $dev0 $dev1 $dev2 $dev3 $dev4
|
||||||
check wait; sleep 1
|
check wait; sleep 2
|
||||||
check raid6
|
check raid6
|
||||||
testdev $md0 3 19456 512
|
testdev $md0 3 19456 512
|
||||||
mdadm -G $md0 -l5
|
mdadm -G $md0 -l5
|
||||||
check wait; sleep 1
|
check wait; sleep 2
|
||||||
check raid5
|
check raid5
|
||||||
testdev $md0 3 19456 512
|
testdev $md0 3 19456 512
|
||||||
mdadm -G $md0 -l0
|
mdadm -G $md0 -l0
|
||||||
check wait; sleep 1
|
check wait; sleep 2
|
||||||
while ps auxf | grep "mdadm -G" | grep -v grep
|
while ps auxf | grep "mdadm -G" | grep -v grep
|
||||||
do
|
do
|
||||||
sleep 1
|
sleep 2
|
||||||
done
|
done
|
||||||
check raid0
|
check raid0
|
||||||
testdev $md0 3 19456 512
|
testdev $md0 3 19456 512
|
||||||
mdadm -G $md0 -l5 --add $dev3 $dev4
|
mdadm -G $md0 -l5 --add $dev3 $dev4
|
||||||
check wait; sleep 1
|
check wait; sleep 2
|
||||||
check raid5
|
check raid5
|
||||||
check algorithm 2
|
check algorithm 2
|
||||||
testdev $md0 3 19456 512
|
testdev $md0 3 19456 512
|
||||||
mdadm -G $md0 -l 6
|
mdadm -G $md0 -l 6
|
||||||
check wait; sleep 1
|
check wait; sleep 2
|
||||||
check raid6
|
check raid6
|
||||||
check algorithm 2
|
check algorithm 2
|
||||||
testdev $md0 3 19456 512
|
testdev $md0 3 19456 512
|
||||||
|
|
|
@ -45,6 +45,7 @@ mdadm -CR $md2 -l1 -n2 $dev2 $dev3
|
||||||
mdadm -CR $md0 -l0 -n2 $md1 $md2
|
mdadm -CR $md0 -l0 -n2 $md1 $md2
|
||||||
mdadm -Ss
|
mdadm -Ss
|
||||||
mdadm -As -c /dev/null
|
mdadm -As -c /dev/null
|
||||||
|
cat /proc/mdstat # For logs
|
||||||
if [ $is_foreign == "yes" ]; then
|
if [ $is_foreign == "yes" ]; then
|
||||||
# md127 is md1
|
# md127 is md1
|
||||||
testdev $md127 1 $mdsize1a 64
|
testdev $md127 1 $mdsize1a 64
|
||||||
|
@ -55,6 +56,6 @@ if [ $is_foreign == "yes" ]; then
|
||||||
else
|
else
|
||||||
testdev $md1 1 $mdsize1a 64
|
testdev $md1 1 $mdsize1a 64
|
||||||
testdev $md2 1 $mdsize1a 64
|
testdev $md2 1 $mdsize1a 64
|
||||||
testdev $md0 2 $mdsize11a 512
|
testdev $md127 2 $mdsize11a 512
|
||||||
fi
|
fi
|
||||||
mdadm -Ss
|
mdadm -Ss
|
||||||
|
|
|
@ -5,12 +5,7 @@
|
||||||
# put a partition on each, create an array, and see if we can
|
# put a partition on each, create an array, and see if we can
|
||||||
# use autodetect to restart the array.
|
# use autodetect to restart the array.
|
||||||
|
|
||||||
if lsmod | grep md_mod > /dev/null 2>&1
|
[if lsmod | grep md_mod > /dev/null 2>&1] || skip "md is a module - cannot test autodetect"
|
||||||
then
|
|
||||||
echo md is a module - cannot test autodetect
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
mdadm -CR -e 0 $mdp0 -l0 -f -n1 $dev0
|
mdadm -CR -e 0 $mdp0 -l0 -f -n1 $dev0
|
||||||
mdadm -CR -e 0 $mdp1 -l0 -f -n1 $dev1
|
mdadm -CR -e 0 $mdp1 -l0 -f -n1 $dev1
|
||||||
|
@ -23,6 +18,7 @@ sfdisk $mdp1 >&2 << END
|
||||||
END
|
END
|
||||||
udevadm settle
|
udevadm settle
|
||||||
mdadm -CR -e 0 $md0 -l1 -n2 ${mdp0}p1 ${mdp1}p1
|
mdadm -CR -e 0 $md0 -l1 -n2 ${mdp0}p1 ${mdp1}p1
|
||||||
|
sleep 2
|
||||||
check resync
|
check resync
|
||||||
check raid1
|
check raid1
|
||||||
check wait
|
check wait
|
||||||
|
|
|
@ -12,7 +12,7 @@ checkgeo() {
|
||||||
shift
|
shift
|
||||||
sleep 0.5
|
sleep 0.5
|
||||||
check wait
|
check wait
|
||||||
sleep 1
|
sleep 2
|
||||||
for attr in level raid_disks chunk_size layout
|
for attr in level raid_disks chunk_size layout
|
||||||
do
|
do
|
||||||
if [ $# -gt 0 ] ; then
|
if [ $# -gt 0 ] ; then
|
||||||
|
|
|
@ -23,9 +23,9 @@ checkgeo() {
|
||||||
# level raid_disks chunk_size layout
|
# level raid_disks chunk_size layout
|
||||||
dev=$1
|
dev=$1
|
||||||
shift
|
shift
|
||||||
sleep 15
|
sleep 25
|
||||||
check wait
|
check wait
|
||||||
sleep 1
|
sleep 2
|
||||||
for attr in level raid_disks chunk_size layout
|
for attr in level raid_disks chunk_size layout
|
||||||
do
|
do
|
||||||
if [ $# -gt 0 ] ; then
|
if [ $# -gt 0 ] ; then
|
||||||
|
|
7
tests/07changelevels.broken
Normal file
7
tests/07changelevels.broken
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
Fails in multiple ways.
|
||||||
|
|
||||||
|
There are issues with RAID6:
|
||||||
|
- R5 -> R6 migration makes md unresponsive
|
||||||
|
- R6 -> R5 migration fails
|
||||||
|
|
||||||
|
Not worth investigating this now, marking as broken to clear the CI.
|
|
@ -58,7 +58,7 @@ l5[4]=parity-first
|
||||||
l5[5]=parity-last
|
l5[5]=parity-last
|
||||||
for layout in 0 1 2 3 4 5 0
|
for layout in 0 1 2 3 4 5 0
|
||||||
do
|
do
|
||||||
mdadm -G $md0 --layout=${l5[$layout]} --backup-file $bu
|
mdadm -G $md0 --layout=${l5[$layout]}
|
||||||
checkgeo md0 raid5 5 $[512*1024] $layout
|
checkgeo md0 raid5 5 $[512*1024] $layout
|
||||||
dotest 4
|
dotest 4
|
||||||
done
|
done
|
||||||
|
@ -85,7 +85,7 @@ l6[19]=right-symmetric-6
|
||||||
l6[20]=parity-first-6
|
l6[20]=parity-first-6
|
||||||
for layout in 0 1 2 3 4 5 8 9 10 16 17 18 19 20 0
|
for layout in 0 1 2 3 4 5 8 9 10 16 17 18 19 20 0
|
||||||
do
|
do
|
||||||
mdadm -G $md0 --layout=${l6[$layout]} --backup-file $bu
|
mdadm -G $md0 --layout=${l6[$layout]}
|
||||||
checkgeo md0 raid6 5 $[512*1024] $layout
|
checkgeo md0 raid6 5 $[512*1024] $layout
|
||||||
dotest 3
|
dotest 3
|
||||||
done
|
done
|
||||||
|
|
|
@ -38,7 +38,7 @@ do
|
||||||
if [[ $(echo check > /sys/block/md0/md/sync_action) != 0 ]]; then
|
if [[ $(echo check > /sys/block/md0/md/sync_action) != 0 ]]; then
|
||||||
break;
|
break;
|
||||||
fi
|
fi
|
||||||
sleep 1
|
sleep 2
|
||||||
done
|
done
|
||||||
|
|
||||||
if [[ i == max ]]; then
|
if [[ i == max ]]; then
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
# shaped md arrays.
|
# shaped md arrays.
|
||||||
set -x
|
set -x
|
||||||
dir="."
|
dir="."
|
||||||
|
|
||||||
|
[ -e $dir/test_stripe ] || skip "test_stripes binary has not been compiled, skipping"
|
||||||
|
|
||||||
layouts=(la ra ls rs)
|
layouts=(la ra ls rs)
|
||||||
for level in 5 6
|
for level in 5 6
|
||||||
do
|
do
|
||||||
|
|
|
@ -12,12 +12,23 @@ imsm_check_hold() {
|
||||||
}
|
}
|
||||||
|
|
||||||
imsm_check_removal() {
|
imsm_check_removal() {
|
||||||
if ! mdadm --remove $1 $2 ; then
|
local ret=5
|
||||||
echo "$2 removal from $1 should have succeeded" >&2
|
local success=0
|
||||||
cat /proc/mdstat >&2
|
|
||||||
mdadm -E $2
|
for ((i=1; i<=ret; i++)); do
|
||||||
exit 1
|
if mdadm --remove "$1" "$2"; then
|
||||||
fi
|
success=1
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep 2
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ $success -ne 1 ]; then
|
||||||
|
echo "$2 removal from $1 should have succeeded" >&2
|
||||||
|
cat /proc/mdstat >&2
|
||||||
|
mdadm -E "$2"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
export IMSM_DEVNAME_AS_SERIAL=1
|
export IMSM_DEVNAME_AS_SERIAL=1
|
||||||
|
|
|
@ -16,7 +16,7 @@ mdadm --wait $member0 || true
|
||||||
mdadm --wait $member1 || true
|
mdadm --wait $member1 || true
|
||||||
|
|
||||||
mdadm -Ss
|
mdadm -Ss
|
||||||
sleep 1
|
sleep 2
|
||||||
|
|
||||||
# Add all devices except those for $member0
|
# Add all devices except those for $member0
|
||||||
mdadm -I $dev10
|
mdadm -I $dev10
|
||||||
|
|
5
tests/10ddf-create.broken
Normal file
5
tests/10ddf-create.broken
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
Fails due to segmentation fault at assemble.
|
||||||
|
|
||||||
|
Too much effort to diagnose this now, marking as broken to make CI clear.
|
||||||
|
++ /usr/sbin/mdadm -A /dev/md/ddf0 /dev/loop8 /dev/loop9 /dev/loop10 /dev/loop11 /dev/loop12
|
||||||
|
./test: line 76: 101955 Segmentation fault (core dumped) $mdadm "$@" 2> $targetdir/stderr
|
|
@ -17,7 +17,7 @@ set -- $(get_raiddisks $member0)
|
||||||
fail0=$1
|
fail0=$1
|
||||||
mdadm $member0 --fail $fail0
|
mdadm $member0 --fail $fail0
|
||||||
|
|
||||||
sleep 1
|
sleep 2
|
||||||
mdadm $container --remove $fail0
|
mdadm $container --remove $fail0
|
||||||
|
|
||||||
set -- $(get_raiddisks $member0)
|
set -- $(get_raiddisks $member0)
|
||||||
|
@ -27,7 +27,7 @@ good0=$1
|
||||||
# We re-add the disk now
|
# We re-add the disk now
|
||||||
mdadm $container --add $fail0
|
mdadm $container --add $fail0
|
||||||
|
|
||||||
sleep 1
|
sleep 2
|
||||||
mdadm --wait $member0 || true
|
mdadm --wait $member0 || true
|
||||||
|
|
||||||
ret=0
|
ret=0
|
||||||
|
|
|
@ -16,7 +16,7 @@ set -- $(get_raiddisks $member0)
|
||||||
fail0=$1
|
fail0=$1
|
||||||
mdadm $member0 --fail $fail0
|
mdadm $member0 --fail $fail0
|
||||||
|
|
||||||
sleep 1
|
sleep 2
|
||||||
set -- $(get_raiddisks $member0)
|
set -- $(get_raiddisks $member0)
|
||||||
case $1 in MISSING) shift;; esac
|
case $1 in MISSING) shift;; esac
|
||||||
good0=$1
|
good0=$1
|
||||||
|
@ -44,7 +44,7 @@ mdadm $container --remove $fail0
|
||||||
# We re-add the disk now
|
# We re-add the disk now
|
||||||
mdadm $container --add $fail0
|
mdadm $container --add $fail0
|
||||||
|
|
||||||
sleep 1
|
sleep 2
|
||||||
mdadm --wait $member0 || true
|
mdadm --wait $member0 || true
|
||||||
|
|
||||||
set -- $(get_raiddisks $member0)
|
set -- $(get_raiddisks $member0)
|
||||||
|
|
|
@ -18,7 +18,7 @@ set -- $(get_raiddisks $member0)
|
||||||
fail0=$1
|
fail0=$1
|
||||||
mdadm $member0 --fail $fail0
|
mdadm $member0 --fail $fail0
|
||||||
|
|
||||||
sleep 1
|
sleep 2
|
||||||
mdadm $container --remove $fail0
|
mdadm $container --remove $fail0
|
||||||
|
|
||||||
set -- $(get_raiddisks $member0)
|
set -- $(get_raiddisks $member0)
|
||||||
|
@ -27,7 +27,7 @@ good0=$1
|
||||||
|
|
||||||
mdadm -Ss
|
mdadm -Ss
|
||||||
|
|
||||||
sleep 1
|
sleep 2
|
||||||
# Now simulate incremental assembly
|
# Now simulate incremental assembly
|
||||||
mdadm -I $good0
|
mdadm -I $good0
|
||||||
mdadm -IRs || true
|
mdadm -IRs || true
|
||||||
|
@ -38,7 +38,7 @@ mke2fs -F $member0
|
||||||
# We re-add the disk now
|
# We re-add the disk now
|
||||||
mdadm $container --add $fail0
|
mdadm $container --add $fail0
|
||||||
|
|
||||||
sleep 1
|
sleep 2
|
||||||
mdadm --wait $member0 || true
|
mdadm --wait $member0 || true
|
||||||
|
|
||||||
ret=0
|
ret=0
|
||||||
|
|
|
@ -23,7 +23,7 @@ sum0=$(sha1sum $member0)
|
||||||
sum1=$(sha1sum $member1)
|
sum1=$(sha1sum $member1)
|
||||||
|
|
||||||
mdadm --fail $member1 $dev11
|
mdadm --fail $member1 $dev11
|
||||||
sleep 1
|
sleep 2
|
||||||
mdadm --fail $member1 $dev12
|
mdadm --fail $member1 $dev12
|
||||||
|
|
||||||
# We will have 4 resync procedures, 2 spares for 2 arrays.
|
# We will have 4 resync procedures, 2 spares for 2 arrays.
|
||||||
|
|
|
@ -23,7 +23,7 @@ sha_0a=$(sha1_sum $member0)
|
||||||
sha_1a=$(sha1_sum $member1)
|
sha_1a=$(sha1_sum $member1)
|
||||||
|
|
||||||
mdadm -Ss
|
mdadm -Ss
|
||||||
sleep 1
|
sleep 2
|
||||||
|
|
||||||
# Add all devices except those for $member0
|
# Add all devices except those for $member0
|
||||||
mdadm -I $dev10
|
mdadm -I $dev10
|
||||||
|
@ -35,7 +35,7 @@ e2fsck -fy $member1
|
||||||
sha_1b=$(sha1_sum $member1)
|
sha_1b=$(sha1_sum $member1)
|
||||||
|
|
||||||
mdadm -Ss
|
mdadm -Ss
|
||||||
sleep 1
|
sleep 2
|
||||||
|
|
||||||
# Seq number should be different now
|
# Seq number should be different now
|
||||||
seq8a=$(mdadm -E $dev8 | sed -n 's/^ *Seq : //p')
|
seq8a=$(mdadm -E $dev8 | sed -n 's/^ *Seq : //p')
|
||||||
|
@ -64,7 +64,7 @@ sha_0c=$(sha1_sum $member0)
|
||||||
sha_1c=$(sha1_sum $member1)
|
sha_1c=$(sha1_sum $member1)
|
||||||
|
|
||||||
mdadm -Ss
|
mdadm -Ss
|
||||||
sleep 1
|
sleep 2
|
||||||
|
|
||||||
seq8c=$(mdadm -E $dev8 | sed -n 's/^ *Seq : //p')
|
seq8c=$(mdadm -E $dev8 | sed -n 's/^ *Seq : //p')
|
||||||
seq10c=$(mdadm -E $dev10 | sed -n 's/^ *Seq : //p')
|
seq10c=$(mdadm -E $dev10 | sed -n 's/^ *Seq : //p')
|
||||||
|
@ -103,7 +103,7 @@ if mdadm -A $container $dev8 $dev9 $dev10 $dev11; then
|
||||||
sha_0d=$(sha1_sum $member0)
|
sha_0d=$(sha1_sum $member0)
|
||||||
sha_1d=$(sha1_sum $member1)
|
sha_1d=$(sha1_sum $member1)
|
||||||
mdadm -Ss
|
mdadm -Ss
|
||||||
sleep 1
|
sleep 2
|
||||||
seq8d=$(mdadm -E $dev8 | sed -n 's/^ *Seq : //p')
|
seq8d=$(mdadm -E $dev8 | sed -n 's/^ *Seq : //p')
|
||||||
seq10d=$(mdadm -E $dev10 | sed -n 's/^ *Seq : //p')
|
seq10d=$(mdadm -E $dev10 | sed -n 's/^ *Seq : //p')
|
||||||
if [ x$sha_0a != x$sha_0d ]; then
|
if [ x$sha_0a != x$sha_0d ]; then
|
||||||
|
|
|
@ -54,7 +54,7 @@ clean_up_test()
|
||||||
kill -9 $pid
|
kill -9 $pid
|
||||||
kill -9 $action_pid
|
kill -9 $action_pid
|
||||||
|
|
||||||
sleep 1
|
sleep 2
|
||||||
|
|
||||||
if ps $action_pid | tail -1 | awk '{print $3}' | grep D; then
|
if ps $action_pid | tail -1 | awk '{print $3}' | grep D; then
|
||||||
die "thread that is writing sysfs is stuck in D state, deadlock is triggered"
|
die "thread that is writing sysfs is stuck in D state, deadlock is triggered"
|
||||||
|
@ -62,7 +62,7 @@ clean_up_test()
|
||||||
mdadm -S $md0
|
mdadm -S $md0
|
||||||
}
|
}
|
||||||
|
|
||||||
cat /sys/kernel/debug/fail_make_request/times || die "fault injection is not enabled"
|
cat /sys/kernel/debug/fail_make_request/times || skip "fault injection is not enabled"
|
||||||
|
|
||||||
trap 'clean_up_test' EXIT
|
trap 'clean_up_test' EXIT
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@ clean_up_test()
|
||||||
pkill -9 fio
|
pkill -9 fio
|
||||||
kill -9 $pid
|
kill -9 $pid
|
||||||
|
|
||||||
sleep 1
|
sleep 2
|
||||||
|
|
||||||
if ps $pid | tail -1 | awk '{print $3}' | grep D; then
|
if ps $pid | tail -1 | awk '{print $3}' | grep D; then
|
||||||
die "thread that is writing sysfs is stuck in D state, deadlock is triggered"
|
die "thread that is writing sysfs is stuck in D state, deadlock is triggered"
|
||||||
|
|
|
@ -2,7 +2,7 @@ devs="$dev0 $dev1 $dev2"
|
||||||
|
|
||||||
set_up_test()
|
set_up_test()
|
||||||
{
|
{
|
||||||
mdadm -Cv -R -n 3 -l5 $md0 $devs --assume-clean --size=50M || die "create array failed"
|
mdadm -Cv -R -n 3 -l5 $md0 $devs --assume-clean --size=10M || die "create array failed"
|
||||||
mdadm -a $md0 $dev3 $dev4 || die "failed to bind new disk to array"
|
mdadm -a $md0 $dev3 $dev4 || die "failed to bind new disk to array"
|
||||||
echo 1000 > /sys/block/md0/md/sync_speed_max
|
echo 1000 > /sys/block/md0/md/sync_speed_max
|
||||||
}
|
}
|
||||||
|
@ -18,13 +18,13 @@ set_up_test || die "set up test failed"
|
||||||
|
|
||||||
# trigger reshape
|
# trigger reshape
|
||||||
mdadm --grow -l 6 $md0
|
mdadm --grow -l 6 $md0
|
||||||
sleep 1
|
sleep 2
|
||||||
|
|
||||||
# set up replacement
|
# set up replacement
|
||||||
echo frozen > /sys/block/md0/md/sync_action
|
echo frozen > /sys/block/md0/md/sync_action
|
||||||
echo want_replacement > /sys/block/md0/md/rd0/state
|
echo want_replacement > /sys/block/md0/md/rd0/state
|
||||||
echo reshape > /sys/block/md0/md/sync_action
|
echo reshape > /sys/block/md0/md/sync_action
|
||||||
sleep 1
|
sleep 2
|
||||||
|
|
||||||
# reassemeble array
|
# reassemeble array
|
||||||
mdadm -S $md0 || die "can't stop array"
|
mdadm -S $md0 || die "can't stop array"
|
||||||
|
|
|
@ -2,10 +2,10 @@ devs="$dev0 $dev1 $dev2"
|
||||||
|
|
||||||
set_up_test()
|
set_up_test()
|
||||||
{
|
{
|
||||||
mdadm -Cv -R -n 3 -l5 $md0 $devs --size=50M || die "create array failed"
|
mdadm -Cv -R -n 3 -l5 $md0 $devs --size=10M || die "create array failed"
|
||||||
mdadm -a $md0 $dev3 || die "failed to bind new disk to array"
|
mdadm -a $md0 $dev3 || die "failed to bind new disk to array"
|
||||||
mkfs.xfs -f $md0 || die "mkfs failed"
|
mkfs.ext4 -F $md0 || die "mkfs failed"
|
||||||
xfs_ncheck $md0 || die "check fs failed"
|
e2fsck -pvf $md0 || die "check fs failed"
|
||||||
}
|
}
|
||||||
|
|
||||||
clean_up_test()
|
clean_up_test()
|
||||||
|
@ -20,7 +20,7 @@ set_up_test || die "set up test failed"
|
||||||
# trigger reshape
|
# trigger reshape
|
||||||
echo 1000 > /sys/block/md0/md/sync_speed_max
|
echo 1000 > /sys/block/md0/md/sync_speed_max
|
||||||
mdadm --grow -l 6 $md0
|
mdadm --grow -l 6 $md0
|
||||||
sleep 1
|
sleep 2
|
||||||
|
|
||||||
# stop and start reshape
|
# stop and start reshape
|
||||||
echo frozen > /sys/block/md0/md/sync_action
|
echo frozen > /sys/block/md0/md/sync_action
|
||||||
|
@ -30,6 +30,6 @@ echo reshape > /sys/block/md0/md/sync_action
|
||||||
mdadm -W $md0
|
mdadm -W $md0
|
||||||
|
|
||||||
# check if data is corrupted
|
# check if data is corrupted
|
||||||
xfs_ncheck $md0 || die "data is corrupted after reshape"
|
e2fsck -vn $md0 || die "data is corrupted after reshape"
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|
|
@ -2,7 +2,7 @@ devs="$dev0 $dev1 $dev2"
|
||||||
|
|
||||||
set_up_test()
|
set_up_test()
|
||||||
{
|
{
|
||||||
mdadm -Cv -R -n 3 -l5 $md0 $devs --size=50M || die "create array failed"
|
mdadm -Cv -R -n 3 -l5 $md0 $devs --size=10M || die "create array failed"
|
||||||
mdadm -a $md0 $dev3 || die "failed to bind new disk to array"
|
mdadm -a $md0 $dev3 || die "failed to bind new disk to array"
|
||||||
echo 1000 > /sys/block/md0/md/sync_speed_max
|
echo 1000 > /sys/block/md0/md/sync_speed_max
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@ set_up_test || die "set up test failed"
|
||||||
|
|
||||||
# trigger reshape
|
# trigger reshape
|
||||||
mdadm --grow -l 6 $md0
|
mdadm --grow -l 6 $md0
|
||||||
sleep 1
|
sleep 2
|
||||||
|
|
||||||
# stop reshape
|
# stop reshape
|
||||||
echo frozen > /sys/block/md0/md/sync_action
|
echo frozen > /sys/block/md0/md/sync_action
|
||||||
|
|
|
@ -2,7 +2,7 @@ devs="$dev0 $dev1 $dev2"
|
||||||
|
|
||||||
set_up_test()
|
set_up_test()
|
||||||
{
|
{
|
||||||
mdadm -Cv -R -n 3 -l5 $md0 $devs --assume-clean --size=50M || die "create array failed"
|
mdadm -Cv -R -n 3 -l5 $md0 $devs --assume-clean --size=10M || die "create array failed"
|
||||||
mdadm -a $md0 $dev3 $dev4 || die "failed to bind new disk to array"
|
mdadm -a $md0 $dev3 $dev4 || die "failed to bind new disk to array"
|
||||||
echo 1000 > /sys/block/md0/md/sync_speed_max
|
echo 1000 > /sys/block/md0/md/sync_speed_max
|
||||||
}
|
}
|
||||||
|
@ -18,12 +18,12 @@ set_up_test || die "set up test failed"
|
||||||
|
|
||||||
# set up replacement
|
# set up replacement
|
||||||
echo want_replacement > /sys/block/md0/md/rd0/state
|
echo want_replacement > /sys/block/md0/md/rd0/state
|
||||||
sleep 1
|
sleep 2
|
||||||
|
|
||||||
# trigger reshape
|
# trigger reshape
|
||||||
echo frozen > /sys/block/md0/md/sync_action
|
echo frozen > /sys/block/md0/md/sync_action
|
||||||
mdadm --grow -l 6 $md0
|
mdadm --grow -l 6 $md0
|
||||||
sleep 1
|
sleep 2
|
||||||
|
|
||||||
# reassemeble array
|
# reassemeble array
|
||||||
mdadm -S $md0 || die "can't stop array"
|
mdadm -S $md0 || die "can't stop array"
|
||||||
|
|
5
tests/25raid456-reshape-while-recovery.broken
Normal file
5
tests/25raid456-reshape-while-recovery.broken
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
There are multiple issues with this test:
|
||||||
|
- kernel version dependent
|
||||||
|
- can fail in multiple ways
|
||||||
|
|
||||||
|
Marking this test as broken, so it's not executed by CI.
|
|
@ -3,10 +3,8 @@ sha1_sum() {
|
||||||
}
|
}
|
||||||
|
|
||||||
get_rootdev() {
|
get_rootdev() {
|
||||||
local dev=$(stat -c %D /)
|
local part=$(grep ' / ' /proc/mounts | awk '{print $1}')
|
||||||
local maj=$(expr $dev : '\(..*\)..')
|
local bd=/dev/$(lsblk -no PKNAME $part)
|
||||||
local min=${dev#$maj}
|
|
||||||
local bd=/dev/$(basename $(readlink /sys/dev/block/$((0x$maj)):$((0x$min))))
|
|
||||||
[ -b $bd ] || exit 1
|
[ -b $bd ] || exit 1
|
||||||
echo $bd
|
echo $bd
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,7 +59,7 @@ save_log() {
|
||||||
array=($(mdadm -Ds | cut -d' ' -f2))
|
array=($(mdadm -Ds | cut -d' ' -f2))
|
||||||
[ "$1" == "fail" ] &&
|
[ "$1" == "fail" ] &&
|
||||||
fail "FAILED"
|
fail "FAILED"
|
||||||
echo " - see $logdir/$_basename.log and $logdir/$logfile for details\n"
|
echo " - see $logdir/$_basename.log and $logdir/$logfile for details"
|
||||||
if [ $DEVTYPE == 'lvm' ]
|
if [ $DEVTYPE == 'lvm' ]
|
||||||
then
|
then
|
||||||
# not supported lvm type yet
|
# not supported lvm type yet
|
||||||
|
@ -209,7 +209,7 @@ wait_for_reshape_end() {
|
||||||
do
|
do
|
||||||
sync_action=$(grep -Ec '(resync|recovery|reshape|check|repair) *=' /proc/mdstat)
|
sync_action=$(grep -Ec '(resync|recovery|reshape|check|repair) *=' /proc/mdstat)
|
||||||
if (( "$sync_action" != 0 )); then
|
if (( "$sync_action" != 0 )); then
|
||||||
sleep 1
|
sleep 2
|
||||||
continue
|
continue
|
||||||
elif [[ $(pgrep -f "mdadm --grow --continue" > /dev/null) != "" ]]; then
|
elif [[ $(pgrep -f "mdadm --grow --continue" > /dev/null) != "" ]]; then
|
||||||
echo "Grow continue did not finish but reshape is done" >&2
|
echo "Grow continue did not finish but reshape is done" >&2
|
||||||
|
@ -381,7 +381,7 @@ check() {
|
||||||
do
|
do
|
||||||
sync_action=$(grep -Ec '(resync|recovery|reshape|check|repair) *=' /proc/mdstat)
|
sync_action=$(grep -Ec '(resync|recovery|reshape|check|repair) *=' /proc/mdstat)
|
||||||
if (( "$sync_action" == 0 )); then
|
if (( "$sync_action" == 0 )); then
|
||||||
sleep 1
|
sleep 2
|
||||||
iterations=$(( $iterations + 1 ))
|
iterations=$(( $iterations + 1 ))
|
||||||
continue
|
continue
|
||||||
else
|
else
|
||||||
|
@ -445,7 +445,7 @@ no_errors() {
|
||||||
|
|
||||||
# basic device test
|
# basic device test
|
||||||
testdev() {
|
testdev() {
|
||||||
[ -b $1 ] || die "$1 isn't a block device."
|
lsblk -no name $1 || die "$1 isn't a block device."
|
||||||
[ "$DEVTYPE" == "disk" ] && return 0
|
[ "$DEVTYPE" == "disk" ] && return 0
|
||||||
udevadm settle
|
udevadm settle
|
||||||
dev=$1
|
dev=$1
|
||||||
|
|
Loading…
Add table
Reference in a new issue