2025-02-14 05:52:19 +01:00
|
|
|
|
|
|
|
#
|
|
|
|
# test interrupting and restarting raid5 reshape.
|
|
|
|
set -x
|
|
|
|
devs="$dev1"
|
|
|
|
st=UU
|
|
|
|
for disks in 2 3 4 5
|
|
|
|
do
|
|
|
|
eval devs=\"$devs \$dev$disks\"
|
|
|
|
st=U$st
|
|
|
|
for d in $devs
|
|
|
|
do dd if=/dev/urandom of=$d bs=1024 || true
|
|
|
|
done
|
|
|
|
|
|
|
|
case $disks in
|
|
|
|
2 | 3) chunk=1024;;
|
|
|
|
4 ) chunk=512;;
|
|
|
|
5 ) chunk=256;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
mdadm -CR $md0 -amd -l5 -c $chunk -n$disks --assume-clean $devs
|
|
|
|
mdadm $md0 --add $dev6
|
|
|
|
echo 20 > /proc/sys/dev/raid/speed_limit_min
|
|
|
|
echo 20 > /proc/sys/dev/raid/speed_limit_max
|
|
|
|
mdadm --grow $md0 -n $[disks+1]
|
|
|
|
check reshape
|
|
|
|
check state $st
|
|
|
|
mdadm --stop $md0
|
|
|
|
mdadm --assemble $md0 $devs $dev6
|
|
|
|
check reshape
|
|
|
|
echo 1000 > /proc/sys/dev/raid/speed_limit_min
|
|
|
|
echo 2000 > /proc/sys/dev/raid/speed_limit_max
|
|
|
|
check wait
|
2025-02-14 06:37:23 +01:00
|
|
|
|
|
|
|
max=5
|
|
|
|
|
|
|
|
for ((i = 0 ; i < max ; i++ )); do
|
|
|
|
if [[ $(echo check > /sys/block/md0/md/sync_action) != 0 ]]; then
|
|
|
|
break;
|
|
|
|
fi
|
2025-02-14 06:38:13 +01:00
|
|
|
sleep 2
|
2025-02-14 06:37:23 +01:00
|
|
|
done
|
|
|
|
|
|
|
|
if [[ i == max ]]; then
|
|
|
|
echo >&2 "Timeout waiting for check to succeed"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2025-02-14 05:52:19 +01:00
|
|
|
check wait
|
|
|
|
mm=`cat /sys/block/md0/md/mismatch_cnt`
|
|
|
|
if [ $mm -gt 0 ]
|
|
|
|
then echo >&2 "ERROR mismatch_cnt non-zero : $mm" ; exit 1
|
|
|
|
fi
|
|
|
|
mdadm -S $md0
|
|
|
|
done
|