Re: [patch 14/23] inodes: Support generic defragmentation

From: Christoph Lameter
Date: Wed Nov 07 2007 - 14:00:30 EST


On Wed, 7 Nov 2007, Jörn Engel wrote:

> > The pointer is for communication between the get and kick methods. get()
> > can modify kick() behavior by returning a pointer to a data structure or
> > using the pointer to set a flag. F.e. get() may discover that there is an
> > unreclaimable object and set a flag that causes kick to simply undo the
> > refcount increment. get() may build a map for the objects and indicate in
> > the map special treatment.
>
> Is there a get/kick pair that actually does this? So far I haven't
> found anything like it.

Hmmm.. Nothing uses it at this point. I went through a series of get/kicks
during development. Some needed it. I suspect that we will need it when we
implement reallocation instead of simply reclaiming. It is also necessary
if we get into the situation where we want to optimize the reclaim. At
that point the kick method needs to know how far get() got before the
action was aborted in order to fix up only certain refcounts.

> Also, something vaguely matching that paragraph might make sense in a
> kerneldoc header to the function. ;)

Its described in slab.h