lkml.org 
[lkml]   [2006]   [Mar]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 04/34] mm: page-replace-use_once.patch
    Date

    From: Peter Zijlstra <a.p.zijlstra@chello.nl>

    Allow for a use-once hint.

    API:

    give a hint to the page replace algorithm:

    void page_replace_hint_use_once(struct page *);

    Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Signed-off-by: Marcelo Tosatti <marcelo.tosatti@cyclades.com>

    ---

    include/linux/mm_page_replace.h | 1 +
    include/linux/mm_use_once_policy.h | 4 ++++
    mm/filemap.c | 13 ++++++++++++-
    3 files changed, 17 insertions(+), 1 deletion(-)

    Index: linux-2.6-git/mm/filemap.c
    ===================================================================
    --- linux-2.6-git.orig/mm/filemap.c
    +++ linux-2.6-git/mm/filemap.c
    @@ -403,7 +403,18 @@ int add_to_page_cache(struct page *page,
    error = radix_tree_insert(&mapping->page_tree, offset, page);
    if (!error) {
    page_cache_get(page);
    - SetPageLocked(page);
    + /*
    + * shmem_getpage()
    + * lookup_swap_cache()
    + * TestSetPageLocked()
    + * move_from_swap_cache()
    + * add_to_page_cache()
    + *
    + * That path calls us with a LRU page instead of a new
    + * page. Don't set the hint for LRU pages.
    + */
    + if (!TestSetPageLocked(page))
    + page_replace_hint_use_once(page);
    page->mapping = mapping;
    page->index = offset;
    mapping->nrpages++;
    Index: linux-2.6-git/include/linux/mm_page_replace.h
    ===================================================================
    --- linux-2.6-git.orig/include/linux/mm_page_replace.h
    +++ linux-2.6-git/include/linux/mm_page_replace.h
    @@ -8,6 +8,7 @@
    #include <linux/pagevec.h>

    /* void page_replace_hint_active(struct page *); */
    +/* void page_replace_hint_use_once(struct page *); */
    extern void fastcall page_replace_add(struct page *);
    /* void page_replace_add_drain(void); */
    extern void __page_replace_add_drain(unsigned int);
    Index: linux-2.6-git/include/linux/mm_use_once_policy.h
    ===================================================================
    --- linux-2.6-git.orig/include/linux/mm_use_once_policy.h
    +++ linux-2.6-git/include/linux/mm_use_once_policy.h
    @@ -8,5 +8,9 @@ static inline void page_replace_hint_act
    SetPageActive(page);
    }

    +static inline void page_replace_hint_use_once(struct page *page)
    +{
    +}
    +
    #endif /* __KERNEL__ */
    #endif /* _LINUX_MM_USEONCE_POLICY_H */
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2006-03-22 23:36    [W:0.035 / U:151.824 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site