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