sometimes the removed device is re-added before the writes get all the way to the md device - so the array doesn't need any recovery and the test fails. So flush first to be safe. Signed-off-by: NeilBrown <neilb@suse.com>
40 lines
887 B
Plaintext
40 lines
887 B
Plaintext
|
|
#
|
|
# create a raid1, remove a drive, and readd it.
|
|
# resync should be instant.
|
|
# Then do some IO first. Resync should still be very fast
|
|
#
|
|
|
|
mdadm -CR $md0 -l1 -n2 -binternal --bitmap-chunk=4 -d1 $dev1 $dev2
|
|
check resync
|
|
check wait
|
|
testdev $md0 1 $mdsize1a 64
|
|
sleep 4
|
|
|
|
mdadm $md0 -f $dev2
|
|
sleep 1
|
|
mdadm $md0 -r $dev2
|
|
mdadm $md0 -a $dev2
|
|
#cat /proc/mdstat
|
|
check nosync
|
|
|
|
mdadm $md0 -f $dev2
|
|
sleep 1
|
|
mdadm $md0 -r $dev2
|
|
testdev $md0 1 $mdsize1a 64
|
|
mdadm $md0 -a $dev2
|
|
check wait
|
|
blockdev --flushbufs $dev1 $dev2
|
|
cmp --ignore-initial=$[64*512] --bytes=$[$mdsize0*1024] $dev1 $dev2
|
|
|
|
mdadm $md0 -f $dev2; sleep 1
|
|
mdadm $md0 -r $dev2
|
|
if dd if=/dev/zero of=$md0 ; then : ; fi
|
|
blockdev --flushbufs $md0 # ensure writes have been sent.
|
|
mdadm $md0 -a $dev2
|
|
check recovery
|
|
check wait
|
|
blockdev --flushbufs $dev1 $dev2
|
|
cmp --ignore-initial=$[64*512] --bytes=$[$mdsize0*1024] $dev1 $dev2
|
|
mdadm -S $md0
|