Re: [PATCH] tree/tiny rcu: Add debug RCU head option (v2)

From: Christoph Lameter
Date: Fri Mar 19 2010 - 08:35:35 EST


On Fri, 19 Mar 2010, Lai Jiangshan wrote:

> but SLUB opposed me, so I did not post it.
>
> @ slub.c
> static void free_slab(struct kmem_cache *s, struct page *page)
> {
> if (unlikely(s->flags & SLAB_DESTROY_BY_RCU)) {
> /*
> * RCU free overloads the RCU head over the LRU
> */
> struct rcu_head *head = (void *)&page->lru;
>
> call_rcu(head, rcu_free_slab);
> } else
> __free_slab(s, page);
> }
>
> I think it is not your patch's fault, but the above code has
> already existed.
>
> In your patch, struct rcu_head::debug will share the same memory of
> the other field of struct page, (especially share the struct page::flags
> which I encountered)

Right. I like the smallness of the RCU structure but if you must
increase its size then we could:

A) put the rcu structure at the end of each page like SLOB
but that will take away memory that could be used by objects.

B) Move the rcu object up by a word so that it overloads the index field
in the page struct. That would give another exact fit but will cause
trouble again if you bloat the structure some more.

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