Messages in this thread Patch in this message | | | Date | Thu, 23 Jun 2005 17:33:33 +1000 | From | Nick Piggin <> | Subject | Re: [patch][rfc] 2/5: micro optimisation for mm/rmap.c |
| |
William Lee Irwin III wrote: > On Thu, Jun 23, 2005 at 05:06:35PM +1000, Nick Piggin wrote: > >>+ index = (address - vma->vm_start) >> PAGE_SHIFT; >>+ index += vma->vm_pgoff; >>+ index >>= PAGE_CACHE_SHIFT - PAGE_SHIFT; >>+ page->index = index; > > > linear_page_index() >
Ah indeed it is, thanks. I'll queue this up as patch 2.5, then?
Use linear_page_index in mm/rmap.c, as noted by Bill Irwin.
Index: linux-2.6/mm/rmap.c =================================================================== --- linux-2.6.orig/mm/rmap.c +++ linux-2.6/mm/rmap.c @@ -448,16 +448,11 @@ void page_add_anon_rmap(struct page *pag if (atomic_inc_and_test(&page->_mapcount)) { 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; + page->index = linear_page_index(vma, address); inc_page_state(nr_mapped); } | |