lkml.org 
[lkml]   [2009]   [Jul]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 06/10] ksm: identify PageKsm pages
    On Fri, Jul 17, 2009 at 08:30:46PM +0300, Izik Eidus wrote:
    > +static inline int PageKsm(struct page *page)
    > +{
    > + return ((unsigned long)page->mapping == PAGE_MAPPING_ANON);
    > +}

    I'm unconvinced it's sane to have PageAnon return 1 on Ksm pages.

    The above will also have short lifetime so not sure it's worth it,
    if we want to swap we'll have to move to something that to:

    PageExternal()
    {
    return (unsigned long)page->mapping & PAGE_MAPPING_EXTERNAL != 0;
    }

    > +static inline void page_add_ksm_rmap(struct page *page)
    > +{
    > + if (atomic_inc_and_test(&page->_mapcount)) {
    > + page->mapping = (void *) PAGE_MAPPING_ANON;
    > + __inc_zone_page_state(page, NR_ANON_PAGES);
    > + }
    > +}

    Is it correct to account them as anon pages?

    > - if (PageAnon(old_page)) {
    > + if (PageAnon(old_page) && !PageKsm(old_page)) {
    > if (!trylock_page(old_page)) {
    > page_cache_get(old_page);
    > pte_unmap_unlock(page_table, ptl);

    What exactly does it buy to have PageAnon return 1 on ksm pages,
    besides requiring the above additional check (that if we stick to the
    above code, I would find safer to move inside reuse_swap_page).


    \
     
     \ /
      Last update: 2009-07-21 19:55    [W:0.028 / U:63.836 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site