Re: [3/4] kevent: AIO, aio_sendfile() implementation.

Christoph Hellwig
2006-07-26T10:13:58Z

On Wed, Jul 26, 2006 at 02:08:49PM +0400, Evgeniy Polyakov wrote:
> On Wed, Jul 26, 2006 at 11:00:13AM +0100, Christoph Hellwig (hch@infradead.org) wrote:
> > > struct address_space_operations ext2_aops = {
> > > + .get_block = ext2_get_block,
> >
> > No way in hell. For whatever you do please provide a interface at
> > the readpage/writepage/sendfile/etc abstraction layer. get_block is
> > nothing that can be exposed to the common code.
>
> Compare this with sync read methods - all they do is exactly the same
> operations with low-level blocks, which are combined into nice exported
> function, so there is _no_ readpage layer - it calls only one function
> which works with blocks.

No. The abtraction layer there is ->readpage(s). _A_ common implementation
works with a get_block callback from the filesystem, but there are various
others. We've been there before, up to mid-2.3.x we had a get_block inode
operation and we got rid of it because it is the wrong abstraction.

> So it is not a technical problem, but political one.

It's a technical problem, and it's called get you abstractions right. And
ontop of that a political one and that's called get your abstraction coherent.
If you managed to argue all of us into accept that get_block is the right
abstraction (and as I mentioned above that's technically not true) you'd
still have the burden to update everything to use the same abstraction.