lkml.org 
[lkml]   [2012]   [Feb]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] mm: hugetlb: bail out unmapping after serving reference page
    On Wed, 22 Feb 2012 20:35:34 +0800
    Hillf Danton <dhillf@gmail.com> wrote:

    > When unmapping given VM range, we could bail out if a reference page is
    > supplied and it is unmapped, which is a minor optimization.
    >
    > Signed-off-by: Hillf Danton <dhillf@gmail.com>
    > ---
    >
    > --- a/mm/hugetlb.c Wed Feb 22 19:34:12 2012
    > +++ b/mm/hugetlb.c Wed Feb 22 19:50:26 2012
    > @@ -2280,6 +2280,9 @@ void __unmap_hugepage_range(struct vm_ar
    > if (pte_dirty(pte))
    > set_page_dirty(page);
    > list_add(&page->lru, &page_list);
    > +
    > + if (page == ref_page)
    > + break;
    > }
    > spin_unlock(&mm->page_table_lock);
    > flush_tlb_range(vma, start, end);

    Perhaps add a little comment to this explaining what's going on?


    It would be sufficient to do

    if (ref_page)
    break;

    This is more efficient, and doesn't make people worry about whether
    this value of `page' is the same as the one which
    pte_page(huge_ptep_get()) earlier returned.

    Why do we evaluate `page' twice inside that loop anyway? And why do we
    check for huge_pte_none() twice? It looks all messed up.





    \
     
     \ /
      Last update: 2012-02-22 22:09    [W:0.021 / U:29.520 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site