diff options
author | Nicholas Piggin <npiggin@gmail.com> | 2016-12-24 22:00:29 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-12-25 14:54:48 -0500 |
commit | 6326fec1122cde256bd2a8c63f2606e08e44ce1d (patch) | |
tree | 5e5bc0e4c71903bbdc6477f4868d35f970743e21 /mm/migrate.c | |
parent | 7c0f6ba682b9c7632072ffbedf8d328c8f3c42ba (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.c | 14 |
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 */ |