Re: [PATCH][RFC] fast file mapping for loop

Chris Mason
2008-01-10T12:55:11Z

On Thu, 10 Jan 2008 08:54:59 +0000
Christoph Hellwig <hch@infradead.org> wrote:

> On Thu, Jan 10, 2008 at 09:44:57AM +0100, Jens Axboe wrote:
> > > IMHO this shouldn't be done in the loop driver anyway.
> > > Filesystems have their own effricient extent lookup trees (well,
> > > at least xfs and btrfs do), and we should leverage that instead
> > > of reinventing it.
> >
> > Completely agree, it's just needed right now for this solution
> > since all we have is a crappy bmap() interface to get at those
> > mappings.
>
> So let's fix the interface instead of piling crap ontop of it. As I
> said I think Peter has something to start with so let's beat on it
> until we have something suitable. If we aren't done by end of Feb
> I'm happy to host a hackfest to get it sorted around the fs/storage
> summit..
>

Ok, I've been meaning to break my extent_map code up, and this is a
very good reason. I'll work up a sample today based on Jens' code.

The basic goals:

* Loop (swap) calls into the FS for each mapping. Any caching happens
on the FS side.
* The FS returns an extent, filling any holes

Swap would need to use an extra call early on for preallocation.

Step two is having a call back into the FS allow the FS to delay the
bios until commit completion so that COW and delalloc blocks can be
fully on disk when the bios are reported as done. Jens, can you add
some way to queue the bio completions up?

-chris