diff options
| author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2006-03-23 23:44:19 -0500 |
|---|---|---|
| committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2006-03-23 23:44:19 -0500 |
| commit | 1ebbe2b20091d306453a5cf480a87e6cd28ae76f (patch) | |
| tree | f5cd7a0fa69b8b1938cb5a0faed2e7b0628072a5 /mm/rmap.c | |
| parent | ac58c9059da8886b5e8cde012a80266b18ca146e (diff) | |
| parent | 674a396c6d2ba0341ebdd7c1c9950f32f018e2dd (diff) | |
Merge branch 'linus'
Diffstat (limited to 'mm/rmap.c')
| -rw-r--r-- | mm/rmap.c | 14 |
1 files changed, 7 insertions, 7 deletions
| @@ -56,13 +56,11 @@ | |||
| 56 | 56 | ||
| 57 | #include <asm/tlbflush.h> | 57 | #include <asm/tlbflush.h> |
| 58 | 58 | ||
| 59 | //#define RMAP_DEBUG /* can be enabled only for debugging */ | 59 | struct kmem_cache *anon_vma_cachep; |
| 60 | |||
| 61 | kmem_cache_t *anon_vma_cachep; | ||
| 62 | 60 | ||
| 63 | static inline void validate_anon_vma(struct vm_area_struct *find_vma) | 61 | static inline void validate_anon_vma(struct vm_area_struct *find_vma) |
| 64 | { | 62 | { |
| 65 | #ifdef RMAP_DEBUG | 63 | #ifdef CONFIG_DEBUG_VM |
| 66 | struct anon_vma *anon_vma = find_vma->anon_vma; | 64 | struct anon_vma *anon_vma = find_vma->anon_vma; |
| 67 | struct vm_area_struct *vma; | 65 | struct vm_area_struct *vma; |
| 68 | unsigned int mapcount = 0; | 66 | unsigned int mapcount = 0; |
| @@ -166,7 +164,8 @@ void anon_vma_unlink(struct vm_area_struct *vma) | |||
| 166 | anon_vma_free(anon_vma); | 164 | anon_vma_free(anon_vma); |
| 167 | } | 165 | } |
| 168 | 166 | ||
| 169 | static void anon_vma_ctor(void *data, kmem_cache_t *cachep, unsigned long flags) | 167 | static void anon_vma_ctor(void *data, struct kmem_cache *cachep, |
| 168 | unsigned long flags) | ||
| 170 | { | 169 | { |
| 171 | if ((flags & (SLAB_CTOR_VERIFY|SLAB_CTOR_CONSTRUCTOR)) == | 170 | if ((flags & (SLAB_CTOR_VERIFY|SLAB_CTOR_CONSTRUCTOR)) == |
| 172 | SLAB_CTOR_CONSTRUCTOR) { | 171 | SLAB_CTOR_CONSTRUCTOR) { |
| @@ -550,13 +549,14 @@ void page_add_file_rmap(struct page *page) | |||
| 550 | void page_remove_rmap(struct page *page) | 549 | void page_remove_rmap(struct page *page) |
| 551 | { | 550 | { |
| 552 | if (atomic_add_negative(-1, &page->_mapcount)) { | 551 | if (atomic_add_negative(-1, &page->_mapcount)) { |
| 553 | if (page_mapcount(page) < 0) { | 552 | #ifdef CONFIG_DEBUG_VM |
| 553 | if (unlikely(page_mapcount(page) < 0)) { | ||
| 554 | printk (KERN_EMERG "Eeek! page_mapcount(page) went negative! (%d)\n", page_mapcount(page)); | 554 | printk (KERN_EMERG "Eeek! page_mapcount(page) went negative! (%d)\n", page_mapcount(page)); |
| 555 | printk (KERN_EMERG " page->flags = %lx\n", page->flags); | 555 | printk (KERN_EMERG " page->flags = %lx\n", page->flags); |
| 556 | printk (KERN_EMERG " page->count = %x\n", page_count(page)); | 556 | printk (KERN_EMERG " page->count = %x\n", page_count(page)); |
| 557 | printk (KERN_EMERG " page->mapping = %p\n", page->mapping); | 557 | printk (KERN_EMERG " page->mapping = %p\n", page->mapping); |
| 558 | } | 558 | } |
| 559 | 559 | #endif | |
| 560 | BUG_ON(page_mapcount(page) < 0); | 560 | BUG_ON(page_mapcount(page) < 0); |
| 561 | /* | 561 | /* |
| 562 | * It would be tidy to reset the PageAnon mapping here, | 562 | * It would be tidy to reset the PageAnon mapping here, |
