diff --git a/test b/test index 0e168ff..6f79c3a 100755 --- a/test +++ b/test @@ -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