All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrea Arcangeli <aarcange@redhat.com>
To: "Figo.zhang" <figo1802@gmail.com>
Cc: lkml <linux-kernel@vger.kernel.org>,
	mel@csn.ul.ie, "linux-mm@kvack.org" <linux-mm@kvack.org>,
	kamezawa.hiroyu@jp.fujisu.com, minchan.kim@gmail.com,
	Andrew Morton <akpm@osdl.org>
Subject: Re: [PATCH]mm/compation.c: checking page in lru twice
Date: Fri, 6 May 2011 20:21:51 +0200	[thread overview]
Message-ID: <20110506182151.GG6330@random.random> (raw)
In-Reply-To: <1304681575.15473.4.camel@figo-desktop>

On Fri, May 06, 2011 at 07:32:46PM +0800, Figo.zhang wrote:
> 
> in isolate_migratepages() have check page in LRU twice, the next one
> at _isolate_lru_page(). 

hugetlbfs or any other compound page won't have PageLRU set and they
may go away from under us leading to compound_order not being reliable
if we remove the PageLRU check before compound_order. So we need to
verify the page is in LRU before running compound_order safely. And if
we hold the lru_lock, the page won't be isolated under us, and we know
it's not going to get splitted either.

We might use compound_trans_order but that's only reliable if run on
the head page so it's not so reliable, and so far it's only used by
memory-failure to "diminish" the risk of races in reading the compound
order, but it's not the best having to use compound_trans_order (and
memory-failure remains unsafe w.r.t to hugetlbfs being released during
hwpoisoning, so compound_trans_order might have to be improved for
it).

WARNING: multiple messages have this Message-ID (diff)
From: Andrea Arcangeli <aarcange@redhat.com>
To: "Figo.zhang" <figo1802@gmail.com>
Cc: lkml <linux-kernel@vger.kernel.org>,
	mel@csn.ul.ie, "linux-mm@kvack.org" <linux-mm@kvack.org>,
	kamezawa.hiroyu@jp.fujisu.com, minchan.kim@gmail.com,
	Andrew Morton <akpm@osdl.org>
Subject: Re: [PATCH]mm/compation.c: checking page in lru twice
Date: Fri, 6 May 2011 20:21:51 +0200	[thread overview]
Message-ID: <20110506182151.GG6330@random.random> (raw)
In-Reply-To: <1304681575.15473.4.camel@figo-desktop>

On Fri, May 06, 2011 at 07:32:46PM +0800, Figo.zhang wrote:
> 
> in isolate_migratepages() have check page in LRU twice, the next one
> at _isolate_lru_page(). 

hugetlbfs or any other compound page won't have PageLRU set and they
may go away from under us leading to compound_order not being reliable
if we remove the PageLRU check before compound_order. So we need to
verify the page is in LRU before running compound_order safely. And if
we hold the lru_lock, the page won't be isolated under us, and we know
it's not going to get splitted either.

We might use compound_trans_order but that's only reliable if run on
the head page so it's not so reliable, and so far it's only used by
memory-failure to "diminish" the risk of races in reading the compound
order, but it's not the best having to use compound_trans_order (and
memory-failure remains unsafe w.r.t to hugetlbfs being released during
hwpoisoning, so compound_trans_order might have to be improved for
it).

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  parent reply	other threads:[~2011-05-06 18:22 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-06 11:32 [PATCH]mm/compation.c: checking page in lru twice Figo.zhang
2011-05-06 11:32 ` Figo.zhang
2011-05-06 13:09 ` Mel Gorman
2011-05-06 13:09   ` Mel Gorman
2011-05-06 18:26   ` Andrea Arcangeli
2011-05-06 18:26     ` Andrea Arcangeli
2011-05-06 18:21 ` Andrea Arcangeli [this message]
2011-05-06 18:21   ` Andrea Arcangeli

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20110506182151.GG6330@random.random \
    --to=aarcange@redhat.com \
    --cc=akpm@osdl.org \
    --cc=figo1802@gmail.com \
    --cc=kamezawa.hiroyu@jp.fujisu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mel@csn.ul.ie \
    --cc=minchan.kim@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.