Re: 2.6.9-rc2 bio sickness with large writes

Jeff V. Merkey
2004-09-20T17:46:25Z

jmerkey@galt.devicelogics.com wrote:

Jens,

Can you explain the circumstances related to the bio->bi_size callback.
You stated (and I have observed)
that there may be callbacks from bi_end_io with bi_size set and that
these should be ignored and
return a value of 1.

Can you explain to me under what circumstances I am likely to see this
behavior? In other words, would
you explain the bio process start to finish with coalesced IO requests,
at least as designed. Also, the whole
page and offset sematics in the interface are also somewhat burdensome.
Wouldn't a more reasonable
interface for async IO be:

address
length
address
length

rather than

page structure
offset in page structure
page structure
offset in page structure

The hardware doesn't care about page mapping above it just needs to see
addresses (and not always 4 byte aligned addresses)
and lengths for building scatter gather lists. Forcing page sematics
seems a little orthagonal.

I can assume from the interface as designed that if you pass an offset
for a page that is not page aligned,
and ask for a 4K write, then you will end up dropping the data on the
floor than spans beyond the end of the page.

No offense, but this is **BUSTED** behavior for an asynch interface. The
whole page offset thing is a little
difficult to use and pushes needless complexity to someone just needing
to submit IO to the disk. I think this
is great for mmap for the VFS layer, and it dure makes it a lot easier
to submit IO for fs with the mmap layer,
but as a general purpose async layer on top of generic_make_request,
it's a little tough to use, IMHO.

Please advise,

Jeff