[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20090721175139.GE2239@random.random>
Date: Tue, 21 Jul 2009 19:51:39 +0200
From: Andrea Arcangeli <aarcange@...hat.com>
To: Izik Eidus <ieidus@...hat.com>
Cc: akpm@...ux-foundation.org, hugh.dickins@...cali.co.uk,
chrisw@...hat.com, avi@...hat.com, riel@...hat.com,
linux-kernel@...r.kernel.org, linux-mm@...ck.org,
nickpiggin@...oo.com.au, Wu Fengguang <fengguang.wu@...el.com>
Subject: Re: [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).
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists