Messages in this thread | | | Date | Wed, 25 Mar 2009 18:43:59 +0100 | From | Jens Axboe <> | Subject | Re: MMC layer regression with single-block controllers |
| |
On Wed, Mar 25 2009, Pierre Ossman wrote: > On Wed, 25 Mar 2009 17:14:25 +0100 > Jens Axboe <jens.axboe@oracle.com> wrote: > > > On Wed, Mar 25 2009, Pierre Ossman wrote: > > > > > > The code was there previously, but it seemed a bit redundant to have > > > functionality like that in the block driver since we've already told > > > the block layer about the restrictions. > > > > You never saw the warnings? It's pretty clear that it does not support < > > PAGE_CACHE_SIZE blocks. It has always been so, I don't know why the > > subject says regression. I guess that is referring to a mmc layer > > regression? > > > > Yes. The MMC code did all of this magic by itself previously and > assumed very little about the block layer. > > > > The code was pretty simple. Basically it just cropped the sg list at > > > the correct place. Couldn't that be as easily done in the block layer? > > > > No, because if you do it transparently, then you have to keep partial > > state in the bio for completions. So it makes everything a lot more > > complex, I don't want to do that for something like this. > > > > How is this different from the low level driver partially completing a > request, which is how it would have to be handled otherwise?
It's a completely parallel issue. We keep extra state to handle the partial completion bits, we would need to add even more state to handle presenting a smaller view of the request (and the bio, it would need to work for both) to the driver.
-- Jens Axboe
| |