diff options
author | Christoph Lameter <clameter@sgi.com> | 2008-01-07 23:20:26 -0800 |
---|---|---|
committer | Christoph Lameter <clameter@sgi.com> | 2008-02-04 10:56:01 -0800 |
commit | f61396aed90acb033952531c522d1010f87e24f4 (patch) | |
tree | 53d42c90f0aab1d1b53e8648a279e10a83df0107 /mm/slub.c | |
parent | 151c602f79cb9154c3f3d83223cae355af463d6f (diff) | |
download | linux-f61396aed90acb033952531c522d1010f87e24f4.tar.bz2 |
Move count_partial before kmem_cache_shrink
Move the counting function for objects in partial slabs so that it is placed
before kmem_cache_shrink.
Signed-off-by: Christoph Lameter <clameter@sgi.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'mm/slub.c')
-rw-r--r-- | mm/slub.c | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/mm/slub.c b/mm/slub.c index 65bf21dc996a..9aa12b54ad1b 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -2607,6 +2607,19 @@ void kfree(const void *x) } EXPORT_SYMBOL(kfree); +static unsigned long count_partial(struct kmem_cache_node *n) +{ + unsigned long flags; + unsigned long x = 0; + struct page *page; + + spin_lock_irqsave(&n->list_lock, flags); + list_for_each_entry(page, &n->partial, lru) + x += page->inuse; + spin_unlock_irqrestore(&n->list_lock, flags); + return x; +} + /* * kmem_cache_shrink removes empty slabs from the partial lists and sorts * the remaining slabs by the number of items in use. The slabs with the @@ -3078,19 +3091,6 @@ void *__kmalloc_node_track_caller(size_t size, gfp_t gfpflags, return slab_alloc(s, gfpflags, node, caller); } -static unsigned long count_partial(struct kmem_cache_node *n) -{ - unsigned long flags; - unsigned long x = 0; - struct page *page; - - spin_lock_irqsave(&n->list_lock, flags); - list_for_each_entry(page, &n->partial, lru) - x += page->inuse; - spin_unlock_irqrestore(&n->list_lock, flags); - return x; -} - #if defined(CONFIG_SYSFS) && defined(CONFIG_SLUB_DEBUG) static int validate_slab(struct kmem_cache *s, struct page *page, unsigned long *map) |