Re: [PATCH RFC] extent mapped page cache

Nick Piggin
2007-07-27T01:15:33Z

On Thu, Jul 26, 2007 at 09:05:15AM -0400, Chris Mason wrote:
> On Thu, 26 Jul 2007 04:36:39 +0200
> Nick Piggin <npiggin@suse.de> wrote:
>
> [ are state trees a good idea? ]
>
> > > One thing it gains us is finding the start of the cluster. Even if
> > > called by kswapd, the state tree allows writepage to find the start
> > > of the cluster and send down a big bio (provided I implement
> > > trylock to avoid various deadlocks).
> >
> > That's very true, we could potentially also do that with the block
> > extent tree that I want to try with fsblock.
>
> If fsblock records and extent of 200MB, and writepage is called on a
> page in the middle of the extent, how do you walk the radix backwards
> to find the first dirty & up to date page in the range?

I mean if we also have a block extent tree between fsblock and the
filesystem's get_block (which I think could be a good idea).

So you would use that tree to find the block extent that you're in,
then use the pagecache tree dirty tag lookup from the start of that
block extent (or you could add a backward tag lookup if you just wanted
to gather a small range around the given offset). I think (haven't got
any code for this yet, mind you).

> > > I put the placeholder patches on hold because handling a corner case
> > > where userland did O_DIRECT from a mmap'd region of the same file
> > > (Linus pointed it out to me). Basically my patches had to work in
> > > 64k chunks to avoid a deadlock in get_user_pages. With the state
> > > tree, I can allow the page to be faulted in but still properly deal
> > > with it.
> >
> > Oh right, I didn't think of that one. Would you still have similar
> > issues with the external state tree? I mean, the filesystem doesn't
> > really know why the fault is taken. O_DIRECT read from a file into
> > mmapped memory of the same block in the file is almost hopeless I
> > think.
>
> Racing is fine as long as we don't deadlock or expose garbage from disk.

Hmm, OK you're probably right. I'll have to see how it looks.

> > > I'm sure we can find some river in Cambridge, winner gets to throw
> > > Axboe in.
> >
> > Very noble of you to donate your colleage to such a worthy cause.
>
> Jens is always interested in helping solve such debates. It's a
> fantastic service he provides to the community.

;)