Re: [patch 10/21] buffer heads: Support slab defrag

David Chinner
2008-05-20T00:25:51Z

On Mon, May 19, 2008 at 09:44:11AM -0700, Christoph Lameter wrote:
> On Mon, 19 May 2008, David Chinner wrote:
>
> > Defragmentation is triggered as part of the usual memory reclaim
> > process. Which implies we've run out of free memory, correct?
>
> Yes but we have already reclaimed some memory.
>
> > > How do you trigger such a special writeout?
> >
> > filemap_fdatawrite_range() perhaps?
>
> Could you provide me such a patch? I would not know how much to writeout.
> If we had such a method then we could also use that for the swap case
> where we also write out single pages?

How hard is it? I don't have time right now to do this, but it's essentially:

mapping = page->mapping;
......
- mapping->aops->writepage();
+ filemap_fdatawrite_range(mapping, start, end);

Where [start,end] span page->index and are is large enough
to get a substantial sized I/O to disk (say at least SWAP_CLUSTER_MAX
pages, preferrably larger for 4k page size machines).

Cheers,

Dave.
--
Dave Chinner
Principal Engineer
SGI Australian Software Group