Re: 2.5.39 kmem_cache bug

Manfred Spraul (manfred@colorfullife.com)
Sun, 29 Sep 2002 15:52:04 +0200


Ed Tomlinson wrote:
>
> - if (__kmem_cache_shrink(cachep)) {
> + /* remove any empty partial pages */
> + spin_lock_irq(&cachep->spinlock);
> + while (!cachep->growing) {
> + struct list_head *p;
> + slab_t *slabp;
> +

growing is guaranteed to be false - loop is not necessary.

Actually growing can be removed completely, it's never necessary,
neither with nor without kmem_cache_reap().

Ed, there are far more cleanups possible in slab.c than just going from
3 to 2 lists, but IMHO it's far to early to make the design decision for
2 lists.

Or wait: You want 2 lists? Ok, agreed.

free and partial ;-)

The full list is unnecessary, it's possible to replace it with a
counter. It also saves several cacheline accesses for the list_del() and
list_add() into the full list...

--
	Manfred

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