Messages in this thread | | | Subject | Re: [PATCH -mm 4/6] slqb: record slab's start address in slqb_page | From | Pekka Enberg <> | Date | Mon, 23 Mar 2009 09:54:24 +0200 |
| |
On Tue, 2009-03-03 at 21:44 +0800, Lai Jiangshan wrote: > slqb's slab is coloring, it's will be useful that record the > color value or start address in struct slqb_page. > > This fix adds a field in struct slqb_page to record slab's > start address, It will be used by kfree_rcu(). > > > struct slqb_page has a field: > struct kmem_cache_list *list; > > the corresponding field in struct page is: > > union { > struct { > unsigned long private; > struct address_space *mapping; > }; > struct kmem_cache *slab; > struct page *first_page; > }; > > It's large than 'struct kmem_cache_list *list;' > *So we are safe to add a field in struct page.* > > > (This field will not become a burden in future:) > struct page is very small, this fix uses the last room of > struct page. But if we have to add a more important > field in struct slqb_page in future, We can record slab's > color value in slqb_page instead of start address. > like this: > struct { > unsigned long flags; > atomic_t _count; > u16 inuse; /* use u16 instead */ > u16 color; /* of unsigned int */ > void *a_more_important_field; > struct kmem_cache_list *list; > void **freelist; > union { > struct list_head lru; > struct rcu_head rcu_head; > }; > }; > > Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com> > --- > diff --git a/mm/slqb.c b/mm/slqb.c > index 48bdf3b..c258ddc 100644 > --- a/mm/slqb.c > +++ b/mm/slqb.c > @@ -41,6 +41,7 @@ struct slqb_page { > unsigned long flags; /* mandatory */ > atomic_t _count; /* mandatory */ > unsigned int inuse; /* Nr of objects */ > + void *s_mem; /* start address */ > struct kmem_cache_list *list; /* Pointer to list */ > void **freelist; /* LIFO freelist */ > union { > @@ -1010,6 +1011,7 @@ static struct slqb_page *new_slab_page(struct kmem_cache *s, > } > set_freepointer(s, last, NULL); > > + page->s_mem = start; > page->freelist = start; > page->inuse = 0; > out:
I am okay with this but I think Nick was against it. Nick?
Pekka
| |