Re: [patch 2/6] mm: micro-optimise rmap

Alexander Nyberg
2005-07-27T11:30:25Z

[Nick, your mail bounced while sending this privately so reply-all this
time]

> Index: linux-2.6/mm/rmap.c
> ===================================================================
> --- linux-2.6.orig/mm/rmap.c
> +++ linux-2.6/mm/rmap.c
> @@ -442,22 +442,23 @@ int page_referenced(struct page *page, i
> void page_add_anon_rmap(struct page *page,
> struct vm_area_struct *vma, unsigned long address)
> {
> - struct anon_vma *anon_vma = vma->anon_vma;
> - pgoff_t index;
> -
> BUG_ON(PageReserved(page));
> - BUG_ON(!anon_vma);
>
> inc_mm_counter(vma->vm_mm, anon_rss);
>
> - anon_vma = (void *) anon_vma + PAGE_MAPPING_ANON;
> - index = (address - vma->vm_start) >> PAGE_SHIFT;
> - index += vma->vm_pgoff;
> - index >>= PAGE_CACHE_SHIFT - PAGE_SHIFT;
> -
> if (atomic_inc_and_test(&page->_mapcount)) {
> - page->index = index;
> + struct anon_vma *anon_vma = vma->anon_vma;
> + pgoff_t index;
> +
> + BUG_ON(!anon_vma);
> + anon_vma = (void *) anon_vma + PAGE_MAPPING_ANON;
> page->mapping = (struct address_space *) anon_vma;
> +
> + index = (address - vma->vm_start) >> PAGE_SHIFT;
> + index += vma->vm_pgoff;
> + index >>= PAGE_CACHE_SHIFT - PAGE_SHIFT;
> + page->index = index;
> +

linear_page_index() here too?