lkml.org 
[lkml]   [2009]   [Dec]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[RFC][PATCH v2 3/8] VM_LOCKED check don't need pte lock
    Date
    Currently, page_referenced_one() check VM_LOCKED after taking ptelock.
    But it's unnecessary. We can check VM_LOCKED before to take lock.

    This patch does it.

    Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
    Reviewed-by: Rik van Riel <riel@redhat.com>
    ---
    mm/rmap.c | 13 ++++++-------
    1 files changed, 6 insertions(+), 7 deletions(-)

    diff --git a/mm/rmap.c b/mm/rmap.c
    index 1b50425..fb0983a 100644
    --- a/mm/rmap.c
    +++ b/mm/rmap.c
    @@ -383,21 +383,21 @@ int page_referenced_one(struct page *page, struct vm_area_struct *vma,
    spinlock_t *ptl;
    int referenced = 0;

    - pte = page_check_address(page, mm, address, &ptl, 0);
    - if (!pte)
    - goto out;
    -
    /*
    * Don't want to elevate referenced for mlocked page that gets this far,
    * in order that it progresses to try_to_unmap and is moved to the
    * unevictable list.
    */
    if (vma->vm_flags & VM_LOCKED) {
    - *mapcount = 1; /* break early from loop */
    + *mapcount = 0; /* break early from loop */
    *vm_flags |= VM_LOCKED;
    - goto out_unmap;
    + goto out;
    }

    + pte = page_check_address(page, mm, address, &ptl, 0);
    + if (!pte)
    + goto out;
    +
    if (ptep_clear_flush_young_notify(vma, address, pte)) {
    /*
    * Don't treat a reference through a sequentially read
    @@ -416,7 +416,6 @@ int page_referenced_one(struct page *page, struct vm_area_struct *vma,
    rwsem_is_locked(&mm->mmap_sem))
    referenced++;

    -out_unmap:
    (*mapcount)--;
    pte_unmap_unlock(pte, ptl);

    --
    1.6.5.2




    \
     
     \ /
      Last update: 2009-12-10 08:33    [W:0.049 / U:59.476 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site