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