From: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
To: Christoph Lameter <clameter@sgi.com>
Cc: akpm@osdl.org, linux-mm@kvack.org,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
Hugh Dickins <hugh@veritas.com>
Subject: Re: [PATCH 4/7] PM cleanup: Drop nr_refs in remove_references()
Date: Mon, 01 May 2006 12:09:49 -0400 [thread overview]
Message-ID: <1146499789.5216.20.camel@localhost.localdomain> (raw)
In-Reply-To: <20060429032306.4999.92029.sendpatchset@schroedinger.engr.sgi.com>
On Fri, 2006-04-28 at 20:23 -0700, Christoph Lameter wrote:
> page migration: Drop nr_refs parameter from migrate_page_remove_references()
>
> The nr_refs parameter is not really useful since the number of remaining
> references is always
>
> 1 for anonymous pages without a mapping
> 2 for pages with a mapping
> 3 for pages with a mapping and PagePrivate set.
>
> Remove the early check for the number of references since we are
> checking page_mapcount() earlier. Ultimately only the refcount
> matters after the tree_lock has been obtained.
True for direct migration. I'll still need to know whether we're in the
fault path for migrate-on-fault. I don't think I can count on using the
mapcount as you now already remove the mapping before calling migrate_page(),
even for direct migration...
>
> Signed-off-by: Christoph Lameter <clameter@sgi.coim>
>
> Index: linux-2.6.17-rc3/mm/migrate.c
> ===================================================================
> --- linux-2.6.17-rc3.orig/mm/migrate.c 2006-04-28 17:26:13.866044400 -0700
> +++ linux-2.6.17-rc3/mm/migrate.c 2006-04-28 17:31:10.325193799 -0700
> @@ -168,19 +168,19 @@
> /*
> * Remove references for a page and establish the new page with the correct
> * basic settings to be able to stop accesses to the page.
> + *
> + * The number of remaining references must be:
> + * 1 for anonymous pages without a mapping
> + * 2 for pages with a mapping
> + * 3 for pages with a mapping and PagePrivate set.
> */
> static int migrate_page_remove_references(struct page *newpage,
> - struct page *page, int nr_refs)
> + struct page *page)
> {
> struct address_space *mapping = page_mapping(page);
> struct page **radix_pointer;
>
> - /*
> - * Avoid doing any of the following work if the page count
> - * indicates that the page is in use or truncate has removed
> - * the page.
> - */
> - if (!mapping || page_mapcount(page) + nr_refs != page_count(page))
> + if (!mapping)
> return -EAGAIN;
>
> /*
> @@ -218,7 +218,8 @@
> &mapping->page_tree,
> page_index(page));
>
> - if (!page_mapping(page) || page_count(page) != nr_refs ||
> + if (!page_mapping(page) ||
^^^^^^^^^^^^^^^^^
As part of patch 6/7, can you change this to just 'mapping'--i.e., the
added address_space argument?
> + page_count(page) != 2 + !!PagePrivate(page) ||
> *radix_pointer != page) {
> write_unlock_irq(&mapping->tree_lock);
> return -EAGAIN;
> @@ -309,7 +310,7 @@
>
> BUG_ON(PageWriteback(page)); /* Writeback must be complete */
>
> - rc = migrate_page_remove_references(newpage, page, 2);
> + rc = migrate_page_remove_references(newpage, page);
>
> if (rc)
> return rc;
> @@ -348,7 +349,7 @@
>
> head = page_buffers(page);
>
> - rc = migrate_page_remove_references(newpage, page, 3);
> + rc = migrate_page_remove_references(newpage, page);
>
> if (rc)
> return rc;
--
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-05-01 16:09 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-04-29 3:22 Page Migration patchsets overview Christoph Lameter
2006-04-29 3:22 ` [PATCH 1/7] PM cleanup: Rename "ignrefs" to "migration" Christoph Lameter
2006-04-29 3:22 ` [PATCH 2/7] PM cleanup: Group functions Christoph Lameter
2006-04-29 3:23 ` [PATCH 3/7] PM cleanup: Remove useless definitions Christoph Lameter
2006-04-29 3:23 ` [PATCH 4/7] PM cleanup: Drop nr_refs in remove_references() Christoph Lameter
2006-05-01 16:09 ` Lee Schermerhorn [this message]
2006-05-01 16:15 ` Christoph Lameter
2006-05-01 17:51 ` Lee Schermerhorn
2006-05-01 18:04 ` Christoph Lameter
2006-05-01 18:34 ` Lee Schermerhorn
2006-05-01 18:53 ` Christoph Lameter
2006-04-29 3:23 ` [PATCH 5/7] PM cleanup: Extract try_to_unmap from migration functions Christoph Lameter
2006-04-29 3:23 ` [PATCH 6/7] PM cleanup: Pass "mapping" to " Christoph Lameter
2006-04-29 3:23 ` [PATCH 7/7] PM cleanup: Move fallback handling into special function Christoph Lameter
2006-04-29 3:23 ` [PATCH 1/3] Swapless PM: add R/W migration entries Christoph Lameter
2006-04-29 3:23 ` [PATCH 2/3] Swapless PM: Rip out swap based logic Christoph Lameter
2006-04-29 3:23 ` [PATCH 3/3] Swapless PM: Modify core logic Christoph Lameter
2006-04-29 3:23 ` {PATCH 1/2} More PM: do not inc/dec rss counters Christoph Lameter
2006-04-29 3:23 ` {PATCH 2/2} More PM: use migration entries for file pages 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=1146499789.5216.20.camel@localhost.localdomain \
--to=lee.schermerhorn@hp.com \
--cc=akpm@osdl.org \
--cc=clameter@sgi.com \
--cc=hugh@veritas.com \
--cc=kamezawa.hiroyu@jp.fujitsu.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