summaryrefslogtreecommitdiffstats
path: root/mm/migrate.c
diff options
context:
space:
mode:
authorNicholas Piggin <npiggin@gmail.com>2016-12-24 22:00:29 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2016-12-25 14:54:48 -0500
commit6326fec1122cde256bd2a8c63f2606e08e44ce1d (patch)
tree5e5bc0e4c71903bbdc6477f4868d35f970743e21 /mm/migrate.c
parent7c0f6ba682b9c7632072ffbedf8d328c8f3c42ba (diff)
mm: Use owner_priv bit for PageSwapCache, valid when PageSwapBacked
A page is not added to the swap cache without being swap backed, so PageSwapBacked mappings can use PG_owner_priv_1 for PageSwapCache. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Acked-by: Hugh Dickins <hughd@google.com> Cc: Dave Hansen <dave.hansen@linux.intel.com> Cc: Bob Peterson <rpeterso@redhat.com> Cc: Steven Whitehouse <swhiteho@redhat.com> Cc: Andrew Lutomirski <luto@kernel.org> Cc: Andreas Gruenbacher <agruenba@redhat.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Mel Gorman <mgorman@techsingularity.net> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/migrate.c')
-rw-r--r--mm/migrate.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/mm/migrate.c b/mm/migrate.c
index 0ed24b1fa77b..87f4d0f81819 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -466,13 +466,15 @@ int migrate_page_move_mapping(struct address_space *mapping,
466 */ 466 */
467 newpage->index = page->index; 467 newpage->index = page->index;
468 newpage->mapping = page->mapping; 468 newpage->mapping = page->mapping;
469 if (PageSwapBacked(page))
470 __SetPageSwapBacked(newpage);
471
472 get_page(newpage); /* add cache reference */ 469 get_page(newpage); /* add cache reference */
473 if (PageSwapCache(page)) { 470 if (PageSwapBacked(page)) {
474 SetPageSwapCache(newpage); 471 __SetPageSwapBacked(newpage);
475 set_page_private(newpage, page_private(page)); 472 if (PageSwapCache(page)) {
473 SetPageSwapCache(newpage);
474 set_page_private(newpage, page_private(page));
475 }
476 } else {
477 VM_BUG_ON_PAGE(PageSwapCache(page), page);
476 } 478 }
477 479
478 /* Move dirty while page refs frozen and newpage not yet exposed */ 480 /* Move dirty while page refs frozen and newpage not yet exposed */