From: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
To: Christoph Lameter <clameter@sgi.com>
Cc: Hugh Dickins <hugh@veritas.com>, akpm@osdl.org, linux-mm@kvack.org
Subject: Re: Page Migration: Make do_swap_page redo the fault
Date: Tue, 11 Apr 2006 10:58:21 -0400 [thread overview]
Message-ID: <1144767501.5160.12.camel@localhost.localdomain> (raw)
In-Reply-To: <Pine.LNX.4.64.0604101303350.24029@schroedinger.engr.sgi.com>
On Mon, 2006-04-10 at 13:19 -0700, Christoph Lameter wrote:
> On Mon, 10 Apr 2006, Hugh Dickins wrote:
>
> > I have now checked through, and I'm relieved to conclude that neither
> > of those other two PageSwapCache rechecks are necessary; and the rules
> > are much as before.
>
> Note that the removal of the check in do_swap_page does only work
> since the remove_from_swap() changes the pte. Without that pte change
> do_swap_page could retrieve the old page via the swap map. It would wait
> until page migration finished its migration and then find that the page is
> not in the pagecache anymore. Note that Lee Schermerhorn's lazy page
> migration may rely on disabling remove_from_swap() for his migration
> scheme. Lee? Looks like we are putting new barriers in front of you?
Yes. I noticed. If the current code doesn't depend on these check, I
guess you should probably rip 'em out and I'll carry any necessary check
in my series.
>
> > In the try_to_unuse case, it's quite possible that !PageSwapCache there,
> > because of a racing delete_from_swap_cache; but that case is correctly
> > handled in the code that follows.
>
> Ah. I see a later check
>
> if ((*swap_map > 1) && PageDirty(page) && PageSwapCache(page)) {
>
> > So I believe we can safely remove these other two
> > "Page migration has occured" blocks - can't we?
>
> Hmmm... The increased count is also an argument against having to check
> for the race in do_swap_page(). So maybe Lee's lazy migration patchset
> should also be fine without these checks and there is actually no need
> to rely on the ptes not being the same.
May still be some work in do_swap_page(). The unmap has already
occurred. In the general case [support for migrating pages w/ > 1 pte
mapping], two or more tasks could race faulting the cache pte. IMO one
should perform the migration [replacing old page in cache with new
page], others should block and then use the new page to resolve their
own faults. I think this means a check and then at least another cache
lookup. Maybe redo the fault, as Christoph has said.
Don't know about direct migration.
Lee
--
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>
next prev parent reply other threads:[~2006-04-11 14:58 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-04-04 5:33 Page Migration: Make do_swap_page redo the fault 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
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 [this message]
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=1144767501.5160.12.camel@localhost.localdomain \
--to=lee.schermerhorn@hp.com \
--cc=akpm@osdl.org \
--cc=clameter@sgi.com \
--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 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.