test: check sync_action as well when checking for an action.

Some actions only appear in /proc/mdstat after a little delay,
so check in sync_action as well.

This applies when checking for recovery etc, and when waiting for idle.

Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
NeilBrown 2015-07-06 13:58:19 +10:00
parent 602b916951
commit a76b3a345b
1 changed files with 14 additions and 5 deletions

19
test
View File

@ -188,10 +188,18 @@ check() {
echo >&2 "ERROR algorithm $2 not found"; cat /proc/mdstat; exit 1;}
;;
resync | recovery | reshape)
sleep 0.5
grep -s $1 /proc/mdstat > /dev/null || {
echo >&2 ERROR no $1 happening; cat /proc/mdstat; exit 1; }
;;
cnt=5
while ! grep -s $1 /proc/mdstat > /dev/null
do
if [ $cnt -gt 0 ] && grep -v idle /sys/block/md*/md/sync_action > /dev/null
then # Something isn't idle - wait a bit
sleep 0.5
cnt=$[cnt-1]
else
echo >&2 ERROR no $1 happening; cat /proc/mdstat; exit 1
fi
done
;;
nosync )
sleep 0.5
@ -204,7 +212,8 @@ check() {
p=`cat /proc/sys/dev/raid/speed_limit_max`
echo 2000000 > /proc/sys/dev/raid/speed_limit_max
sleep 0.1
while grep -E '(resync|recovery|reshape|check|repair) *=' > /dev/null /proc/mdstat /sys/block/md*/md/sync_action
while grep -E '(resync|recovery|reshape|check|repair) *=' > /dev/null /proc/mdstat ||
grep -v idle > /dev/null /sys/block/md*/md/sync_action
do sleep 0.5;
done
echo $p > /proc/sys/dev/raid/speed_limit_max