Caches in modules: Patch against 2.3.47

From: Andreas Gruenbacher (a.gruenbacher@bestbits.at)
Date: Fri Feb 25 2000 - 17:42:03 EST


Hello,

Please consider the following patch against 2.3.47.We should really have this
functionality in 2.4. It's rather useful for all sorts of extensions.

I've already fairly well tested the patch; as always there may still be some
strange bugs that I didn't catch :-)

Description
-----------
This patch adds register_cache() and unregister_cache() functions to the
kernel. The caches registered via that interface are shrunk when memory
needs to be freed, just like e.g. the dentry and inode caches.

Benefit: Modules, drivers, filesystems, etc. can register caches that
are shrunk only when necessary, rather than defining fixed-size caches.

This patch has no effect unless register_cache() is actually used.

This patch also adds a function rotate_list to <linux/list.h> that
rotates the list so that another list element becomes the list head.
It is used in mm/vmscan.c's do_try_to_free_pages() function to rotate
the list of caches when enough memory has been freed, so that the caches
are treated more fairly.

The patch also includes a test, which should finally be removed.

begin 644 register_cache.diff.gz
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
8ID/I0AGDV0:*YQ.QU/1_`,'JZ4<>)```
`
end

Regards,
Andreas Gruenbacher

------------------------------------------------------------------------
 Andreas Gruenbacher, a.gruenbacher@computer.org
 Contact information: http://www.bestbits.at/~agruenba

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Tue Feb 29 2000 - 21:00:13 EST