[PATCH/RFC] Linux MTD striping middle layer

Vitaly Wool vwool at ru.mvista.com
Thu Mar 23 05:10:21 EST 2006


Nicolas Pitre wrote:

>>Let's look at it at the following angle. Striping is a nice concept, as well
>>as many other nice concepts that exist in the world. Are they all worth being
>>impemented in Linux MTD subsystem? :)
>>    
>>
>
>Why not, if you can configure it out.
>  
>
Well, the thing is it's getting more and more complicated and harder to 
support...

>  
>
>>OTOH, what is the rationale? Make devices operate faster. Okay, why can't this
>>be implemented as mtdconcat optimization?
>>    
>>
>
>mtdconcat provides linear access to subdevices.
>
>The stripe module provides _interleaved_ access to subdevices.
>
>That is the fundamental difference.
>  
>
Let's make a config option to mtdconcat  switching between 
interleaved/linear access. Why not?

>  
>
>>What I'd also like to say is that having a lot of threads doesn't look
>>attractive to me.
>>    
>>
>
>What is the problem with threads?  The kernel already uses them heavily 
>for many purposes because it makes things cleaner.
>  
>
More threads = more overhead, more context switching, more possibilities 
to  decrease the system performance (wrong prio choice, prio inversion 
etc.).
Adding, say, 5 more threads (which doesn't look impossible wrt to this 
implementation) doesn't look good.

>  
>
>>I'd rather go in for changing the whole MTD subsystem to
>>make the API asynchoronus, and then you won't need many threads. But this is a
>>rather dramatic change...
>>    
>>
>
>But do you realize that any asynchronous implementation will _still_ 
>require kernel threads of its own to do the work anyway?  That's the 
>reason why there is so many kernel threads running in your kernel 
>already.
>  
>
Yes, but not necessarily so many of. I can even think of the following 
implementation (roughly):

- erase: issue a command to erase the block from 1st chip, issue command 
to erase the block from 2nd chip, wait on counting semaphore;
(this is happening in caller context)
- hrm, 2 callbacks on erase completion, increasing the semaphore counter 
(1 thread needed)

Vitaly




More information about the linux-mtd mailing list