78 lines
1.9 KiB
Text
78 lines
1.9 KiB
Text
# sanity check array creation
|
|
|
|
imsm_check_hold() {
|
|
if mdadm --remove $1 $2; then
|
|
echo "$2 removal from $1 should have been blocked" >&2
|
|
cat /proc/mdstat >&2
|
|
mdadm -E $2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
imsm_check_removal() {
|
|
if ! mdadm --remove $1 $2 ; then
|
|
echo "$2 removal from $1 should have succeeded" >&2
|
|
cat /proc/mdstat >&2
|
|
mdadm -E $2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
. tests/env-imsm-template
|
|
|
|
# IMSM rounds to multiples of one mebibyte - 1024K
|
|
DEV_ROUND_K=1024
|
|
|
|
num_disks=2
|
|
mdadm -CR $container -e imsm -n $num_disks $dev0 $dev1
|
|
imsm_check container $num_disks
|
|
|
|
# RAID0 + RAID1
|
|
size=9000
|
|
level=0
|
|
chunk=64
|
|
offset=0
|
|
mdadm -CR $member0 $dev0 $dev1 -n $num_disks -l $level -z $size -c $chunk
|
|
imsm_check member $member0 $num_disks $level $size $((size*2)) $offset $chunk
|
|
testdev $member0 $num_disks $size $chunk
|
|
|
|
offset=$(((size & ~(1024 - 1)) + 4096))
|
|
size=4000
|
|
level=1
|
|
chunk=0
|
|
mdadm -CR $member1 $dev0 $dev1 -n $num_disks -l $level -z $size
|
|
imsm_check member $member1 $num_disks $level $size $size $offset $chunk
|
|
testdev $member1 1 $size 64
|
|
check wait
|
|
|
|
mdadm -Ss
|
|
|
|
# RAID10 + RAID5
|
|
num_disks=4
|
|
mdadm -CR $container -e imsm -n $num_disks $dev0 $dev1 $dev2 $dev3
|
|
imsm_check container $num_disks
|
|
|
|
size=9000
|
|
level=10
|
|
chunk=64
|
|
offset=0
|
|
mdadm -CR $member0 $dev0 $dev1 $dev2 $dev3 -n $num_disks -l $level -z $size -c $chunk
|
|
imsm_check member $member0 $num_disks $level $size $((size*2)) $offset $chunk
|
|
testdev $member0 $((num_disks-2)) $size $chunk
|
|
|
|
offset=$(((size & ~(1024 - 1)) + 4096))
|
|
size=4000
|
|
level=5
|
|
mdadm -CR $member1 $dev0 $dev1 $dev2 $dev3 -n $num_disks -l $level -z $size -c $chunk
|
|
imsm_check member $member1 $num_disks $level $size $((size*3)) $offset $chunk
|
|
testdev $member1 $((num_disks-1)) $size $chunk
|
|
check wait
|
|
|
|
# FAIL / REBUILD
|
|
imsm_check_hold $container $dev0
|
|
mdadm --fail $member0 $dev0
|
|
mdadm --wait-clean --scan || true
|
|
imsm_check_removal $container $dev0
|
|
mdadm --add $container $dev4
|
|
check wait
|
|
imsm_check_hold $container $dev4
|