linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
To: Christoph Lameter <clameter@sgi.com>
Cc: linux-mm@kvack.org, lee.schermerhorn@hp.com,
	lhms-devel@lists.sourceforge.net, taka@valinux.co.jp,
	marcelo.tosatti@cyclades.com
Subject: Re: [RFC 5/6] Swapless V1: Rip out swap migration code
Date: Wed, 5 Apr 2006 12:33:41 +0900	[thread overview]
Message-ID: <20060405123341.52145bf5.kamezawa.hiroyu@jp.fujitsu.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0604041940390.28908@schroedinger.engr.sgi.com>

On Tue, 4 Apr 2006 19:45:49 -0700 (PDT)
Christoph Lameter <clameter@sgi.com> wrote:

> > My concern is refcnt handling of SWP_TYPE_MIGRATION pages, but maybe no problem.
> 
> What are the exact concerns?
> 
When a page is converted into SWP_TYPE_MIGRATION, changed pte entry
implicitly points old page. This introduces the state 'a page is referred 
but no refcnt'. if mmap_sem is held, this is maybe no problem. 
but looks a bit dangerous.


> On Wed, 5 Apr 2006, KAMEZAWA Hiroyuki wrote:
> 
> > I think adding SWP_TYPE_MIGRATION consideration to free_swap_and_cache() is
> > enough against anon_vma vanishing. Because remove_migration_ptes() compares 
> > old pte entry with old page's pfn, a page cannot be remapped into old place
> > when anon_vma has gone. This is my first impression.
> 
> However, the last process containing the page may terminate and free the 
> page, while we migrate. The SWAP_TYPE_MIGRATION pte will be rewoved 
> together with the anonvma if no lock is held on mmap_sem. 
yes. 

> Then remove_migration_ptes() cannot obtain a anon_vma. So it would break 
> without holding mmap_sem. We could fix this if we could somehow know that 
> the last process mapping the page vanished and skip 
> remove_migration_ptes().
> 

Hmm, I'm not sure but how about this way ?
1. don't drop refcnt in try_to_unmap_one() when changing a page to 
   SWP_TYPE_MIGRATION. because it is referred. (rmap should be removed ?)
2. drop refcnt of the old page and inc refcnt of the new page in 
   remove_migration_ptes()

like this.
==
in remove_migration_pte
+	ptep = page_check_address(old, mm, addr, &ptl);
+	if (!ptep)
+		return;
+
+	get_page(new);
+	set_pte_at(mm, addr, ptep, pte_mkold(mk_pte(new, vma->vm_page_prot)));
+	page_add_anon_rmap(new, vma, addr);

+ put_page(old); << add this

We can check old page's refcnt in remove_migration_ptes().
if page_count(oldpage)==1, this page's anon_vma is removed.
So we don't have to modify ptes, all of them are zapped..
(In this method, page's refcnt should be dropped when swp_entry
 for SWP_TYPE_MIGRATION is freed.)

In page unmapping, each page's refcnt is dropped before zapping anon_vma.
So, I think this can work.

> 
> > Note: unuse_vma() doesn't check what pte entry contains.
> 
> unuse_vma() relies on the mapping via swap space that will no longer exist 
> with the new code.
> 
Yes. I know. just wrote about old code. sorry.

-Kame

--
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-05  3:33 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-04-04  6:57 [RFC 0/6] Swapless Page Migration V1: Overview Christoph Lameter
2006-04-04  6:57 ` [RFC 1/6] Swapless V1: try_to_unmap() - Rename ignrefs to "migration" Christoph Lameter
2006-04-04  6:57 ` [RFC 2/6] Swapless V1: Add SWP_TYPE_MIGRATION Christoph Lameter
2006-04-04 11:04   ` KAMEZAWA Hiroyuki
2006-04-04  6:57 ` [RFC 3/6] Swapless V1: try_to_unmap() - Create migration entries Christoph Lameter
2006-04-04  6:58 ` [RFC 4/6] Swapless V1: remove migration ptes Christoph Lameter
2006-04-04  6:58 ` [RFC 5/6] Swapless V1: Rip out swap migration code Christoph Lameter
2006-04-04 10:37   ` KAMEZAWA Hiroyuki
2006-04-04 15:06     ` Christoph Lameter
2006-04-05  1:06       ` KAMEZAWA Hiroyuki
2006-04-05  2:45         ` Christoph Lameter
2006-04-05  3:33           ` KAMEZAWA Hiroyuki [this message]
2006-04-05  3:47             ` Christoph Lameter
2006-04-05  4:07               ` KAMEZAWA Hiroyuki
2006-04-04  6:58 ` [RFC 6/6] Swapless V1: Revise main migration logic Christoph Lameter
2006-04-04 10:58   ` KAMEZAWA Hiroyuki
2006-04-04 14:24     ` Christoph Lameter
2006-04-05 14:46 ` [Lhms-devel] [RFC 0/6] Swapless Page Migration V1: Overview Lee Schermerhorn
2006-04-05 16:28   ` Christoph Lameter
2006-04-05 16:58     ` Lee Schermerhorn
2006-04-05 17:43       ` Christoph Lameter
2006-04-05 18:52         ` Lee Schermerhorn
2006-04-05 18:17       ` Some ideas on lazy migration with swapless migration 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=20060405123341.52145bf5.kamezawa.hiroyu@jp.fujitsu.com \
    --to=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=clameter@sgi.com \
    --cc=lee.schermerhorn@hp.com \
    --cc=lhms-devel@lists.sourceforge.net \
    --cc=linux-mm@kvack.org \
    --cc=marcelo.tosatti@cyclades.com \
    --cc=taka@valinux.co.jp \
    /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