Change default metadata from 0.90 to 1.1

1.1 is more flexible in a number of ways and is safer.
0.90 is still fully supported.
1.0 should possibly be used for RAID1 arrays that you
want to boot off, depending on your boot loader.

Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
NeilBrown 2009-11-17 13:15:32 +11:00
parent 5f175898de
commit 7d5c3964cc
35 changed files with 156 additions and 147 deletions

View File

@ -311,7 +311,7 @@ says to get a list of array devices from
.TP .TP
.BR \-e ", " \-\-metadata= .BR \-e ", " \-\-metadata=
Declare the style of RAID metadata (superblock) to be used. The Declare the style of RAID metadata (superblock) to be used. The
default is 0.90 for default is 1.1 for
.BR \-\-create , .BR \-\-create ,
and to guess for other operations. and to guess for other operations.
The default can be overridden by setting the The default can be overridden by setting the
@ -323,15 +323,16 @@ keyword in
Options are: Options are:
.RS .RS
.IP "0, 0.90, default" .IP "0, 0.90"
Use the original 0.90 format superblock. This format limits arrays to Use the original 0.90 format superblock. This format limits arrays to
28 component devices and limits component devices of levels 1 and 28 component devices and limits component devices of levels 1 and
greater to 2 terabytes. greater to 2 terabytes.
.IP "1, 1.0, 1.1, 1.2" .IP "1, 1.0, 1.1, 1.2 default"
Use the new version-1 format superblock. This has few restrictions. Use the new version-1 format superblock. This has few restrictions.
The different sub-versions store the superblock at different locations The different sub-versions store the superblock at different locations
on the device, either at the end (for 1.0), at the start (for 1.1) or on the device, either at the end (for 1.0), at the start (for 1.1) or
4K from the start (for 1.2). 4K from the start (for 1.2). '1' is equivalent to '1.0', 'default' is
equivalent to '1.1'.
.IP ddf .IP ddf
Use the "Industry Standard" DDF (Disk Data Format) format defined by Use the "Industry Standard" DDF (Disk Data Format) format defined by
SNIA. SNIA.

View File

@ -921,9 +921,7 @@ static struct supertype *match_metadata_desc0(char *arg)
while (arg[0] == '0' && arg[1] == '0') while (arg[0] == '0' && arg[1] == '0')
arg++; arg++;
if (strcmp(arg, "0") == 0 || if (strcmp(arg, "0") == 0 ||
strcmp(arg, "0.90") == 0 || strcmp(arg, "0.90") == 0
strcmp(arg, "default") == 0 ||
strcmp(arg, "") == 0 /* no metadata */
) )
return st; return st;

View File

@ -1351,7 +1351,10 @@ static struct supertype *match_metadata_desc1(char *arg)
return st; return st;
} }
if (strcmp(arg, "1.1") == 0 || if (strcmp(arg, "1.1") == 0 ||
strcmp(arg, "1.01") == 0) { strcmp(arg, "1.01") == 0 ||
strcmp(arg, "default") == 0 ||
strcmp(arg, "") == 0 /* no metadata */
) {
st->minor_version = 1; st->minor_version = 1;
return st; return st;
} }

2
test
View File

@ -34,6 +34,8 @@ mdsize0=19904
mdsize00=19840 mdsize00=19840
# super1.0 round down to multiple of 2, subtract 8 # super1.0 round down to multiple of 2, subtract 8
mdsize1=19992 mdsize1=19992
# super1.1 for linear: round to multiple of 2, subtract 4
mdsize1_l=19996
# subtract another 4 for bitmaps # subtract another 4 for bitmaps
mdsize1b=19988 mdsize1b=19988
mdsize11=19992 mdsize11=19992

View File

@ -3,11 +3,17 @@
mdadm -CR $md0 -l linear -n3 $dev0 $dev1 $dev2 mdadm -CR $md0 -l linear -n3 $dev0 $dev1 $dev2
check linear check linear
testdev $md0 3 $mdsize0 1 testdev $md0 3 $mdsize1_l 1
mdadm -S $md0 mdadm -S $md0
# now with version-1 superblock # now with version-0.90 superblock
mdadm -CR $md0 -e1 --level=linear -n4 $dev0 $dev1 $dev2 $dev3 mdadm -CR $md0 -e0.90 --level=linear -n4 $dev0 $dev1 $dev2 $dev3
check linear
testdev $md0 4 $mdsize0 1
mdadm -S $md0
# now with version-1.0 superblock
mdadm -CR $md0 -e1.0 --level=linear -n4 $dev0 $dev1 $dev2 $dev3
check linear check linear
testdev $md0 4 $mdsize1 1 testdev $md0 4 $mdsize1 1
mdadm -S $md0 mdadm -S $md0

View File

@ -4,21 +4,21 @@
mdadm -CR $md1 -l multipath -n2 $path0 $path1 mdadm -CR $md1 -l multipath -n2 $path0 $path1
testdev $md1 1 $mdsize0 1 testdev $md1 1 $mdsize1 1
mdadm $md1 -f $path0 mdadm $md1 -f $path0
rotest $md1 rotest $md1
testdev $md1 1 $mdsize0 1 testdev $md1 1 $mdsize1 1
mdadm $md1 -r $path0 mdadm $md1 -r $path0
mdadm $md1 -a $path0 mdadm $md1 -a $path0
rotest $md1 rotest $md1
testdev $md1 1 $mdsize0 1 testdev $md1 1 $mdsize1 1
mdadm $md1 -f $path1 mdadm $md1 -f $path1
mdadm $md1 -r $path1 mdadm $md1 -r $path1
rotest $md1 rotest $md1
testdev $md1 1 $mdsize0 1 testdev $md1 1 $mdsize1 1
mdadm -S $md1 mdadm -S $md1

View File

@ -3,13 +3,13 @@
mdadm -CR $md0 -l raid0 -n3 $dev0 $dev1 $dev2 mdadm -CR $md0 -l raid0 -n3 $dev0 $dev1 $dev2
check raid0 check raid0
testdev $md0 3 $mdsize0 512 testdev $md0 3 $mdsize1_l 512
mdadm -S $md0 mdadm -S $md0
# now with version-1 superblock # now with version-0.90 superblock
mdadm -CR $md0 -e1 -l0 -n4 $dev0 $dev1 $dev2 $dev3 mdadm -CR $md0 -e0.90 -l0 -n4 $dev0 $dev1 $dev2 $dev3
check raid0 check raid0
testdev $md0 4 $mdsize1 512 testdev $md0 4 $mdsize0 512
mdadm -S $md0 mdadm -S $md0
# now with no superblock # now with no superblock
@ -22,13 +22,13 @@ mdadm -S $md0
# now same again with different chunk size # now same again with different chunk size
for chunk in 4 32 256 for chunk in 4 32 256
do do
mdadm -CR $md0 -l raid0 --chunk $chunk -n3 $dev0 $dev1 $dev2 mdadm -CR $md0 -e0.90 -l raid0 --chunk $chunk -n3 $dev0 $dev1 $dev2
check raid0 check raid0
testdev $md0 3 $mdsize0 $chunk testdev $md0 3 $mdsize0 $chunk
mdadm -S $md0 mdadm -S $md0
# now with version-1 superblock # now with version-1 superblock
mdadm -CR $md0 -e1 -l0 -c $chunk -n4 $dev0 $dev1 $dev2 $dev3 mdadm -CR $md0 -e1.0 -l0 -c $chunk -n4 $dev0 $dev1 $dev2 $dev3
check raid0 check raid0
testdev $md0 4 $mdsize1 $chunk testdev $md0 4 $mdsize1 $chunk
mdadm -S $md0 mdadm -S $md0

View File

@ -6,14 +6,14 @@
mdadm -CR $md0 -l 1 -n2 $dev0 $dev1 mdadm -CR $md0 -l 1 -n2 $dev0 $dev1
check resync check resync
check raid1 check raid1
testdev $md0 1 $mdsize0 1 testdev $md0 1 $mdsize1 1
mdadm -S $md0 mdadm -S $md0
# now with version-1 superblock, spare # now with version-0.90 superblock, spare
mdadm -CR $md0 -e1 --level=raid1 -n3 -x2 $dev0 missing missing $dev1 $dev2 mdadm -CR $md0 -e0.90 --level=raid1 -n3 -x2 $dev0 missing missing $dev1 $dev2
check recovery check recovery
check raid1 check raid1
testdev $md0 1 $mdsize1b 1 testdev $md0 1 $mdsize0 1
mdadm -S $md0 mdadm -S $md0
# now with no superblock # now with no superblock

View File

@ -13,6 +13,6 @@ do
esac esac
mdadm --create --run --level=raid10 --layout $lo --raid-disks 6 -x 1 $md0 $devs mdadm --create --run --level=raid10 --layout $lo --raid-disks 6 -x 1 $md0 $devs
check resync ; check raid10 check resync ; check raid10
testdev $md0 $m $mdsize0 $[512*cm] testdev $md0 $m $mdsize1 $[512*cm]
mdadm -S $md0 mdadm -S $md0
done done

View File

@ -3,7 +3,7 @@
mdadm -CfR $md0 -l 4 -n3 $dev0 $dev1 $dev2 mdadm -CfR $md0 -l 4 -n3 $dev0 $dev1 $dev2
check resync ; check raid[45] check resync ; check raid[45]
testdev $md0 2 $mdsize0 512 testdev $md0 2 $mdsize1 512
mdadm -S $md0 mdadm -S $md0
# now with version-1 superblock # now with version-1 superblock

View File

@ -1,7 +1,7 @@
# create a simple raid5 set # create a simple raid5 set
mdadm -CfR $md0 -l 5 -n3 $dev0 $dev1 $dev2 mdadm -CfR $md0 -e 0.90 -l 5 -n3 $dev0 $dev1 $dev2
check resync check resync
testdev $md0 2 $mdsize0 512 testdev $md0 2 $mdsize0 512
mdadm -S $md0 mdadm -S $md0
@ -19,7 +19,7 @@ do
mdadm -CfR $md0 -l 5 -p $lo -n3 $dev0 $dev1 $dev2 mdadm -CfR $md0 -l 5 -p $lo -n3 $dev0 $dev1 $dev2
check resync ; check raid5 check resync ; check raid5
testdev $md0 2 $mdsize0 512 testdev $md0 2 $mdsize1 512
mdadm -S $md0 mdadm -S $md0
# now with version-1 superblock # now with version-1 superblock

View File

@ -1,7 +1,7 @@
# create a simple raid6 set # create a simple raid6 set
mdadm -CfR $md0 -l 6 -n4 $dev0 $dev1 $dev2 $dev3 mdadm -CfR $md0 -e0.90 -l 6 -n4 $dev0 $dev1 $dev2 $dev3
check resync ; check raid6 check resync ; check raid6
testdev $md0 2 $mdsize0 512 testdev $md0 2 $mdsize0 512
mdadm -S $md0 mdadm -S $md0

View File

@ -6,8 +6,8 @@ do
case $e in case $e in
0.90 ) sz=$mdsize0 ;; 0.90 ) sz=$mdsize0 ;;
1 ) sz=$mdsize1 ;; 1 ) sz=$mdsize1 ;;
1.1 ) sz=$mdsize11 ;; 1.1 ) sz=$mdsize1_l ;;
1.2 ) sz=$mdsize12 ;; 1.2 ) sz=$mdsize11 ;;
esac esac
mdadm -CRf $md0 --level linear -e $e --raid-disks=1 $dev1 mdadm -CRf $md0 --level linear -e $e --raid-disks=1 $dev1
testdev $md0 1 $sz 1 testdev $md0 1 $sz 1

View File

@ -2,7 +2,7 @@
# create a small raid1 array, make it larger. Then make it smaller # 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 mdadm -CR $md0 -e 0.90 --level raid1 --raid-disks 3 --size $[size/2] $dev1 $dev2 $dev3
check wait check wait
check state UUU check state UUU
testdev $md0 1 $[size/2] 1 testdev $md0 1 $[size/2] 1

View File

@ -2,7 +2,7 @@
# create a small raid5 array, make it larger. Then make it smaller # 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 mdadm -CR $md0 -e0.90 --level raid5 --chunk=32 --raid-disks 3 --size $[size/2] $dev1 $dev2 $dev3
check wait check wait
check state UUU check state UUU
testdev $md0 2 $[size/2] 32 testdev $md0 2 $[size/2] 32

View File

@ -2,7 +2,7 @@
# create a small raid6 array, make it larger. Then make it smaller # 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 mdadm -CR $md0 -e 0.90 --level raid6 --chunk=32 --raid-disks 4 --size $[size/2] $dev1 $dev2 $dev3 $dev4
check wait check wait
check state UUUU check state UUUU
testdev $md0 2 $[size/2] 32 testdev $md0 2 $[size/2] 32

View File

@ -6,7 +6,7 @@
mdadm -CR $md2 -l0 -n3 $dev0 $dev1 $dev2 mdadm -CR $md2 -l0 -n3 $dev0 $dev1 $dev2
check raid0 check raid0
tst="testdev $md2 3 $mdsize0 512" tst="testdev $md2 3 $mdsize1 512"
$tst $tst
uuid=`mdadm -Db $md2 | sed 's/.*UUID=//'` uuid=`mdadm -Db $md2 | sed 's/.*UUID=//'`
mdadm -S $md2 mdadm -S $md2
@ -19,7 +19,72 @@ mdadm -A $md2 -u $uuid $devlist
$tst $tst
mdadm -S $md2 mdadm -S $md2
mdadm --assemble $md2 --super-minor=2 $devlist mdadm --assemble $md2 --name=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 name=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 0...
mdadm --zero-superblock $dev0 $dev1 $dev2
mdadm -CR $md2 -l0 --metadata=0.90 -n3 $dev0 $dev1 $dev2
check raid0
tst="testdev $md2 3 $mdsize0 512"
$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 $tst
mdadm -S $md2 mdadm -S $md2
@ -43,72 +108,6 @@ $tst
mdadm -S $md2 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 --zero-superblock $dev0 $dev1 $dev2
mdadm -CR $md2 -l0 --metadata=1.0 -n3 $dev0 $dev1 $dev2
check raid0
tst="testdev $md2 3 $mdsize1 512"
$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 no 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 DEVICE $devlist
echo array $md2 devices=$dev0,$dev1,$dev2 echo array $md2 devices=$dev0,$dev1,$dev2

View File

@ -2,7 +2,7 @@
# create a raid5 array and assemble it in various ways, # create a raid5 array and assemble it in various ways,
# including with missing devices. # including with missing devices.
mdadm -CR $md1 -l5 -n3 $dev0 $dev1 $dev2 mdadm -CR -e 0.90 $md1 -l5 -n3 $dev0 $dev1 $dev2
tst="check raid5 ;testdev $md1 2 $mdsize0 512 ; mdadm -S $md1" tst="check raid5 ;testdev $md1 2 $mdsize0 512 ; mdadm -S $md1"
uuid=`mdadm -Db $md1 | sed 's/.*UUID=//'` uuid=`mdadm -Db $md1 | sed 's/.*UUID=//'`
check wait check wait

View File

@ -1,6 +1,6 @@
# create a raid0, re-assemble with a different super-minor # create a raid0, re-assemble with a different super-minor
mdadm -CR $md0 -l0 -n3 $dev0 $dev1 $dev2 mdadm -CR -e 0.90 $md0 -l0 -n3 $dev0 $dev1 $dev2
testdev $md0 3 $mdsize0 512 testdev $md0 3 $mdsize0 512
minor1=`mdadm -E $dev0 | sed -n -e 's/.*Preferred Minor : //p'` minor1=`mdadm -E $dev0 | sed -n -e 's/.*Preferred Minor : //p'`
mdadm -S /dev/md0 mdadm -S /dev/md0

View File

@ -6,11 +6,11 @@ bmf=$targetdir/bitmap
rm -f $bmf rm -f $bmf
mdadm --create --run $md0 --level=1 -n2 --delay=1 --bitmap $bmf $dev1 $dev2 mdadm --create --run $md0 --level=1 -n2 --delay=1 --bitmap $bmf $dev1 $dev2
check wait check wait
testdev $md0 1 $mdsize0 1 testdev $md0 1 $mdsize1 1
mdadm -S $md0 mdadm -S $md0
mdadm --assemble $md0 --bitmap=$bmf $dev1 $dev2 mdadm --assemble $md0 --bitmap=$bmf $dev1 $dev2
testdev $md0 1 $mdsize0 1 testdev $md0 1 $mdsize1 1
dirty1=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` dirty1=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
sleep 4 sleep 4
dirty2=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` dirty2=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
@ -20,7 +20,7 @@ then echo >&2 "ERROR bad 'dirty' counts: $dirty1 and $dirty2"
exit 1 exit 1
fi fi
mdadm $md0 -f $dev1 mdadm $md0 -f $dev1
testdev $md0 1 $mdsize0 1 testdev $md0 1 $mdsize1 1
sleep 4 sleep 4
dirty3=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` dirty3=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
if [ $dirty3 -lt 400 ] if [ $dirty3 -lt 400 ]

View File

@ -4,7 +4,7 @@
# #
mdadm --create --run $md0 -l 1 -n 2 $dev1 $dev2 mdadm --create --run $md0 -l 1 -n 2 $dev1 $dev2
check wait check wait
testdev $md0 1 $mdsize0 1 testdev $md0 1 $mdsize1 1
bmf=$targetdir/bm bmf=$targetdir/bm
rm -f $bmf rm -f $bmf
@ -14,7 +14,7 @@ dirty1=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
sleep 4 sleep 4
dirty2=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` dirty2=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
testdev $md0 1 $mdsize0 1 testdev $md0 1 $mdsize1 1
dirty3=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` dirty3=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
sleep 4 sleep 4
dirty4=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` dirty4=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`

View File

@ -4,7 +4,7 @@
# #
mdadm --create --run $md0 -l 1 -n 2 $dev1 $dev2 mdadm --create --run $md0 -l 1 -n 2 $dev1 $dev2
check wait check wait
testdev $md0 1 $mdsize0 1 testdev $md0 1 $mdsize1 1
#mdadm -E $dev1 #mdadm -E $dev1
mdadm --grow $md0 --bitmap=internal --delay=1 || { mdadm -X $dev2 ; exit 1; } mdadm --grow $md0 --bitmap=internal --delay=1 || { mdadm -X $dev2 ; exit 1; }
@ -12,7 +12,7 @@ dirty1=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
sleep 4 sleep 4
dirty2=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` dirty2=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
testdev $md0 1 $mdsize0 1 testdev $md0 1 $mdsize1 1
dirty3=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` dirty3=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
sleep 4 sleep 4
dirty4=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` dirty4=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`

View File

@ -2,7 +2,7 @@
# #
# create a raid1 with an internal bitmap # create a raid1 with an internal bitmap
# #
mdadm --create --run $md0 --level=1 -n2 --delay=1 --bitmap internal $dev1 $dev2 mdadm --create -e0.90 --run $md0 --level=1 -n2 --delay=1 --bitmap internal $dev1 $dev2
check wait check wait
testdev $md0 1 $mdsize0 1 testdev $md0 1 $mdsize0 1
mdadm -S $md0 mdadm -S $md0

View File

@ -6,7 +6,7 @@
# #
bmf=$targetdir/bitmap bmf=$targetdir/bitmap
rm -f $bmf rm -f $bmf
mdadm --create --run $md0 --level=1 -n3 --delay=1 --bitmap $bmf $dev1 $dev2 $dev3 mdadm --create -e0.90 --run $md0 --level=1 -n3 --delay=1 --bitmap $bmf $dev1 $dev2 $dev3
check wait check wait
testdev $md0 1 $mdsize0 1 testdev $md0 1 $mdsize0 1
mdadm -S $md0 mdadm -S $md0

View File

@ -8,7 +8,7 @@
mdadm -CR $md0 -l1 -n2 -binternal -d1 $dev1 $dev2 mdadm -CR $md0 -l1 -n2 -binternal -d1 $dev1 $dev2
check resync check resync
check wait check wait
testdev $md0 1 $mdsize0 1 testdev $md0 1 $mdsize1 1
sleep 4 sleep 4
mdadm $md0 -f $dev2 mdadm $md0 -f $dev2
@ -21,10 +21,10 @@ check nosync
mdadm $md0 -f $dev2 mdadm $md0 -f $dev2
sleep 1 sleep 1
mdadm $md0 -r $dev2 mdadm $md0 -r $dev2
testdev $md0 1 $mdsize0 1 testdev $md0 1 $mdsize1 1
mdadm $md0 -a $dev2 mdadm $md0 -a $dev2
check wait check wait
cmp --bytes=$[$mdsize0*1024] $dev1 $dev2 cmp --ignore-initial=$[16*512] --bytes=$[$mdsize0*1024] $dev1 $dev2
mdadm $md0 -f $dev2; sleep 1 mdadm $md0 -f $dev2; sleep 1
mdadm $md0 -r $dev2 mdadm $md0 -r $dev2
@ -32,5 +32,5 @@ if dd if=/dev/zero of=$md0 ; then : ; fi
mdadm $md0 -a $dev2 mdadm $md0 -a $dev2
check recovery check recovery
check wait check wait
cmp --bytes=$[$mdsize0*1024] $dev1 $dev2 cmp --ignore-initial=$[16*512] --bytes=$[$mdsize0*1024] $dev1 $dev2
mdadm -S $md0 mdadm -S $md0

View File

@ -6,11 +6,11 @@ bmf=$targetdir/bitmap
rm -f $bmf rm -f $bmf
mdadm --create --run $md0 --level=5 -n3 --delay=1 --bitmap $bmf $dev1 $dev2 $dev3 mdadm --create --run $md0 --level=5 -n3 --delay=1 --bitmap $bmf $dev1 $dev2 $dev3
check wait check wait
testdev $md0 2 $mdsize0 1 testdev $md0 2 $mdsize1 512
mdadm -S $md0 mdadm -S $md0
mdadm --assemble $md0 --bitmap=$bmf $dev1 $dev2 $dev3 mdadm --assemble $md0 --bitmap=$bmf $dev1 $dev2 $dev3
testdev $md0 2 $mdsize0 1 testdev $md0 2 $mdsize1 512
dirty1=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` dirty1=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
sleep 4 sleep 4
dirty2=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` dirty2=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
@ -20,7 +20,7 @@ then echo >&2 "ERROR bad 'dirty' counts: $dirty1 and $dirty2"
exit 1 exit 1
fi fi
mdadm $md0 -f $dev1 mdadm $md0 -f $dev1
testdev $md0 2 $mdsize0 1 testdev $md0 2 $mdsize1 512
sleep 4 sleep 4
dirty3=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` dirty3=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
if [ $dirty3 -lt 400 ] if [ $dirty3 -lt 400 ]

View File

@ -4,11 +4,11 @@
# #
mdadm --create --run $md0 --level=5 -n3 --delay=1 --bitmap internal $dev1 $dev2 $dev3 mdadm --create --run $md0 --level=5 -n3 --delay=1 --bitmap internal $dev1 $dev2 $dev3
check wait check wait
testdev $md0 2 $mdsize0 1 testdev $md0 2 $mdsize1 512
mdadm -S $md0 mdadm -S $md0
mdadm --assemble $md0 $dev1 $dev2 $dev3 mdadm --assemble $md0 $dev1 $dev2 $dev3
testdev $md0 2 $mdsize0 1 testdev $md0 2 $mdsize1 512
dirty1=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` dirty1=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
sleep 4 sleep 4
dirty2=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` dirty2=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
@ -18,7 +18,7 @@ then echo >&2 "ERROR bad 'dirty' counts: $dirty1 and $dirty2"
exit 1 exit 1
fi fi
mdadm $md0 -f $dev1 mdadm $md0 -f $dev1
testdev $md0 2 $mdsize0 1 testdev $md0 2 $mdsize1 512
sleep 4 sleep 4
dirty3=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` dirty3=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
if [ $dirty3 -lt 400 ] if [ $dirty3 -lt 400 ]

View File

@ -6,11 +6,11 @@ bmf=$targetdir/bitmap
rm -f $bmf rm -f $bmf
mdadm --create --run $md0 --level=6 -n4 --delay=1 --bitmap $bmf $dev1 $dev2 $dev3 $dev4 mdadm --create --run $md0 --level=6 -n4 --delay=1 --bitmap $bmf $dev1 $dev2 $dev3 $dev4
check wait check wait
testdev $md0 2 $mdsize0 1 testdev $md0 2 $mdsize1 512
mdadm -S $md0 mdadm -S $md0
mdadm --assemble $md0 --bitmap=$bmf $dev1 $dev2 $dev3 $dev4 mdadm --assemble $md0 --bitmap=$bmf $dev1 $dev2 $dev3 $dev4
testdev $md0 2 $mdsize0 1 testdev $md0 2 $mdsize1 512
dirty1=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` dirty1=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
sleep 4 sleep 4
dirty2=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` dirty2=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
@ -20,7 +20,7 @@ then echo >&2 "ERROR bad 'dirty' counts: $dirty1 and $dirty2"
exit 1 exit 1
fi fi
mdadm $md0 -f $dev3 mdadm $md0 -f $dev3
testdev $md0 2 $mdsize0 1 testdev $md0 2 $mdsize1 512
sleep 4 sleep 4
dirty3=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` dirty3=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
if [ $dirty3 -lt 400 ] if [ $dirty3 -lt 400 ]

View File

@ -1,7 +1,7 @@
# make a raid5 array, byte swap the superblocks, then assemble... # make a raid5 array, byte swap the superblocks, then assemble...
mdadm -CR $md0 -l5 -n4 $dev0 $dev1 $dev2 $dev3 mdadm -CR $md0 -e 0.90 -l5 -n4 $dev0 $dev1 $dev2 $dev3
sleep 4 sleep 4
mdadm -S $md0 mdadm -S $md0

View File

@ -2,13 +2,13 @@
# create a raid1 array with a wrmostly device # create a raid1 array with a wrmostly device
mdadm -CR $md0 -l1 -n3 $dev0 $dev1 --write-mostly $dev2 mdadm -CR $md0 -l1 -n3 $dev0 $dev1 --write-mostly $dev2
testdev $md0 1 $mdsize0 64 testdev $md0 1 $mdsize1 1
# unfortunately, we cannot measure if any read requests are going to $dev2 # unfortunately, we cannot measure if any read requests are going to $dev2
mdadm -S $md0 mdadm -S $md0
mdadm -CR $md0 -l1 -n3 --write-behind --bitmap=internal $dev0 $dev1 --write-mostly $dev2 mdadm -CR $md0 -l1 -n3 --write-behind --bitmap=internal $dev0 $dev1 --write-mostly $dev2
testdev $md0 1 $mdsize0 64 testdev $md0 1 $mdsize1 1
mdadm -S $md0 mdadm -S $md0

View File

@ -8,9 +8,9 @@ mdadm -CR $md0 -l0 -n2 $md1 $md2 --homehost=testing
mdadm -Ss mdadm -Ss
mdadm -As -c /dev/null --homehost=testing -vvv mdadm -As -c /dev/null --homehost=testing -vvv
testdev $md1 1 $mdsize0 64 testdev $md1 1 $mdsize1 1
testdev $md2 1 $mdsize0 64 testdev $md2 1 $mdsize1 1
testdev $md0 2 $mdsize00 512 testdev $md0 2 $mdsize11 512
mdadm -Ss mdadm -Ss
mdadm --zero-superblock $dev0 $dev1 $dev2 $dev3 mdadm --zero-superblock $dev0 $dev1 $dev2 $dev3
@ -19,6 +19,6 @@ mdadm -CR $md1 -l1 -n2 $dev0 $dev1 --homehost=testing
mdadm -CR $md0 -l0 -n2 $md1 $dev2 --homehost=testing mdadm -CR $md0 -l0 -n2 $md1 $dev2 --homehost=testing
mdadm -Ss mdadm -Ss
mdadm -As -c /dev/null --homehost=testing -vvv mdadm -As -c /dev/null --homehost=testing -vvv
testdev $md1 1 $mdsize0 64 testdev $md1 1 $mdsize1 1
testdev $md0 1 $[mdsize0+mdsize00] 512 testdev $md0 1 $[mdsize1+mdsize11] 512
mdadm -Ss mdadm -Ss

View File

@ -12,15 +12,15 @@ then
fi fi
mdadm -CR $mdp0 -l0 -f -n1 $dev0 mdadm -CR -e 0 $mdp0 -l0 -f -n1 $dev0
mdadm -CR $mdp1 -l0 -f -n1 $dev1 mdadm -CR -e 0 $mdp1 -l0 -f -n1 $dev1
sfdisk $mdp0 >&2 << END sfdisk $mdp0 >&2 << END
,,FD ,,FD
END END
sfdisk $mdp1 >&2 << END sfdisk $mdp1 >&2 << END
,,FD ,,FD
END END
mdadm -CR $md0 -l1 -n2 ${mdp0}p1 ${mdp1}p1 mdadm -CR -e 0 $md0 -l1 -n2 ${mdp0}p1 ${mdp1}p1
check resync check resync
check raid1 check raid1
check wait check wait

View File

@ -10,7 +10,7 @@ export MDADM_GROW_VERIFY=1
dotest() { dotest() {
sleep 0.5 sleep 0.5
check wait check wait
testdev $md0 $1 $mdsize0 64 nd testdev $md0 $1 $mdsize1 64 nd
blockdev --flushbufs $md0 blockdev --flushbufs $md0
cmp -s -n $[textK*1024] $md0 /tmp/RandFile || { echo cmp failed; exit 2; } cmp -s -n $[textK*1024] $md0 /tmp/RandFile || { echo cmp failed; exit 2; }
# write something new - shift chars 4 space # write something new - shift chars 4 space
@ -42,8 +42,8 @@ checkgeo() {
bu=/tmp/md-test-backup bu=/tmp/md-test-backup
rm -f $bu rm -f $bu
mdadm -CR $md0 -l1 -n2 -x1 $dev0 $dev1 $dev2 mdadm -CR $md0 -l1 -n2 -x1 $dev0 $dev1 $dev2 -z 19968
testdev $md0 1 $mdsize0 64 testdev $md0 1 $mdsize1 64
dd if=/tmp/RandFile of=$md0 dd if=/tmp/RandFile of=$md0
dotest 1 dotest 1
@ -57,14 +57,14 @@ dotest 3
mdadm -G $md0 -l6 --backup-file $bu mdadm -G $md0 -l6 --backup-file $bu
dotest 3 dotest 3
mdadm -G /dev/md0 --array-size $[mdsize0*2] mdadm -G /dev/md0 --array-size 39936
mdadm -G $md0 -n4 --backup-file $bu mdadm -G $md0 -n4 --backup-file $bu
dotest 2 dotest 2
mdadm -G $md0 -l5 --backup-file $bu mdadm -G $md0 -l5 --backup-file $bu
dotest 2 dotest 2
mdadm -G /dev/md0 --array-size $mdsize0 mdadm -G /dev/md0 --array-size 19968
mdadm -G $md0 -n2 --backup-file $bu mdadm -G $md0 -n2 --backup-file $bu
dotest 1 dotest 1
@ -79,7 +79,7 @@ dotest 3
mdadm $md0 --fail $dev0 mdadm $md0 --fail $dev0
mdadm -G /dev/md0 --array-size $[mdsize0*2] mdadm -G /dev/md0 --array-size 39936
mdadm -G $md0 -n4 --backup-file $bu mdadm -G $md0 -n4 --backup-file $bu
dotest 2 dotest 2
mdadm $md0 --fail $dev4 mdadm $md0 --fail $dev4
@ -98,7 +98,7 @@ dotest 2
mdadm -G $md0 -l5 --backup-file $bu mdadm -G $md0 -l5 --backup-file $bu
dotest 2 dotest 2
mdadm -G /dev/md0 --array-size $mdsize0 mdadm -G /dev/md0 --array-size 19968
mdadm -G $md0 -n2 --backup-file $bu mdadm -G $md0 -n2 --backup-file $bu
dotest 1 dotest 1
mdadm $md0 --fail $dev2 mdadm $md0 --fail $dev2

View File

@ -12,7 +12,7 @@ export MDADM_GROW_VERITY=1
dotest() { dotest() {
sleep 0.5 sleep 0.5
check wait check wait
testdev $md0 $1 $mdsize0 512 nd testdev $md0 $1 $mdsize1 512 nd
blockdev --flushbufs $md0 blockdev --flushbufs $md0
cmp -s -n $[textK*1024] $md0 /tmp/RandFile || { echo cmp failed; exit 2; } cmp -s -n $[textK*1024] $md0 /tmp/RandFile || { echo cmp failed; exit 2; }
# write something new - shift chars 4 space # write something new - shift chars 4 space

View File

@ -25,7 +25,7 @@ do
# test restore: make a raid5 from a file, then do a compare # test restore: make a raid5 from a file, then do a compare
dd if=/dev/urandom of=/tmp/RandFile bs=1024 count=$size dd if=/dev/urandom of=/tmp/RandFile bs=1024 count=$size
$dir/test_stripe restore /tmp/RandFile $disks $[chunk*1024] $level $nlayout 0 $[size*1024] $devs $dir/test_stripe restore /tmp/RandFile $disks $[chunk*1024] $level $nlayout 0 $[size*1024] $devs
mdadm -CR $md0 -amd -l$level -n$disks --assume-clean -c $chunk -p $layout $devs mdadm -CR -e 1.0 $md0 -amd -l$level -n$disks --assume-clean -c $chunk -p $layout $devs
cmp -s -n $[size*1024] $md0 /tmp/RandFile || { echo cmp failed ; exit 2; } cmp -s -n $[size*1024] $md0 /tmp/RandFile || { echo cmp failed ; exit 2; }
# FIXME check parity # FIXME check parity