Re: 2.6.9-rc2 bio sickness with large writes

From: Jeff V. Merkey
Date: Mon Sep 20 2004 - 12:48:01 EST


jmerkey@xxxxxxxxxxxxxxxxxxxxx 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





-
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/