[PATCH/RFC] Linux MTD striping middle layer
Alexander Belyakov
alexander.belyakov at intel.com
Tue Mar 21 13:11:10 EST 2006
Artem,
please find my answers below.
Artem B. Bityutskiy wrote:
> Hello Alexander,
>
> I have basic questions as I haven't grasped your concepts. Note, I'm not
> an expert in RAID, so please, bother to explain basic notions as well.
>
>
> Why can't I have 3 or 5 chips and enable striping?
>
Striped mtd device erasesize is an erasesize of subdevice multiplied by
number of subdevices (in case of equal erasesize subdevices). As
erasesize is commonly considered as a power-of-2 number it is not good
idea to use 3, 5, etc devices.
>
>
>> cmdline_parm="<stripedef>[;<stripedef>]"
>> <stripedef> :=
>>
> <stripename>(<interleavesize>):<subdevname>.<subdevname>
>
>> Example:
>> insmod mtdstripe.ko
>> cmddline_parm="stripe1(128):vol1.vol3;stripe2(128):vol2.vol4
>> Note: you should use '.' as a delimiter for subdevice names here.
>>
> Err, please, define the "subdevice" notion. And what is vol1, vol2, etc?
>
Subdevices are mtd devices which participate in creation of striped mtd
device (superdevice). vol1, vol2 here are the names of subdevices
assigned on partitioning stage (for example) by the following part of
kernel configuration string:
CONFIG_CMDLINE="..........
mtdparts=flash1:512k(blob)ro,2m(kernel)ro,16m(root),16m(vol1);flash2:16m(vol2),8m(vol3)
........."
> Please, describe the model of the striped MTD device from user's
> perspective. I understand MTD concatenation. It just merges several MTD
> devices to one larger MTD device.
>
If user has several independent chips (of the same type) in system he
can stripe them to get performance boost.
> May I consider your striping as another type of MTD concatenation layer
> which concatenates MTD devices by means of interleaving eraseblocks?
>
Your interpretation is similar to JBOD (concatenation) and RAID0
(striping) comparison. Yes in case of striping we also get a larger
device as for concatenation. But the interleave size may differ from
subdevices erasesize. Actually interleave size is significantly smaller
than erasesize.
> Suppose my interleave value is 512. Suppose the interleaved MTD
> device name is mtd7 and it concatenates 2 other MTD devices. What
> happens if:
>
> 1. I write 512 bytes at offset 0 of eraseblock 0 of mtd7
>
These 512 bytes will be written at first subdevice at offset 0
> 2. I write 512 bytes at offset 512 of eraseblock 0 of mtd7
>
These 512 bytes will be written at second subdevice at offset 0
> 3. I write 512 bytes at offset 1024 of eraseblock 0 of mtd7
>
These 512 bytes will be written at first subdevice at offset 512
> 4. I erase eraseblock 0 of mtd7
>
In simple case eraseblock 0 on both subdevices 1 and 2 will be erased
Thanks,
Alexander Belyakov
More information about the linux-mtd
mailing list