Re: MMC layer regression with single-block controllers

From: Jens Axboe
Date: Wed Mar 25 2009 - 13:44:20 EST


On Wed, Mar 25 2009, Pierre Ossman wrote:
> On Wed, 25 Mar 2009 17:14:25 +0100
> Jens Axboe <jens.axboe@xxxxxxxxxx> 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

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/