[PATCH/RFC] Linux MTD striping middle layer

Artem B. Bityutskiy dedekind at infradead.org
Tue Mar 21 10:09:24 EST 2006


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.

Belyakov, Alexander wrote:
> In the suggested solution it is possible to stripe 2, 4, 8, etc.
devices
> of the same type. Note that devices with different sizes are
supported.
Why can't I have 3 or 5 chips and enable striping?


> 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?

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.

May I consider your striping as another type of MTD concatenation layer
which concatenates MTD devices by means of interleaving eraseblocks?

> Subdevices should belong to different (independent) physical flash 
> chips in order to get  performance increase. Value "interlavelsize"
> describes striping granularity and it is very important from
performance
> point of view. Write operation performance increase should be expected
> only if the amount of data to be written larger than interleave size.
> For example, if we have 512 bytes interleave size, we see no write
speed
> boost for files smaller than 512 bytes. File systems have a write
buffer
> of
> well known size (let it be 4096 bytes). Thus it is not good idea to
set
> interleave size larger than 2048 byte if we are striping two flash
chips
> and going to use the file system on it. For NOR devices the bottom
> border
> for interleave size is defined by flash buffer size (64 bytes, 128
> bytes, etc).

Err, what does interleaving in sizes non-multiple to the eraseblock size
mean. 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
2. I write 512 bytes at offset 512 of eraseblock 0 of mtd7
3. I write 512 bytes at offset 1024 of eraseblock 0 of mtd7
4. I erase eraseblock 0 of mtd7

-- 
Best Regards,
Artem B. Bityuckiy,
St.-Petersburg, Russia.





More information about the linux-mtd mailing list