Re: [PATCH/RFC] Linux MTD striping middle layer

Vitaly Wool
2006-03-23T10:10:20Z

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