Add test suite and release
Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au>
This commit is contained in:
parent
f277ce3671
commit
5e7519fa84
|
@ -1,5 +1,6 @@
|
||||||
Changes Prior to 2.0-devel-3 release
|
Changes Prior to 2.0-devel-3 release
|
||||||
- Assorted fixes for multiple bugs...
|
- Assorted fixes for multiple bugs...
|
||||||
|
- Add test suite
|
||||||
|
|
||||||
Changes Prior to 1.12.0 release
|
Changes Prior to 1.12.0 release
|
||||||
Several of these are backported from the Debian package
|
Several of these are backported from the Debian package
|
||||||
|
|
2
ReadMe.c
2
ReadMe.c
|
@ -29,7 +29,7 @@
|
||||||
|
|
||||||
#include "mdadm.h"
|
#include "mdadm.h"
|
||||||
|
|
||||||
char Version[] = Name " - v2.0-devel-2 - DEVELOPMENT VERSION NOT FOR REGULAR USE - 7 July 2005\n";
|
char Version[] = Name " - v2.0-devel-3 - DEVELOPMENT VERSION NOT FOR REGULAR USE - 4 August 2005\n";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* File: ReadMe.c
|
* File: ReadMe.c
|
||||||
|
|
25
inventory
25
inventory
|
@ -55,4 +55,29 @@ misc/syslog-events
|
||||||
raid5extend.c
|
raid5extend.c
|
||||||
super0.c
|
super0.c
|
||||||
super1.c
|
super1.c
|
||||||
|
test
|
||||||
|
tests/
|
||||||
|
tests/00linear
|
||||||
|
tests/00raid0
|
||||||
|
tests/00raid1
|
||||||
|
tests/00raid10
|
||||||
|
tests/00raid4
|
||||||
|
tests/00raid5
|
||||||
|
tests/00raid6
|
||||||
|
tests/01r1fail
|
||||||
|
tests/01r5fail
|
||||||
|
tests/02r1add
|
||||||
|
tests/02r1grow
|
||||||
|
tests/02r5grow
|
||||||
|
tests/02r6grow
|
||||||
|
tests/03r0assem
|
||||||
|
tests/03r5assem
|
||||||
|
tests/04r0update
|
||||||
|
tests/04r1update
|
||||||
|
tests/05r1-bitmapfile
|
||||||
|
tests/05r1-internalbitmap
|
||||||
|
tests/05r1-n3-bitmapfile
|
||||||
|
tests/ToTest
|
||||||
|
tests/check
|
||||||
|
tests/testdev
|
||||||
util.c
|
util.c
|
||||||
|
|
2
mdadm.8
2
mdadm.8
|
@ -1,5 +1,5 @@
|
||||||
.\" -*- nroff -*-
|
.\" -*- nroff -*-
|
||||||
.TH MDADM 8 "" v2.0-devel-2
|
.TH MDADM 8 "" v2.0-devel-3
|
||||||
.SH NAME
|
.SH NAME
|
||||||
mdadm \- manage MD devices
|
mdadm \- manage MD devices
|
||||||
.I aka
|
.I aka
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
Summary: mdadm is used for controlling Linux md devices (aka RAID arrays)
|
Summary: mdadm is used for controlling Linux md devices (aka RAID arrays)
|
||||||
Name: mdadm
|
Name: mdadm
|
||||||
Version: 2.0-devel-2
|
Version: 2.0-devel-3
|
||||||
Release: 1
|
Release: 1
|
||||||
Source: http://www.cse.unsw.edu.au/~neilb/source/mdadm/mdadm-%{version}.tgz
|
Source: http://www.cse.unsw.edu.au/~neilb/source/mdadm/mdadm-%{version}.tgz
|
||||||
URL: http://www.cse.unsw.edu.au/~neilb/source/mdadm/
|
URL: http://www.cse.unsw.edu.au/~neilb/source/mdadm/
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# run test suite for mdadm
|
||||||
|
user=`id -un`
|
||||||
|
if [ " $user" != " root" ]
|
||||||
|
then echo >&2 "test: testing can only be done as 'root'."
|
||||||
|
exit 1;
|
||||||
|
fi
|
||||||
|
|
||||||
|
prefix='[0-9][0-9]'
|
||||||
|
if [ -n "$1" ]
|
||||||
|
then prefix=$1
|
||||||
|
fi
|
||||||
|
|
||||||
|
dir=`pwd`
|
||||||
|
mdadm=$dir/mdadm
|
||||||
|
export mdadm
|
||||||
|
if [ \! -x $mdadm ]
|
||||||
|
then
|
||||||
|
echo >&2 "test: $mdadm isn't usable."
|
||||||
|
fi
|
||||||
|
|
||||||
|
export check="sh $dir/tests/check"
|
||||||
|
|
||||||
|
# assume md0, md1, md2 exist in /dev
|
||||||
|
export md0=/dev/md0 md1=/dev/md1 md2=/dev/md2
|
||||||
|
|
||||||
|
# We test mdadm on loop-back block devices.
|
||||||
|
# dir for storing files should be settable by command line maybe
|
||||||
|
targetdir=/tmp
|
||||||
|
export targetdir
|
||||||
|
size=20000
|
||||||
|
mdsize0=19904
|
||||||
|
mdsize1=19992
|
||||||
|
export size mdsize0 mdsize1
|
||||||
|
|
||||||
|
cleanup() {
|
||||||
|
$mdadm -Ss
|
||||||
|
for d in 0 1 2 3 4 5 6 7
|
||||||
|
do losetup -d /dev/loop$d ; # rm -f $targetdir/mdtest$d
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
trap cleanup 0 1 2 3 15
|
||||||
|
|
||||||
|
devlist=
|
||||||
|
for d in 0 1 2 3 4 5 6 7
|
||||||
|
do
|
||||||
|
[ -f $targetdir/mdtest$d ] || dd if=/dev/zero of=$targetdir/mdtest$d count=$size bs=1K > /dev/null 2>&1
|
||||||
|
losetup /dev/loop$d $targetdir/mdtest$d
|
||||||
|
export dev$d=/dev/loop$d
|
||||||
|
eval devlist=\"\$devlist \$dev$d\"
|
||||||
|
done
|
||||||
|
export devlist
|
||||||
|
|
||||||
|
|
||||||
|
for script in tests/$prefix*[^~]
|
||||||
|
do
|
||||||
|
if sh -x $script > $targetdir/log 2>&1
|
||||||
|
then echo "$script succeeded"
|
||||||
|
else cat $targetdir/log
|
||||||
|
echo "$script failed"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
exit 0
|
|
@ -0,0 +1,22 @@
|
||||||
|
|
||||||
|
# create a simple linear
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
$mdadm -CR $md0 -l linear -n3 $dev0 $dev1 $dev2
|
||||||
|
$check linear
|
||||||
|
sh tests/testdev $md0 3 $mdsize0 64
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
# now with verion-1 superblock
|
||||||
|
$mdadm -CR $md0 -e1 --level=linear -n4 $dev0 $dev1 $dev2 $dev3
|
||||||
|
$check linear
|
||||||
|
sh tests/testdev $md0 4 $mdsize1 64
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
# now with no superblock
|
||||||
|
$mdadm -B $md0 -l linear -n5 $dev0 $dev1 $dev2 $dev3 $dev4
|
||||||
|
$check linear
|
||||||
|
sh tests/testdev $md0 5 $size 64
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
exit 0
|
|
@ -0,0 +1,44 @@
|
||||||
|
|
||||||
|
# create a simple raid0
|
||||||
|
set -e
|
||||||
|
|
||||||
|
$mdadm -CR $md0 -l raid0 -n3 $dev0 $dev1 $dev2
|
||||||
|
$check raid0
|
||||||
|
sh tests/testdev $md0 3 $mdsize0 64
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
# now with verion-1 superblock
|
||||||
|
$mdadm -CR $md0 -e1 -l0 -n4 $dev0 $dev1 $dev2 $dev3
|
||||||
|
$check raid0
|
||||||
|
sh tests/testdev $md0 4 $mdsize1 64
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
# now with no superblock
|
||||||
|
$mdadm -B $md0 -l0 -n5 $dev0 $dev1 $dev2 $dev3 $dev4
|
||||||
|
$check raid0
|
||||||
|
sh tests/testdev $md0 5 $size 64
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
|
||||||
|
# now same again with different chunk size
|
||||||
|
for chunk in 4 32 256
|
||||||
|
do
|
||||||
|
$mdadm -CR $md0 -l raid0 --chunk $chunk -n3 $dev0 $dev1 $dev2
|
||||||
|
$check raid0
|
||||||
|
sh tests/testdev $md0 3 $mdsize0 $chunk
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
# now with verion-1 superblock
|
||||||
|
$mdadm -CR $md0 -e1 -l0 -c $chunk -n4 $dev0 $dev1 $dev2 $dev3
|
||||||
|
$check raid0
|
||||||
|
sh tests/testdev $md0 4 $mdsize1 $chunk
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
# now with no superblock
|
||||||
|
$mdadm -B $md0 -l0 -n5 --chun=$chunk $dev0 $dev1 $dev2 $dev3 $dev4
|
||||||
|
$check raid0
|
||||||
|
sh tests/testdev $md0 5 $size $chunk
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
done
|
||||||
|
exit 0
|
|
@ -0,0 +1,35 @@
|
||||||
|
|
||||||
|
# create a simple mirror
|
||||||
|
# test version0, version1, and no super
|
||||||
|
# test resync and recovery.
|
||||||
|
set -e
|
||||||
|
|
||||||
|
$mdadm -CR $md0 -l 1 -n2 $dev0 $dev1
|
||||||
|
$check resync
|
||||||
|
$check raid1
|
||||||
|
sh tests/testdev $md0 1 $mdsize0 1
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
# now with verion-1 superblock, spare
|
||||||
|
$mdadm -CR $md0 -e1 --level=raid1 -n3 -x2 $dev0 missing missing $dev1 $dev2
|
||||||
|
$check recovery
|
||||||
|
$check raid1
|
||||||
|
sh tests/testdev $md0 1 $mdsize1 1
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
# now with no superblock
|
||||||
|
$mdadm -B $md0 -l mirror -n2 $dev0 $dev1
|
||||||
|
$check resync
|
||||||
|
$check raid1
|
||||||
|
sh tests/testdev $md0 1 $size 1
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
# again, but with no resync
|
||||||
|
$mdadm -B $md0 -l 1 --assume-clean -n2 $dev0 $dev1
|
||||||
|
$check raid1
|
||||||
|
$check nosync
|
||||||
|
sh tests/testdev $md0 1 $size 1
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
|
||||||
|
exit 0
|
|
@ -0,0 +1,19 @@
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
# Create some raid10 arrays, all with 6 devices and one spare
|
||||||
|
devs="$dev0 $dev1 $dev2 $dev3 $dev4 $dev5 $dev6"
|
||||||
|
|
||||||
|
for lo in n2 n3 f2 f3
|
||||||
|
do
|
||||||
|
cm=1
|
||||||
|
case $lo in
|
||||||
|
f2 ) m=3 cm=2;;
|
||||||
|
f3 ) m=2 cm=3;;
|
||||||
|
n2 ) m=3;;
|
||||||
|
n3 ) m=2;;
|
||||||
|
esac
|
||||||
|
$mdadm --create --run --level=raid10 --layout $lo --raid-disks 6 -x 1 $md0 $devs
|
||||||
|
$check resync ; $check raid10
|
||||||
|
sh tests/testdev $md0 $m $mdsize0 $[64*cm]
|
||||||
|
$mdadm -S $md0
|
||||||
|
done
|
|
@ -0,0 +1,17 @@
|
||||||
|
|
||||||
|
# create a simple raid4 set
|
||||||
|
set -e
|
||||||
|
|
||||||
|
$mdadm -CfR $md0 -l 4 -n3 $dev0 $dev1 $dev2
|
||||||
|
$check resync ; $check raid5
|
||||||
|
sh tests/testdev $md0 2 $mdsize0 64
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
# now with verion-1 superblock
|
||||||
|
$mdadm -CR $md0 -e1 --level=raid4 -n4 $dev0 $dev1 $dev2 $dev3
|
||||||
|
$check resync; $check raid5
|
||||||
|
sh tests/testdev $md0 3 $mdsize1 64
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
|
||||||
|
exit 0
|
|
@ -0,0 +1,34 @@
|
||||||
|
|
||||||
|
# create a simple raid5 set
|
||||||
|
set -e
|
||||||
|
|
||||||
|
$mdadm -CfR $md0 -l 5 -n3 $dev0 $dev1 $dev2
|
||||||
|
$check resync
|
||||||
|
sh tests/testdev $md0 2 $mdsize0 64
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
# now with verion-1 superblock
|
||||||
|
$mdadm -CR $md0 -e1 --level=raid5 -n4 $dev0 $dev1 $dev2 $dev3
|
||||||
|
$check recovery
|
||||||
|
sh tests/testdev $md0 3 $mdsize1 64
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
# now same again with explicit layout
|
||||||
|
|
||||||
|
for lo in la ra left-symmetric right-symmetric
|
||||||
|
do
|
||||||
|
|
||||||
|
$mdadm -CfR $md0 -l 5 -p $lo -n3 $dev0 $dev1 $dev2
|
||||||
|
$check resync ; $check raid5
|
||||||
|
sh tests/testdev $md0 2 $mdsize0 64
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
# now with verion-1 superblock
|
||||||
|
$mdadm -CR $md0 -e1 --level=raid5 --layout $lo -n4 $dev0 $dev1 $dev2 $dev3
|
||||||
|
$check recovery ; $check raid5
|
||||||
|
sh tests/testdev $md0 3 $mdsize1 64
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
exit 0
|
|
@ -0,0 +1,17 @@
|
||||||
|
|
||||||
|
# create a simple raid6 set
|
||||||
|
set -e
|
||||||
|
|
||||||
|
$mdadm -CfR $md0 -l 6 -n4 $dev0 $dev1 $dev2 $dev3
|
||||||
|
$check resync ; $check raid6
|
||||||
|
sh tests/testdev $md0 2 $mdsize0 64
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
# now with verion-1 superblock
|
||||||
|
$mdadm -CR $md0 -e1 --level=raid6 -n5 $dev0 $dev1 $dev2 $dev3 $dev4
|
||||||
|
$check resync ; $check raid6
|
||||||
|
sh tests/testdev $md0 3 $mdsize1 64
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
|
||||||
|
exit 0
|
|
@ -0,0 +1,30 @@
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# create a raid1, fail and remove a drive during initial sync
|
||||||
|
# Add two more, fail and remove one
|
||||||
|
# wait for sync to complete, fail, remove, re-add
|
||||||
|
|
||||||
|
$mdadm -CR $md0 -l1 -n4 $dev0 $dev1 $dev2 missing
|
||||||
|
$check resync
|
||||||
|
$mdadm $md0 --fail $dev2
|
||||||
|
$check resync
|
||||||
|
$mdadm $md0 --fail $dev1
|
||||||
|
sleep 1
|
||||||
|
$check nosync
|
||||||
|
$check state U___
|
||||||
|
$mdadm $md0 --add $dev4 $dev3
|
||||||
|
$check recovery
|
||||||
|
# there could be two separate recoveries, one for each dev
|
||||||
|
$check wait
|
||||||
|
$check wait
|
||||||
|
$mdadm $md0 --remove $dev2 $dev1
|
||||||
|
$check nosync
|
||||||
|
$check state UUU_
|
||||||
|
|
||||||
|
$mdadm $md0 -a $dev2
|
||||||
|
$check recovery
|
||||||
|
$check wait
|
||||||
|
$check state UUUU
|
||||||
|
|
||||||
|
$mdadm -S $md0
|
|
@ -0,0 +1,27 @@
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# create a raid5, fail and remove a drive during initial sync
|
||||||
|
# Add two more, fail and remove one
|
||||||
|
# wait for sync to complete, fail, remove, re-add
|
||||||
|
|
||||||
|
$mdadm -CR $md0 -l5 -n4 $dev0 $dev1 $dev2 $dev3
|
||||||
|
$check recovery
|
||||||
|
$mdadm $md0 --fail $dev3
|
||||||
|
$check nosync
|
||||||
|
$check state UUU_
|
||||||
|
|
||||||
|
$mdadm $md0 --add $dev4 $dev5
|
||||||
|
$check recovery
|
||||||
|
$check wait
|
||||||
|
$mdadm $md0 --fail $dev0
|
||||||
|
$mdadm $md0 --remove $dev3 $dev0
|
||||||
|
$check recovery
|
||||||
|
$check state _UUU
|
||||||
|
|
||||||
|
$mdadm $md0 -a $dev3
|
||||||
|
$check recovery
|
||||||
|
$check wait
|
||||||
|
$check state UUUU
|
||||||
|
|
||||||
|
$mdadm -S $md0
|
|
@ -0,0 +1,41 @@
|
||||||
|
|
||||||
|
set -e
|
||||||
|
# Make a raid1, add a device, then remove it again.
|
||||||
|
|
||||||
|
$mdadm -CR $md0 -l1 -n2 -x1 $dev0 $dev1 $dev2
|
||||||
|
$check resync
|
||||||
|
$check wait
|
||||||
|
$check state UU
|
||||||
|
|
||||||
|
$mdadm --grow $md0 -n 3
|
||||||
|
$check recovery
|
||||||
|
$check wait
|
||||||
|
$check state UUU
|
||||||
|
|
||||||
|
$mdadm $md0 --fail $dev0
|
||||||
|
$check state _UU
|
||||||
|
|
||||||
|
$mdadm --grow $md0 -n 2
|
||||||
|
$check state UU
|
||||||
|
|
||||||
|
$mdadm -S $md0
|
||||||
|
# same again for version-1
|
||||||
|
|
||||||
|
|
||||||
|
$mdadm -CR $md0 -l1 -n2 -e1.2 -x1 $dev0 $dev1 $dev2
|
||||||
|
$check resync
|
||||||
|
$check wait
|
||||||
|
$check state UU
|
||||||
|
|
||||||
|
$mdadm --grow $md0 -n 3
|
||||||
|
$check recovery
|
||||||
|
$check wait
|
||||||
|
$check state UUU
|
||||||
|
|
||||||
|
$mdadm $md0 --fail $dev0
|
||||||
|
$check state _UU
|
||||||
|
|
||||||
|
$mdadm --grow $md0 -n 2
|
||||||
|
$check state UU
|
||||||
|
|
||||||
|
$mdadm -S $md0
|
|
@ -0,0 +1,37 @@
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# create a small raid1 array, make it larger. Then make it smaller
|
||||||
|
|
||||||
|
$mdadm -CR $md0 --level raid1 --raid-disks 3 --size $[size/2] $dev1 $dev2 $dev3
|
||||||
|
$check wait
|
||||||
|
$check state UUU
|
||||||
|
sh tests/testdev $md0 1 $[size/2] 1
|
||||||
|
|
||||||
|
$mdadm --grow $md0 --size max
|
||||||
|
$check resync
|
||||||
|
$check wait
|
||||||
|
sh tests/testdev $md0 1 $mdsize0 1
|
||||||
|
|
||||||
|
$mdadm --grow $md0 --size $[size/2]
|
||||||
|
$check nosync
|
||||||
|
sh tests/testdev $md0 1 $[size/2] 1
|
||||||
|
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
# same again with version 1.1 superblock
|
||||||
|
$mdadm -CR $md0 --level raid1 --metadata=1.1 --raid-disks 3 --size $[size/2] $dev1 $dev2 $dev3
|
||||||
|
$check wait
|
||||||
|
$check state UUU
|
||||||
|
sh tests/testdev $md0 1 $[size/2] 1
|
||||||
|
|
||||||
|
$mdadm --grow $md0 --size max
|
||||||
|
$check resync
|
||||||
|
$check wait
|
||||||
|
sh tests/testdev $md0 1 $[size-1] 1
|
||||||
|
|
||||||
|
$mdadm --grow $md0 --size $[size/2]
|
||||||
|
$check nosync
|
||||||
|
sh tests/testdev $md0 1 $[size/2] 1
|
||||||
|
|
||||||
|
$mdadm -S $md0
|
|
@ -0,0 +1,37 @@
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# create a small raid5 array, make it larger. Then make it smaller
|
||||||
|
|
||||||
|
$mdadm -CR $md0 --level raid5 --chunk=32 --raid-disks 3 --size $[size/2] $dev1 $dev2 $dev3
|
||||||
|
$check wait
|
||||||
|
$check state UUU
|
||||||
|
sh tests/testdev $md0 2 $[size/2] 32
|
||||||
|
|
||||||
|
$mdadm --grow $md0 --size max
|
||||||
|
$check resync
|
||||||
|
$check wait
|
||||||
|
sh tests/testdev $md0 2 $mdsize0 64
|
||||||
|
|
||||||
|
$mdadm --grow $md0 --size $[size/2]
|
||||||
|
$check nosync
|
||||||
|
sh tests/testdev $md0 2 $[size/2] 64
|
||||||
|
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
# same again with version 1.1 superblock
|
||||||
|
$mdadm -CR $md0 --level raid5 --metadata=1.1 --chunk=128 --raid-disks 4 --size $[size/2] $dev1 $dev2 $dev3 $dev4
|
||||||
|
$check wait
|
||||||
|
$check state UUUU
|
||||||
|
sh tests/testdev $md0 3 $[size/2] 128
|
||||||
|
|
||||||
|
$mdadm --grow $md0 --size max
|
||||||
|
$check resync
|
||||||
|
$check wait
|
||||||
|
sh tests/testdev $md0 3 $[size-1] 128
|
||||||
|
|
||||||
|
$mdadm --grow $md0 --size $[size/2]
|
||||||
|
$check nosync
|
||||||
|
sh tests/testdev $md0 3 $[size/2] 128
|
||||||
|
|
||||||
|
$mdadm -S $md0
|
|
@ -0,0 +1,37 @@
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# create a small raid6 array, make it larger. Then make it smaller
|
||||||
|
|
||||||
|
$mdadm -CR $md0 --level raid6 --chunk=32 --raid-disks 4 --size $[size/2] $dev1 $dev2 $dev3 $dev4
|
||||||
|
$check wait
|
||||||
|
$check state UUUU
|
||||||
|
sh tests/testdev $md0 2 $[size/2] 32
|
||||||
|
|
||||||
|
$mdadm --grow $md0 --size max
|
||||||
|
$check resync
|
||||||
|
$check wait
|
||||||
|
sh tests/testdev $md0 2 $mdsize0 64
|
||||||
|
|
||||||
|
$mdadm --grow $md0 --size $[size/2]
|
||||||
|
$check nosync
|
||||||
|
sh tests/testdev $md0 2 $[size/2] 64
|
||||||
|
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
# same again with version 1.1 superblock
|
||||||
|
$mdadm -CR $md0 --level raid6 --metadata=1.1 --chunk=128 --raid-disks 4 --size $[size/2] $dev1 $dev2 $dev3 $dev4
|
||||||
|
$check wait
|
||||||
|
$check state UUUU
|
||||||
|
sh tests/testdev $md0 2 $[size/2] 128
|
||||||
|
|
||||||
|
$mdadm --grow $md0 --size max
|
||||||
|
$check resync
|
||||||
|
$check wait
|
||||||
|
sh tests/testdev $md0 2 $[size-1] 128
|
||||||
|
|
||||||
|
$mdadm --grow $md0 --size $[size/2]
|
||||||
|
$check nosync
|
||||||
|
sh tests/testdev $md0 2 $[size/2] 128
|
||||||
|
|
||||||
|
$mdadm -S $md0
|
|
@ -0,0 +1,132 @@
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# create a raid0 array from 3 devices, and assemble it in a multitude of ways.
|
||||||
|
# explicitly list devices
|
||||||
|
# uuid, md-minor on command line with wildcard devices
|
||||||
|
# mdadm.conf file
|
||||||
|
|
||||||
|
$mdadm -CR $md2 -l0 -n3 $dev0 $dev1 $dev2
|
||||||
|
$check raid0
|
||||||
|
tst="sh tests/testdev $md2 3 $mdsize0 64"
|
||||||
|
$tst
|
||||||
|
uuid=`$mdadm -Db $md2 | sed 's/.*UUID=//'`
|
||||||
|
$mdadm -S $md2
|
||||||
|
|
||||||
|
$mdadm -A $md2 $dev0 $dev1 $dev2
|
||||||
|
$tst
|
||||||
|
$mdadm -S $md2
|
||||||
|
|
||||||
|
$mdadm -A $md2 -u $uuid $devlist
|
||||||
|
$tst
|
||||||
|
$mdadm -S $md2
|
||||||
|
|
||||||
|
$mdadm --assemble $md2 --super-minor=2 $devlist
|
||||||
|
$tst
|
||||||
|
$mdadm -S $md2
|
||||||
|
|
||||||
|
conf=$targetdir/mdadm.conf
|
||||||
|
{
|
||||||
|
echo DEVICE $devlist
|
||||||
|
echo array $md2 UUID=$uuid
|
||||||
|
} > $conf
|
||||||
|
|
||||||
|
$mdadm -As -c $conf $md2
|
||||||
|
$tst
|
||||||
|
$mdadm -S $md2
|
||||||
|
|
||||||
|
{
|
||||||
|
echo DEVICE $devlist
|
||||||
|
echo array $md2 super-minor=2
|
||||||
|
} > $conf
|
||||||
|
|
||||||
|
$mdadm -As -c $conf $md2
|
||||||
|
$tst
|
||||||
|
$mdadm -S $md2
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
echo DEVICE $devlist
|
||||||
|
echo array $md2 devices=$dev0,$dev1,$dev2
|
||||||
|
} > $conf
|
||||||
|
|
||||||
|
$mdadm -As -c $conf $md2
|
||||||
|
$tst
|
||||||
|
|
||||||
|
echo "DEVICE $devlist" > $conf
|
||||||
|
$mdadm -Db $md2 >> $conf
|
||||||
|
$mdadm -S $md2
|
||||||
|
|
||||||
|
$mdadm --assemble --scan --config=$conf $md2
|
||||||
|
$tst
|
||||||
|
$mdadm -S $md2
|
||||||
|
|
||||||
|
echo " metadata=0.90 devices=$dev0,$dev1,$dev2" >> $conf
|
||||||
|
$mdadm --assemble --scan --config=$conf $md2
|
||||||
|
$tst
|
||||||
|
$mdadm -S $md2
|
||||||
|
|
||||||
|
|
||||||
|
### Now for version 1...
|
||||||
|
|
||||||
|
|
||||||
|
$mdadm -CR $md2 -l0 --metadata=1.0 -n3 $dev0 $dev1 $dev2
|
||||||
|
$check raid0
|
||||||
|
tst="sh tests/testdev $md2 3 $mdsize1 64"
|
||||||
|
$tst
|
||||||
|
|
||||||
|
uuid=`$mdadm -Db $md2 | sed 's/.*UUID=//'`
|
||||||
|
$mdadm -S $md2
|
||||||
|
|
||||||
|
$mdadm -A $md2 $dev0 $dev1 $dev2
|
||||||
|
$tst
|
||||||
|
$mdadm -S $md2
|
||||||
|
|
||||||
|
$mdadm -A $md2 -u $uuid $devlist
|
||||||
|
$tst
|
||||||
|
$mdadm -S $md2
|
||||||
|
|
||||||
|
# version 1 has now super-minor
|
||||||
|
# $mdadm --assemble $md2 --super-minor=2 $devlist #
|
||||||
|
# $tst
|
||||||
|
# $mdadm -S $md2
|
||||||
|
|
||||||
|
conf=$targetdir/mdadm.conf
|
||||||
|
{
|
||||||
|
echo DEVICE $devlist
|
||||||
|
echo array $md2 UUID=$uuid
|
||||||
|
} > $conf
|
||||||
|
|
||||||
|
$mdadm -As -c $conf $md2
|
||||||
|
$tst
|
||||||
|
$mdadm -S $md2
|
||||||
|
|
||||||
|
#{
|
||||||
|
# echo DEVICE $devlist
|
||||||
|
# echo array $md2 super-minor=2
|
||||||
|
#} > $conf
|
||||||
|
#
|
||||||
|
#$mdadm -As -c $conf $md2
|
||||||
|
#$tst
|
||||||
|
#$mdadm -S $md2
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
echo DEVICE $devlist
|
||||||
|
echo array $md2 devices=$dev0,$dev1,$dev2
|
||||||
|
} > $conf
|
||||||
|
|
||||||
|
$mdadm -As -c $conf $md2
|
||||||
|
$tst
|
||||||
|
|
||||||
|
echo "DEVICE $devlist" > $conf
|
||||||
|
$mdadm -Db $md2 >> $conf
|
||||||
|
$mdadm -S $md2
|
||||||
|
|
||||||
|
$mdadm --assemble --scan --config=$conf $md2
|
||||||
|
$tst
|
||||||
|
$mdadm -S $md2
|
||||||
|
|
||||||
|
echo " metadata=1 devices=$dev0,$dev1,$dev2" >> $conf
|
||||||
|
$mdadm --assemble --scan --config=$conf $md2
|
||||||
|
$tst
|
||||||
|
$mdadm -S $md2
|
|
@ -0,0 +1,110 @@
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# create a raid5 array and assemble it in various ways,
|
||||||
|
# including with missing devices.
|
||||||
|
|
||||||
|
$mdadm -CR $md1 -l5 -n3 $dev0 $dev1 $dev2
|
||||||
|
tst="$check raid5 ;sh tests/testdev $md1 2 $mdsize0 64 ; $mdadm -S $md1"
|
||||||
|
uuid=`$mdadm -Db $md1 | sed 's/.*UUID=//'`
|
||||||
|
$check wait
|
||||||
|
eval $tst
|
||||||
|
|
||||||
|
$mdadm -A $md1 $dev0 $dev1 $dev2
|
||||||
|
eval $tst
|
||||||
|
|
||||||
|
$mdadm -A $md1 -u $uuid $devlist
|
||||||
|
eval $tst
|
||||||
|
|
||||||
|
$mdadm -A $md1 -m 1 $devlist
|
||||||
|
eval $tst
|
||||||
|
|
||||||
|
|
||||||
|
conf=$targetdir/mdadm.conf
|
||||||
|
{
|
||||||
|
echo DEVICE $devlist
|
||||||
|
echo array $md1 UUID=$uuid
|
||||||
|
} > $conf
|
||||||
|
|
||||||
|
$mdadm -As -c $conf $md1
|
||||||
|
eval $tst
|
||||||
|
|
||||||
|
{
|
||||||
|
echo DEVICE $devlist
|
||||||
|
echo array $md1 super-minor=1
|
||||||
|
} > $conf
|
||||||
|
|
||||||
|
$mdadm -As -c $conf
|
||||||
|
eval $tst
|
||||||
|
|
||||||
|
{
|
||||||
|
echo DEVICE $devlist
|
||||||
|
echo array $md1 devices=$dev0,$dev1,$dev2
|
||||||
|
} > $conf
|
||||||
|
|
||||||
|
$mdadm -As -c $conf
|
||||||
|
|
||||||
|
echo "DEVICE $devlist" > $conf
|
||||||
|
$mdadm -Db $md1 >> $conf
|
||||||
|
eval $tst
|
||||||
|
|
||||||
|
$mdadm --assemble --scan --config=$conf $md1
|
||||||
|
eval $tst
|
||||||
|
|
||||||
|
echo " metadata=0.90 devices=$dev0,$dev1,$dev2" >> $conf
|
||||||
|
$mdadm --assemble --scan --config=$conf $md1
|
||||||
|
eval $tst
|
||||||
|
|
||||||
|
### Now with a missing device
|
||||||
|
|
||||||
|
$mdadm -AR $md1 $dev0 $dev2 #
|
||||||
|
$check state U_U
|
||||||
|
eval $tst
|
||||||
|
|
||||||
|
$mdadm -A $md1 -u $uuid $devlist
|
||||||
|
$check state U_U
|
||||||
|
eval $tst
|
||||||
|
|
||||||
|
$mdadm -A $md1 -m 1 $devlist
|
||||||
|
$check state U_U
|
||||||
|
eval $tst
|
||||||
|
|
||||||
|
|
||||||
|
conf=$targetdir/mdadm.conf
|
||||||
|
{
|
||||||
|
echo DEVICE $devlist
|
||||||
|
echo array $md1 UUID=$uuid
|
||||||
|
} > $conf
|
||||||
|
|
||||||
|
$mdadm -As -c $conf $md1
|
||||||
|
$check state U_U
|
||||||
|
eval $tst
|
||||||
|
|
||||||
|
{
|
||||||
|
echo DEVICE $devlist
|
||||||
|
echo array $md1 super-minor=1
|
||||||
|
} > $conf
|
||||||
|
|
||||||
|
$mdadm -As -c $conf
|
||||||
|
$check state U_U
|
||||||
|
eval $tst
|
||||||
|
|
||||||
|
{
|
||||||
|
echo DEVICE $devlist
|
||||||
|
echo array $md1 devices=$dev0,$dev1,$dev2
|
||||||
|
} > $conf
|
||||||
|
|
||||||
|
$mdadm -As -c $conf
|
||||||
|
|
||||||
|
echo "DEVICE $devlist" > $conf
|
||||||
|
$mdadm -Db $md1 >> $conf
|
||||||
|
$check state U_U
|
||||||
|
eval $tst
|
||||||
|
|
||||||
|
$mdadm --assemble --scan --config=$conf $md1
|
||||||
|
$check state U_U
|
||||||
|
eval $tst
|
||||||
|
|
||||||
|
echo " metadata=0.90 devices=$dev0,$dev1,$dev2" >> $conf
|
||||||
|
$mdadm --assemble --scan --config=$conf $md1
|
||||||
|
$check state U_U
|
||||||
|
eval $tst
|
|
@ -0,0 +1,21 @@
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# create a raid0, re-assemble with a different super-minor
|
||||||
|
$mdadm -CR $md0 -l0 -n3 $dev0 $dev1 $dev2
|
||||||
|
sh tests/testdev $md0 3 $mdsize0 64
|
||||||
|
minor1=`$mdadm -E $dev0 | sed -n -e 's/.*Preferred Minor : //p'`
|
||||||
|
$mdadm -S /dev/md0
|
||||||
|
|
||||||
|
$mdadm -A $md1 $dev0 $dev1 $dev2
|
||||||
|
minor2=`$mdadm -E $dev0 | sed -n -e 's/.*Preferred Minor : //p'`
|
||||||
|
$mdadm -S /dev/md1
|
||||||
|
|
||||||
|
$mdadm -A $md1 --update=super-minor $dev0 $dev1 $dev2
|
||||||
|
minor3=`$mdadm -E $dev0 | sed -n -e 's/.*Preferred Minor : //p'`
|
||||||
|
$mdadm -S /dev/md1
|
||||||
|
|
||||||
|
case "$minor1 $minor2 $minor3" in
|
||||||
|
"0 0 1" ) ;;
|
||||||
|
* ) echo >&2 "ERROR minors should be '0 0 1' but are '$minor1 $minor2 $minor3'"
|
||||||
|
exit 1
|
||||||
|
esac
|
|
@ -0,0 +1,15 @@
|
||||||
|
set -i
|
||||||
|
|
||||||
|
# create a raid1 array, let it sync, then re-assemble with a force-sync
|
||||||
|
|
||||||
|
$mdadm -CR $md0 -l1 -n2 $dev0 $dev1
|
||||||
|
$check wait
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
$mdadm -A $md0 $dev0 $dev1
|
||||||
|
$check nosync
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
$mdadm -A $md0 -U resync $dev0 $dev1
|
||||||
|
$check resync
|
||||||
|
$mdadm -S $md0
|
|
@ -0,0 +1,49 @@
|
||||||
|
set -e
|
||||||
|
|
||||||
|
#
|
||||||
|
# create a raid1 with a bitmap file
|
||||||
|
#
|
||||||
|
bmf=$targetdir/bitmap
|
||||||
|
rm -f $bmf
|
||||||
|
$mdadm --create --run $md0 --level=1 -n2 --delay=1 --bitmap $bmf $dev1 $dev2
|
||||||
|
$check wait
|
||||||
|
sh tests/testdev $md0 1 $mdsize0 1
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
$mdadm --assemble $md0 --bitmap=$bmf $dev1 $dev2
|
||||||
|
sh tests/testdev $md0 1 $mdsize0 1
|
||||||
|
dirty1=`$mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
|
sleep 4
|
||||||
|
dirty2=`$mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
|
|
||||||
|
if [ $dirty1 -lt 400 -o $dirty2 -ne 0 ]
|
||||||
|
then echo >&2 "ERROR bad 'dirty' counts: $dirty1 and $dirty2"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
$mdadm $md0 -f $dev1
|
||||||
|
sh tests/testdev $md0 1 $mdsize0 1
|
||||||
|
sleep 4
|
||||||
|
dirty3=`$mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
|
if [ $dirty3 -lt 400 ]
|
||||||
|
then
|
||||||
|
echo >&2 "ERROR dirty count $dirty3 is too small"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
$mdadm --assemble -R $md0 --bitmap=$bmf $dev2
|
||||||
|
$mdadm $md0 --add $dev1
|
||||||
|
$check recovery
|
||||||
|
|
||||||
|
dirty4=`$mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
|
$check wait
|
||||||
|
sleep 4
|
||||||
|
dirty5=`$mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
|
|
||||||
|
if [ $dirty4 -lt 400 -o $dirty5 -ne 0 ]
|
||||||
|
then echo echo >&2 "ERROR bad 'dirty' counts at end: $dirty4 $dirty5"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
$mdadm -S $md0
|
|
@ -0,0 +1,47 @@
|
||||||
|
set -e
|
||||||
|
|
||||||
|
#
|
||||||
|
# create a raid1 with an internal bitmap
|
||||||
|
#
|
||||||
|
$mdadm --create --run $md0 --level=1 -n2 --delay=1 --bitmap internal $dev1 $dev2
|
||||||
|
$check wait
|
||||||
|
sh tests/testdev $md0 1 $mdsize0 1
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
$mdadm --assemble $md0 $dev1 $dev2
|
||||||
|
sh tests/testdev $md0 1 $mdsize0 1
|
||||||
|
dirty1=`$mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
|
sleep 4
|
||||||
|
dirty2=`$mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
|
|
||||||
|
if [ $dirty1 -lt 400 -o $dirty2 -ne 0 ]
|
||||||
|
then echo >&2 "ERROR bad 'dirty' counts: $dirty1 and $dirty2"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
$mdadm $md0 -f $dev1
|
||||||
|
sh tests/testdev $md0 1 $mdsize0 1
|
||||||
|
sleep 4
|
||||||
|
dirty3=`$mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
|
if [ $dirty3 -lt 400 ]
|
||||||
|
then
|
||||||
|
echo >&2 "ERROR dirty count $dirty3 is too small"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
$mdadm --assemble -R $md0 $dev2
|
||||||
|
$mdadm $md0 --add $dev1
|
||||||
|
$check recovery
|
||||||
|
|
||||||
|
dirty4=`$mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
|
$check wait
|
||||||
|
sleep 4
|
||||||
|
dirty5=`$mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
|
|
||||||
|
if [ $dirty4 -lt 400 -o $dirty5 -ne 0 ]
|
||||||
|
then echo echo >&2 "ERROR bad 'dirty' counts at end: $dirty4 $dirty5"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
$mdadm -S $md0
|
|
@ -0,0 +1,53 @@
|
||||||
|
set -e
|
||||||
|
|
||||||
|
#
|
||||||
|
# create a raid1 with 3 devices and a bitmap file
|
||||||
|
# make sure resync does right thing.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
bmf=$targetdir/bitmap
|
||||||
|
rm -f $bmf
|
||||||
|
$mdadm --create --run $md0 --level=1 -n3 --delay=1 --bitmap $bmf $dev1 $dev2 $dev3
|
||||||
|
$check wait
|
||||||
|
sh tests/testdev $md0 1 $mdsize0 1
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
$mdadm --assemble $md0 --bitmap=$bmf $dev1 $dev2 $dev3
|
||||||
|
sh tests/testdev $md0 1 $mdsize0 1
|
||||||
|
dirty1=`$mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
|
sleep 4
|
||||||
|
dirty2=`$mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
|
|
||||||
|
if [ $dirty1 -lt 400 -o $dirty2 -ne 0 ]
|
||||||
|
then echo >&2 "ERROR bad 'dirty' counts: $dirty1 and $dirty2"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
$mdadm $md0 -f $dev2
|
||||||
|
sh tests/testdev $md0 1 $mdsize0 1
|
||||||
|
sleep 4
|
||||||
|
dirty3=`$mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
|
if [ $dirty3 -lt 400 ]
|
||||||
|
then
|
||||||
|
echo >&2 "ERROR dirty count $dirty3 is too small"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
$mdadm -S $md0
|
||||||
|
|
||||||
|
$mdadm --assemble -R $md0 --bitmap=$bmf $dev1 $dev3
|
||||||
|
$check nosync
|
||||||
|
$mdadm $md0 --add $dev2
|
||||||
|
$check recovery
|
||||||
|
|
||||||
|
dirty4=`$mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
|
$check wait
|
||||||
|
sleep 4
|
||||||
|
dirty5=`$mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||||
|
|
||||||
|
if [ $dirty4 -lt 400 -o $dirty5 -ne 0 ]
|
||||||
|
then echo echo >&2 "ERROR bad 'dirty' counts at end: $dirty4 $dirty5"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
$mdadm -S $md0
|
||||||
|
exit 0
|
|
@ -0,0 +1,44 @@
|
||||||
|
|
||||||
|
multipath!!
|
||||||
|
|
||||||
|
add/remove/fail
|
||||||
|
raid1 DONE
|
||||||
|
raid5 DONE
|
||||||
|
raid6/10 needed??
|
||||||
|
|
||||||
|
assemble
|
||||||
|
by devices DONE
|
||||||
|
by uuid DONE
|
||||||
|
by superminor DONE
|
||||||
|
by config file DONE
|
||||||
|
|
||||||
|
various --updates DONE (not sparc2.2 or summaries)
|
||||||
|
|
||||||
|
stop
|
||||||
|
--scan
|
||||||
|
|
||||||
|
readonly/readwrite
|
||||||
|
|
||||||
|
bitmap
|
||||||
|
separate file
|
||||||
|
internal
|
||||||
|
filename in config file
|
||||||
|
|
||||||
|
examine
|
||||||
|
--scan
|
||||||
|
--brief
|
||||||
|
|
||||||
|
detail
|
||||||
|
|
||||||
|
grow:
|
||||||
|
size
|
||||||
|
raid1/5/6 DONE
|
||||||
|
devices
|
||||||
|
raid1 add DONE
|
||||||
|
raid1 shrink DONE
|
||||||
|
|
||||||
|
'--quiet' option, and remove ""
|
||||||
|
'--name' option fo v1, and configfile etc...
|
||||||
|
|
||||||
|
faulty
|
||||||
|
errors in raid1/5/6
|
|
@ -0,0 +1,35 @@
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
raid* | linear )
|
||||||
|
grep -s "active $1 " /proc/mdstat > /dev/null || {
|
||||||
|
echo >&2 "ERROR active $1 not found" ; cat /proc/mdstat ; exit 1;}
|
||||||
|
;;
|
||||||
|
resync | recovery )
|
||||||
|
sleep 0.1
|
||||||
|
grep -s $1 /proc/mdstat > /dev/null || {
|
||||||
|
echo >&2 ERROR no $1 happening; cat /proc/mdstat; exit 1; }
|
||||||
|
;;
|
||||||
|
|
||||||
|
nosync )
|
||||||
|
sleep 0.5
|
||||||
|
grep -s 're[synccovery]* =' > /dev/null /proc/mdstat && {
|
||||||
|
echo >&2 "ERROR resync or recovery is happening!"; cat /proc/mdstat ; exit 1; }
|
||||||
|
;;
|
||||||
|
|
||||||
|
wait )
|
||||||
|
sleep 0.1
|
||||||
|
while grep 're[synccovery]* =' > /dev/null /proc/mdstat
|
||||||
|
do sleep 2;
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
|
||||||
|
state )
|
||||||
|
grep -s "blocks.*\[$2\]\$" /proc/mdstat > /dev/null || {
|
||||||
|
echo >&2 "ERROR state $2 not found!"; cat /proc/mdstat ; exit 1; }
|
||||||
|
sleep 0.5
|
||||||
|
;;
|
||||||
|
|
||||||
|
* ) echo >&2 ERROR unknown check $1 ; exit 1;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 0
|
|
@ -0,0 +1,14 @@
|
||||||
|
dev=$1
|
||||||
|
cnt=$2
|
||||||
|
size=$3
|
||||||
|
chunk=$4
|
||||||
|
mkfs -j $dev > /dev/null 2>&1 && fsck -fn $dev
|
||||||
|
dsize=$[size/chunk]
|
||||||
|
dsize=$[dsize*chunk]
|
||||||
|
rasize=$[dsize*1024*cnt]
|
||||||
|
if [ $rasize -ne `/sbin/blockdev --getsize64 $dev` ]
|
||||||
|
then
|
||||||
|
echo "ERROR: size is wrong for $dev: $cnt * $size (chunk=$chunk) = $rasize, not `/sbin/blockdev --getsize64 $dev`"
|
||||||
|
exit 1;
|
||||||
|
fi
|
||||||
|
|
Loading…
Reference in New Issue