summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2009-11-17 13:08:55 +1100
committerNeilBrown <neilb@suse.de>2009-11-17 13:08:55 +1100
commit5f175898dedb2bb2635d4d1dcb2afa8c420d5eae (patch)
tree8da1e54dcedb1584b8227124375d7d73b650dc1d
parentdf0d4ea04e34fc5d499056b00fa1e0a25f21453e (diff)
downloadmdadm-5f175898dedb2bb2635d4d1dcb2afa8c420d5eae.tar.gz
Increase default chunk size to 512K
This seems more appropriate for current (and recent) model drives than 64K. 64K is still the default for '--build' as changing that could corrupt data. 64K is also the default rounding for 'linear' on kernels older than 2.6.16. Signed-off-by: NeilBrown <neilb@suse.de>
-rw-r--r--Create.c9
-rw-r--r--mdadm.87
-rw-r--r--tests/00linear4
-rw-r--r--tests/00raid06
-rw-r--r--tests/00raid102
-rw-r--r--tests/00raid44
-rw-r--r--tests/00raid58
-rw-r--r--tests/00raid64
-rw-r--r--tests/02lineargrow6
-rw-r--r--tests/02r5grow4
-rw-r--r--tests/02r6grow4
-rw-r--r--tests/03r0assem4
-rw-r--r--tests/03r5assem2
-rw-r--r--tests/03r5assemV12
-rw-r--r--tests/04r0update2
-rw-r--r--tests/07autoassemble4
-rw-r--r--tests/07changelevels4
-rw-r--r--tests/07layouts6
-rw-r--r--tests/07reshape5intr2
-rw-r--r--tests/10ddf-create8
20 files changed, 51 insertions, 41 deletions
diff --git a/Create.c b/Create.c
index c96b319..1fb4043 100644
--- a/Create.c
+++ b/Create.c
@@ -234,8 +234,15 @@ int Create(struct supertype *st, char *mddev,
case 10:
case 6:
case 0:
- case LEVEL_LINEAR: /* linear */
if (chunk == 0) {
+ chunk = 512;
+ if (verbose > 0)
+ fprintf(stderr, Name ": chunk size defaults to 512K\n");
+ }
+ break;
+ case LEVEL_LINEAR:
+ /* a chunksize of zero 0s perfectly valid (and preferred) since 2.6.16 */
+ if (get_linux_version() < 2006016 && chunk == 0) {
chunk = 64;
if (verbose > 0)
fprintf(stderr, Name ": chunk size defaults to 64K\n");
diff --git a/mdadm.8 b/mdadm.8
index 121fc29..2df353c 100644
--- a/mdadm.8
+++ b/mdadm.8
@@ -440,7 +440,9 @@ before the number of devices in the array is reduced.
.TP
.BR \-c ", " \-\-chunk=
-Specify chunk size of kibibytes. The default is 64.
+Specify chunk size of kibibytes. The default when creating an
+array is 512KB. To ensure compatibility with earlier versions, the
+default when Building and array with no persistent metadata is 64KB.
This is only meaningful for RAID0, RAID4, RAID5, RAID6, and RAID10.
.TP
@@ -450,7 +452,8 @@ component will be rounded down to a multiple of this size.
This is a synonym for
.B \-\-chunk
but highlights the different meaning for Linear as compared to other
-RAID levels.
+RAID levels. The default is 64K if a kernel earlier than 2.6.16 is in
+use, and is 0K (i.e. no rounding) in later kernels.
.TP
.BR \-l ", " \-\-level=
diff --git a/tests/00linear b/tests/00linear
index ec6a166..d0791c1 100644
--- a/tests/00linear
+++ b/tests/00linear
@@ -3,13 +3,13 @@
mdadm -CR $md0 -l linear -n3 $dev0 $dev1 $dev2
check linear
-testdev $md0 3 $mdsize0 64
+testdev $md0 3 $mdsize0 1
mdadm -S $md0
# now with version-1 superblock
mdadm -CR $md0 -e1 --level=linear -n4 $dev0 $dev1 $dev2 $dev3
check linear
-testdev $md0 4 $mdsize1 64
+testdev $md0 4 $mdsize1 1
mdadm -S $md0
# now with no superblock
diff --git a/tests/00raid0 b/tests/00raid0
index f5122ec..8c3dfc3 100644
--- a/tests/00raid0
+++ b/tests/00raid0
@@ -3,19 +3,19 @@
mdadm -CR $md0 -l raid0 -n3 $dev0 $dev1 $dev2
check raid0
-testdev $md0 3 $mdsize0 64
+testdev $md0 3 $mdsize0 512
mdadm -S $md0
# now with version-1 superblock
mdadm -CR $md0 -e1 -l0 -n4 $dev0 $dev1 $dev2 $dev3
check raid0
-testdev $md0 4 $mdsize1 64
+testdev $md0 4 $mdsize1 512
mdadm -S $md0
# now with no superblock
mdadm -B $md0 -l0 -n5 $dev0 $dev1 $dev2 $dev3 $dev4
check raid0
-testdev $md0 5 $size 64
+testdev $md0 5 $size 512
mdadm -S $md0
diff --git a/tests/00raid10 b/tests/00raid10
index 6fffb74..283bfcd 100644
--- a/tests/00raid10
+++ b/tests/00raid10
@@ -13,6 +13,6 @@ do
esac
mdadm --create --run --level=raid10 --layout $lo --raid-disks 6 -x 1 $md0 $devs
check resync ; check raid10
- testdev $md0 $m $mdsize0 $[64*cm]
+ testdev $md0 $m $mdsize0 $[512*cm]
mdadm -S $md0
done
diff --git a/tests/00raid4 b/tests/00raid4
index ddb16b1..fa6eab5 100644
--- a/tests/00raid4
+++ b/tests/00raid4
@@ -3,13 +3,13 @@
mdadm -CfR $md0 -l 4 -n3 $dev0 $dev1 $dev2
check resync ; check raid[45]
-testdev $md0 2 $mdsize0 64
+testdev $md0 2 $mdsize0 512
mdadm -S $md0
# now with version-1 superblock
mdadm -CR $md0 -e1 --level=raid4 -n4 $dev0 $dev1 $dev2 $dev3
check recovery; check raid[45]
-testdev $md0 3 $mdsize1 64
+testdev $md0 3 $mdsize1 512
mdadm -S $md0
diff --git a/tests/00raid5 b/tests/00raid5
index 71f3654..0caf935 100644
--- a/tests/00raid5
+++ b/tests/00raid5
@@ -3,13 +3,13 @@
mdadm -CfR $md0 -l 5 -n3 $dev0 $dev1 $dev2
check resync
-testdev $md0 2 $mdsize0 64
+testdev $md0 2 $mdsize0 512
mdadm -S $md0
# now with version-1 superblock
mdadm -CR $md0 -e1 --level=raid5 -n4 $dev0 $dev1 $dev2 $dev3
check recovery
-testdev $md0 3 $mdsize1 64
+testdev $md0 3 $mdsize1 512
mdadm -S $md0
# now same again with explicit layout
@@ -19,13 +19,13 @@ do
mdadm -CfR $md0 -l 5 -p $lo -n3 $dev0 $dev1 $dev2
check resync ; check raid5
- testdev $md0 2 $mdsize0 64
+ testdev $md0 2 $mdsize0 512
mdadm -S $md0
# now with version-1 superblock
mdadm -CR $md0 -e1 --level=raid5 --layout $lo -n4 $dev0 $dev1 $dev2 $dev3
check recovery ; check raid5
- testdev $md0 3 $mdsize1 64
+ testdev $md0 3 $mdsize1 512
mdadm -S $md0
done
diff --git a/tests/00raid6 b/tests/00raid6
index 81834aa..4b293e2 100644
--- a/tests/00raid6
+++ b/tests/00raid6
@@ -3,13 +3,13 @@
mdadm -CfR $md0 -l 6 -n4 $dev0 $dev1 $dev2 $dev3
check resync ; check raid6
-testdev $md0 2 $mdsize0 64
+testdev $md0 2 $mdsize0 512
mdadm -S $md0
# now with version-1 superblock
mdadm -CR $md0 -e1 --level=raid6 -n5 $dev0 $dev1 $dev2 $dev3 $dev4
check resync ; check raid6
-testdev $md0 3 $mdsize1 64
+testdev $md0 3 $mdsize1 512
mdadm -S $md0
diff --git a/tests/02lineargrow b/tests/02lineargrow
index 78477a3..3f7c1a9 100644
--- a/tests/02lineargrow
+++ b/tests/02lineargrow
@@ -10,13 +10,13 @@ do
1.2 ) sz=$mdsize12 ;;
esac
mdadm -CRf $md0 --level linear -e $e --raid-disks=1 $dev1
- testdev $md0 1 $sz 64
+ testdev $md0 1 $sz 1
mdadm --grow $md0 --add $dev2
- testdev $md0 2 $sz 64
+ testdev $md0 2 $sz 1
mdadm --grow $md0 --add $dev3
- testdev $md0 3 $sz 64
+ testdev $md0 3 $sz 1
mdadm -S $md0
done
diff --git a/tests/02r5grow b/tests/02r5grow
index 2247570..0b46f60 100644
--- a/tests/02r5grow
+++ b/tests/02r5grow
@@ -10,11 +10,11 @@ testdev $md0 2 $[size/2] 32
mdadm --grow $md0 --size max
check resync
check wait
-testdev $md0 2 $mdsize0 64
+testdev $md0 2 $mdsize0 32
mdadm --grow $md0 --size $[size/2]
check nosync
-testdev $md0 2 $[size/2] 64
+testdev $md0 2 $[size/2] 32
mdadm -S $md0
diff --git a/tests/02r6grow b/tests/02r6grow
index cdcc46a..1a7042c 100644
--- a/tests/02r6grow
+++ b/tests/02r6grow
@@ -10,11 +10,11 @@ testdev $md0 2 $[size/2] 32
mdadm --grow $md0 --size max
check resync
check wait
-testdev $md0 2 $mdsize0 64
+testdev $md0 2 $mdsize0 32
mdadm --grow $md0 --size $[size/2]
check nosync
-testdev $md0 2 $[size/2] 64
+testdev $md0 2 $[size/2] 32
mdadm -S $md0
diff --git a/tests/03r0assem b/tests/03r0assem
index 55205a3..10e2a66 100644
--- a/tests/03r0assem
+++ b/tests/03r0assem
@@ -6,7 +6,7 @@
mdadm -CR $md2 -l0 -n3 $dev0 $dev1 $dev2
check raid0
-tst="testdev $md2 3 $mdsize0 64"
+tst="testdev $md2 3 $mdsize0 512"
$tst
uuid=`mdadm -Db $md2 | sed 's/.*UUID=//'`
mdadm -S $md2
@@ -70,7 +70,7 @@ mdadm -S $md2
mdadm --zero-superblock $dev0 $dev1 $dev2
mdadm -CR $md2 -l0 --metadata=1.0 -n3 $dev0 $dev1 $dev2
check raid0
-tst="testdev $md2 3 $mdsize1 64"
+tst="testdev $md2 3 $mdsize1 512"
$tst
uuid=`mdadm -Db $md2 | sed 's/.*UUID=//'`
diff --git a/tests/03r5assem b/tests/03r5assem
index be26cf1..585170f 100644
--- a/tests/03r5assem
+++ b/tests/03r5assem
@@ -3,7 +3,7 @@
# including with missing devices.
mdadm -CR $md1 -l5 -n3 $dev0 $dev1 $dev2
-tst="check raid5 ;testdev $md1 2 $mdsize0 64 ; mdadm -S $md1"
+tst="check raid5 ;testdev $md1 2 $mdsize0 512 ; mdadm -S $md1"
uuid=`mdadm -Db $md1 | sed 's/.*UUID=//'`
check wait
eval $tst
diff --git a/tests/03r5assemV1 b/tests/03r5assemV1
index 0f2c83b..5238ede 100644
--- a/tests/03r5assemV1
+++ b/tests/03r5assemV1
@@ -2,7 +2,7 @@
# create a v-1 raid5 array and assemble in various ways
mdadm -CR -e1 --name one $md1 -l5 -n3 -x2 $dev0 $dev1 $dev2 $dev3 $dev4
-tst="check raid5 ;testdev $md1 2 $mdsize1 64 ; mdadm -S $md1"
+tst="check raid5 ;testdev $md1 2 $mdsize1 512 ; mdadm -S $md1"
uuid=`mdadm -Db $md1 | sed 's/.*UUID=//'`
check wait
diff --git a/tests/04r0update b/tests/04r0update
index 23c7d65..e13645b 100644
--- a/tests/04r0update
+++ b/tests/04r0update
@@ -1,7 +1,7 @@
# create a raid0, re-assemble with a different super-minor
mdadm -CR $md0 -l0 -n3 $dev0 $dev1 $dev2
-testdev $md0 3 $mdsize0 64
+testdev $md0 3 $mdsize0 512
minor1=`mdadm -E $dev0 | sed -n -e 's/.*Preferred Minor : //p'`
mdadm -S /dev/md0
diff --git a/tests/07autoassemble b/tests/07autoassemble
index bdbc5d3..be3d993 100644
--- a/tests/07autoassemble
+++ b/tests/07autoassemble
@@ -10,7 +10,7 @@ mdadm -Ss
mdadm -As -c /dev/null --homehost=testing -vvv
testdev $md1 1 $mdsize0 64
testdev $md2 1 $mdsize0 64
-testdev $md0 2 $mdsize00 64
+testdev $md0 2 $mdsize00 512
mdadm -Ss
mdadm --zero-superblock $dev0 $dev1 $dev2 $dev3
@@ -20,5 +20,5 @@ mdadm -CR $md0 -l0 -n2 $md1 $dev2 --homehost=testing
mdadm -Ss
mdadm -As -c /dev/null --homehost=testing -vvv
testdev $md1 1 $mdsize0 64
-testdev $md0 1 $[mdsize0+mdsize00] 64
+testdev $md0 1 $[mdsize0+mdsize00] 512
mdadm -Ss
diff --git a/tests/07changelevels b/tests/07changelevels
index af27918..633798d 100644
--- a/tests/07changelevels
+++ b/tests/07changelevels
@@ -89,10 +89,10 @@ mdadm $md0 --fail $dev3
# switch layout to a DDF layout and back to make sure that works.
mdadm -G /dev/md0 --layout=ddf-N-continue --backup-file $bu
-checkgeo md0 raid6 4 $[64*1024] 10
+checkgeo md0 raid6 4 $[512*1024] 10
dotest 2
mdadm -G /dev/md0 --layout=ra --backup-file $bu
-checkgeo md0 raid6 4 $[64*1024] 1
+checkgeo md0 raid6 4 $[512*1024] 1
dotest 2
mdadm -G $md0 -l5 --backup-file $bu
diff --git a/tests/07layouts b/tests/07layouts
index c0c9ea0..91baec0 100644
--- a/tests/07layouts
+++ b/tests/07layouts
@@ -12,7 +12,7 @@ export MDADM_GROW_VERITY=1
dotest() {
sleep 0.5
check wait
- testdev $md0 $1 $mdsize0 64 nd
+ testdev $md0 $1 $mdsize0 512 nd
blockdev --flushbufs $md0
cmp -s -n $[textK*1024] $md0 /tmp/RandFile || { echo cmp failed; exit 2; }
# write something new - shift chars 4 space
@@ -59,7 +59,7 @@ l5[5]=parity-last
for layout in 0 1 2 3 4 5 0
do
mdadm -G $md0 --layout=${l5[$layout]} --backup-file $bu
- checkgeo md0 raid5 5 $[64*1024] $layout
+ checkgeo md0 raid5 5 $[512*1024] $layout
dotest 4
done
@@ -86,6 +86,6 @@ l6[20]=parity-first-6
for layout in 0 1 2 3 4 5 8 9 10 16 17 18 19 20 0
do
mdadm -G $md0 --layout=${l6[$layout]} --backup-file $bu
- checkgeo md0 raid6 5 $[64*1024] $layout
+ checkgeo md0 raid6 5 $[512*1024] $layout
dotest 3
done
diff --git a/tests/07reshape5intr b/tests/07reshape5intr
index b79d548..3a5f115 100644
--- a/tests/07reshape5intr
+++ b/tests/07reshape5intr
@@ -12,7 +12,7 @@ do
do dd if=/dev/urandom of=$d bs=1024 || true
done
- mdadm -CR $md0 -amd -l5 -n$disks --assume-clean $devs
+ mdadm -CR $md0 -amd -l5 -c 256 -n$disks --assume-clean $devs
mdadm $md0 --add $dev6
echo 20 > /proc/sys/dev/raid/speed_limit_max
mdadm --grow $md0 -n $[disks+1]
diff --git a/tests/10ddf-create b/tests/10ddf-create
index a32dc0f..12c3820 100644
--- a/tests/10ddf-create
+++ b/tests/10ddf-create
@@ -12,10 +12,10 @@ mdadm -CR /dev/md/ddf0 -e ddf -n 5 $dev8 $dev9 $dev10 $dev11 $dev12
mdadm -CR r0 -l0 -n5 /dev/md/ddf0 -z 5000
mdadm -CR r1 -l1 -n2 /dev/md/ddf0
mdadm -CR r5 -l5 -n3 /dev/md/ddf0
-testdev /dev/md/r0 5 5000 64
-# r0 will use 4992 due to chunk size, so that leave 27776 for the rest
-testdev /dev/md/r1 1 27776 1
-testdev /dev/md/r5 2 27776 64
+testdev /dev/md/r0 5 5000 512
+# r0 will use 4608 due to chunk size, so that leaves 28160 for the rest
+testdev /dev/md/r1 1 28160 1
+testdev /dev/md/r5 2 28160 512
dd if=/dev/sda of=/dev/md/r0 || true
dd if=/dev/sda of=/dev/md/r1 || true
dd if=/dev/sda of=/dev/md/r5 || true