From 699d08dbc9446d76ae42794d1af83f5e01c649f0 Mon Sep 17 00:00:00 2001 From: Nick Piggin Date: Wed, 30 Apr 2008 00:55:16 -0700 Subject: [PATCH] --- yaml --- r: 95305 b: refs/heads/master c: 3a902c5f6851cd0b64c33efaa3bd57aa27a82efb h: refs/heads/master i: 95303: 700f98e5863b565e4585e287764be27dd9fc1f05 v: v3 --- [refs] | 2 +- trunk/mm/migrate.c | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index b6aad4b88894..4831906c9f92 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 969a19f1c405a8e9d15ceb9e75e3f4a321aaf56f +refs/heads/master: 3a902c5f6851cd0b64c33efaa3bd57aa27a82efb diff --git a/trunk/mm/migrate.c b/trunk/mm/migrate.c index 4e0eccca5e26..449d77d409f5 100644 --- a/trunk/mm/migrate.c +++ b/trunk/mm/migrate.c @@ -383,7 +383,14 @@ static void migrate_page_copy(struct page *newpage, struct page *page) if (PageDirty(page)) { clear_page_dirty_for_io(page); - set_page_dirty(newpage); + /* + * Want to mark the page and the radix tree as dirty, and + * redo the accounting that clear_page_dirty_for_io undid, + * but we can't use set_page_dirty because that function + * is actually a signal that all of the page has become dirty. + * Wheras only part of our page may be dirty. + */ + __set_page_dirty_nobuffers(newpage); } #ifdef CONFIG_SWAP