Re: MMC layer regression with single-block controllers

From: Pierre Ossman
Date: Wed Mar 25 2009 - 11:53:50 EST


On Wed, 25 Mar 2009 12:42:48 +0100
Jens Axboe <jens.axboe@xxxxxxxxxx> wrote:

> On Wed, Mar 25 2009, Pierre Ossman wrote:
> >
> > That's an annoying limitation and sort of defeats the purpose of
> > specifying a maximum sector count. Why can't it go below 8?
>
> Because it would add all sorts of complexity for handling 4kb block size
> file systems on top of the block device. The bio_add_page() api depends
> on being able to add a single page at least, it has to or you would need
> to push that complexity to the callers.
>

Requests going in into the block layer and requests coming out aren't
that strongly coupled, so I don't see it of that much of a stretch to
expect this to be handled.

> So it's annoying, but you have to do the incremental completions
> yourself for the (obscure) device that doesn't do more than 512b
> transfers. It's really not that difficult, and it would be simpler than
> supporting partial completions generically in the block layer.

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.

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?

>
> Saying that it defeats the purpose of the setting is missing the bigger
> picture - basically all other devices, that have sane limits (like 128k,
> or whatnot).
>

I suppose. But it makes the feature completely useless for MMC as it
has to implement it's own cropping of requests anyway.

Rgds
--
-- Pierre Ossman

WARNING: This correspondence is being monitored by the
Swedish government. Make sure your server uses encryption
for SMTP traffic and consider using PGP for end-to-end
encryption.

Attachment: signature.asc
Description: PGP signature