linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Christoph Lameter <clameter@sgi.com>
To: Hugh Dickins <hugh@veritas.com>
Cc: akpm@osdl.org, linux-mm@kvack.org
Subject: Re: Page Migration: Make do_swap_page redo the fault
Date: Sat, 8 Apr 2006 14:39:41 -0700 (PDT)	[thread overview]
Message-ID: <Pine.LNX.4.64.0604081430280.17911@schroedinger.engr.sgi.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0604082022170.12196@blonde.wat.veritas.com>

On Sat, 8 Apr 2006, Hugh Dickins wrote:

> On Sat, 8 Apr 2006, Christoph Lameter wrote:
> > 
> > Hmmm..,. There are still two other checks for !PageSwapCache after 
> > obtaining a page lock in shmem_getpage() and in try_to_unuse(). 
> > However, both are getting to the page via the swap maps. So we need to 
> > keep those.
> 
> Sure, those are long standing checks, necessary long before migration
> came on the scene; whereas the check in do_swap_page was recently added
> just for a page migration case, and now turns out to be redundant.

Those two checks were added for migration together with the one we 
are removing now. Sounds like you think they additionally fix some other 
race conditions?

The check we are discussing only becomes unnecessary if the swap ptes are 
replaced by regular ptes. The swap pte would refer to the old page from 
which the SwapCache bit was cleared. This is dependent on remove_from_swap 
always functioning properly which happened pretty late in the 2.6.16 
cycle.

Here is the description from V9 of the direct migration patchset which 
introduced the 3 checks for PageSwapCache():



Check for PageSwapCache after looking up and locking a swap page.

The page migration code may change a swap pte to point to a different page
under lock_page().

If that happens then the vm must retry the lookup operation in the swap
space to find the correct page number. There are a couple of locations
in the VM where a lock_page() is done on a swap page. In these locations
we need to check afterwards if the page was migrated. If the page was 
migrated
then the old page that was looked up before was freed and no longer has 
the
PageSwapCache bit set.

Signed-off-by: Hirokazu Takahashi <taka@valinux.co.jp>
Signed-off-by: Dave Hansen <haveblue@us.ibm.com>
Signed-off-by: Christoph Lameter <clameter@@sgi.com>


--
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/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2006-04-08 21:39 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-04-04  5:33 Christoph Lameter
2006-04-08 12:16 ` Hugh Dickins
2006-04-08 18:25   ` Christoph Lameter
2006-04-08 19:26     ` Hugh Dickins
2006-04-08 21:39       ` Christoph Lameter [this message]
2006-04-09  3:11         ` Hugh Dickins
2006-04-10 18:54           ` Hugh Dickins
2006-04-10 20:19             ` Christoph Lameter
2006-04-11 14:58               ` Lee Schermerhorn
2006-04-11 15:55                 ` Christoph Lameter

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=Pine.LNX.4.64.0604081430280.17911@schroedinger.engr.sgi.com \
    --to=clameter@sgi.com \
    --cc=akpm@osdl.org \
    --cc=hugh@veritas.com \
    --cc=linux-mm@kvack.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox