set -x -e ## test --replace for raid5 raid6 raid1 and raid10 #1/ after replace, can remove replaced device #2/ after --replace-with cannot remove the 'with' device #3/ preserve integrity with concurrent failure for level in 1 5 6 10 do dd if=/dev/zero of=$dev4 bs=1M || true dd if=/dev/zero of=$dev5 bs=1M || true mdadm -CR $md0 -l $level -n4 -x2 $devlist5 dd if=/dev/urandom of=$md0 bs=1M || true sum=`sha1sum < $md0` check wait mdadm $md0 --replace $dev1 check wait mdadm $md0 --remove $dev1 mdadm $md0 --remove $dev5 && exit 1 mdadm -S $md0 dd if=/dev/zero of=$dev4 bs=1M || true dd if=/dev/zero of=$dev5 bs=1M || true mdadm -CR $md0 -l $level -n4 -x2 $devlist5 check wait sum1=`sha1sum < $md0` [ "$sum" == "$sum1" ] mdadm $md0 --replace $dev1 --with $dev4 check wait mdadm $md0 --remove $dev1 mdadm $md0 --remove $dev5 mdadm $md0 --remove $dev4 && exit 1 mdadm $md0 --add $dev1 $dev5 mdadm $md0 --replace $dev0 sleep 1 mdadm $md0 --fail $dev2 check wait sum2=`sha1sum < $md0` [ "$sum" == "$sum2" ] mdadm $md0 --remove $dev0 $dev2 mdadm $md0 --add $dev0 $dev2 mdadm $md0 --replace $dev3 sleep 1 mdadm $md0 --fail $dev0 $dev2 check wait sum3=`sha1sum < $md0` [ "$sum" == "$sum3" ] mdadm -S $md0 done