Re: a question about slub in function __slab_free()

From: Joonsoo Kim
Date: Wed Mar 02 2016 - 09:38:49 EST


2016-03-02 21:26 GMT+09:00 Xishi Qiu <qiuxishi@xxxxxxxxxx>:
> ___slab_alloc()
> deactivate_slab()
> add_full(s, n, page);
> The page will be added to full list and the frozen is 0, right?
>
> __slab_free()
> prior = page->freelist; // prior is NULL
> was_frozen = new.frozen; // was_frozen is 0
> ...
> /*
> * Slab was on no list before and will be
> * partially empty
> * We can defer the list move and instead
> * freeze it.
> */
> new.frozen = 1;
> ...
>
> I don't understand why "Slab was on no list before"?

add_full() is defined only for CONFIG_SLUB_DEBUG.
And, actual add happens if slub_debug=u is enabled.
In other cases, fully used slab isn't attached on any list.

Thanks.