> On Thu, Feb 01, 2001 at 05:34:49PM +0000, Alan Cox wrote:
> In the disk IO case, you basically don't get that (the only thing
> which comes close is raid5 parity blocks). The data which the user
> started with is the data sent out on the wire. You do get some
> interesting cases such as soft raid and LVM, or even in the scsi stack
> if you run out of mailbox space, where you need to send only a
> sub-chunk of the input buffer.
Though your describption is right, I don't think the case is very common:
Sometimes in LVM on a pv boundary and maybe sometimes in the scsi code.
In raid1 you need some kind of clone iobuf, which should work with both
cases. In raid0 you need a complete new pagelist anyway, same for raid5.
> In that case, having offset/len as the kiobuf limit markers is ideal:
> you can clone a kiobuf header using the same page vector as the
> parent, narrow down the start/end points, and continue down the stack
> without having to copy any part of the page list. If you had the
> offset/len data encoded implicitly into each entry in the sglist, you
> would not be able to do that.
Sure you could: you embedd that information in a higher-level structure.
I think you want the whole kio concept only for disk-like IO. Then many
of the things you do are completly right and I don't see much problems
(besides thinking that some thing may go away - but that's no major point).
With a generic object that is used over subsytem boundaries things are
different.
Christoph
-- Of course it doesn't work. We've performed a software upgrade. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/