diff options
-rw-r--r-- | include/linux/mm_types.h | 3 | ||||
-rw-r--r-- | mm/slab.c | 4 | ||||
-rw-r--r-- | mm/slob.c | 10 |
3 files changed, 9 insertions, 8 deletions
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 290901a8c1de..84b74080beb7 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h | |||
@@ -124,6 +124,8 @@ struct page { | |||
124 | union { | 124 | union { |
125 | struct list_head lru; /* Pageout list, eg. active_list | 125 | struct list_head lru; /* Pageout list, eg. active_list |
126 | * protected by zone->lru_lock ! | 126 | * protected by zone->lru_lock ! |
127 | * Can be used as a generic list | ||
128 | * by the page owner. | ||
127 | */ | 129 | */ |
128 | struct { /* slub per cpu partial pages */ | 130 | struct { /* slub per cpu partial pages */ |
129 | struct page *next; /* Next partial slab */ | 131 | struct page *next; /* Next partial slab */ |
@@ -136,7 +138,6 @@ struct page { | |||
136 | #endif | 138 | #endif |
137 | }; | 139 | }; |
138 | 140 | ||
139 | struct list_head list; /* slobs list of pages */ | ||
140 | struct slab *slab_page; /* slab fields */ | 141 | struct slab *slab_page; /* slab fields */ |
141 | struct rcu_head rcu_head; /* Used by SLAB | 142 | struct rcu_head rcu_head; /* Used by SLAB |
142 | * when destroying via RCU | 143 | * when destroying via RCU |
@@ -2922,9 +2922,9 @@ retry: | |||
2922 | /* move slabp to correct slabp list: */ | 2922 | /* move slabp to correct slabp list: */ |
2923 | list_del(&page->lru); | 2923 | list_del(&page->lru); |
2924 | if (page->active == cachep->num) | 2924 | if (page->active == cachep->num) |
2925 | list_add(&page->list, &n->slabs_full); | 2925 | list_add(&page->lru, &n->slabs_full); |
2926 | else | 2926 | else |
2927 | list_add(&page->list, &n->slabs_partial); | 2927 | list_add(&page->lru, &n->slabs_partial); |
2928 | } | 2928 | } |
2929 | 2929 | ||
2930 | must_grow: | 2930 | must_grow: |
@@ -111,13 +111,13 @@ static inline int slob_page_free(struct page *sp) | |||
111 | 111 | ||
112 | static void set_slob_page_free(struct page *sp, struct list_head *list) | 112 | static void set_slob_page_free(struct page *sp, struct list_head *list) |
113 | { | 113 | { |
114 | list_add(&sp->list, list); | 114 | list_add(&sp->lru, list); |
115 | __SetPageSlobFree(sp); | 115 | __SetPageSlobFree(sp); |
116 | } | 116 | } |
117 | 117 | ||
118 | static inline void clear_slob_page_free(struct page *sp) | 118 | static inline void clear_slob_page_free(struct page *sp) |
119 | { | 119 | { |
120 | list_del(&sp->list); | 120 | list_del(&sp->lru); |
121 | __ClearPageSlobFree(sp); | 121 | __ClearPageSlobFree(sp); |
122 | } | 122 | } |
123 | 123 | ||
@@ -282,7 +282,7 @@ static void *slob_alloc(size_t size, gfp_t gfp, int align, int node) | |||
282 | 282 | ||
283 | spin_lock_irqsave(&slob_lock, flags); | 283 | spin_lock_irqsave(&slob_lock, flags); |
284 | /* Iterate through each partially free page, try to find room */ | 284 | /* Iterate through each partially free page, try to find room */ |
285 | list_for_each_entry(sp, slob_list, list) { | 285 | list_for_each_entry(sp, slob_list, lru) { |
286 | #ifdef CONFIG_NUMA | 286 | #ifdef CONFIG_NUMA |
287 | /* | 287 | /* |
288 | * If there's a node specification, search for a partial | 288 | * If there's a node specification, search for a partial |
@@ -296,7 +296,7 @@ static void *slob_alloc(size_t size, gfp_t gfp, int align, int node) | |||
296 | continue; | 296 | continue; |
297 | 297 | ||
298 | /* Attempt to alloc */ | 298 | /* Attempt to alloc */ |
299 | prev = sp->list.prev; | 299 | prev = sp->lru.prev; |
300 | b = slob_page_alloc(sp, size, align); | 300 | b = slob_page_alloc(sp, size, align); |
301 | if (!b) | 301 | if (!b) |
302 | continue; | 302 | continue; |
@@ -322,7 +322,7 @@ static void *slob_alloc(size_t size, gfp_t gfp, int align, int node) | |||
322 | spin_lock_irqsave(&slob_lock, flags); | 322 | spin_lock_irqsave(&slob_lock, flags); |
323 | sp->units = SLOB_UNITS(PAGE_SIZE); | 323 | sp->units = SLOB_UNITS(PAGE_SIZE); |
324 | sp->freelist = b; | 324 | sp->freelist = b; |
325 | INIT_LIST_HEAD(&sp->list); | 325 | INIT_LIST_HEAD(&sp->lru); |
326 | set_slob(b, SLOB_UNITS(PAGE_SIZE), b + SLOB_UNITS(PAGE_SIZE)); | 326 | set_slob(b, SLOB_UNITS(PAGE_SIZE), b + SLOB_UNITS(PAGE_SIZE)); |
327 | set_slob_page_free(sp, slob_list); | 327 | set_slob_page_free(sp, slob_list); |
328 | b = slob_page_alloc(sp, size, align); | 328 | b = slob_page_alloc(sp, size, align); |