| From 2a2a098d4d647867633a17917b96f0feacdcdd8d Mon Sep 17 00:00:00 2001 |
| From: Andrea Arcangeli <aarcange@redhat.com> |
| Date: Thu, 16 Jun 2011 12:56:19 -0700 |
| Subject: [PATCH] migrate: don't account swapcache as shmem |
| |
| commit 99a15e21d96f6857dafab1e5167e5e8183215c9c upstream. |
| |
| swapcache will reach the below code path in migrate_page_move_mapping, |
| and swapcache is accounted as NR_FILE_PAGES but it's not accounted as |
| NR_SHMEM. |
| |
| Hugh pointed out we must use PageSwapCache instead of comparing |
| mapping to &swapper_space, to avoid build failure with CONFIG_SWAP=n. |
| |
| Signed-off-by: Andrea Arcangeli <aarcange@redhat.com> |
| Acked-by: Hugh Dickins <hughd@google.com> |
| Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| --- |
| mm/migrate.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/mm/migrate.c b/mm/migrate.c |
| index d3f3f7f..c8e7195 100644 |
| --- a/mm/migrate.c |
| +++ b/mm/migrate.c |
| @@ -262,7 +262,7 @@ static int migrate_page_move_mapping(struct address_space *mapping, |
| */ |
| __dec_zone_page_state(page, NR_FILE_PAGES); |
| __inc_zone_page_state(newpage, NR_FILE_PAGES); |
| - if (PageSwapBacked(page)) { |
| + if (!PageSwapCache(page) && PageSwapBacked(page)) { |
| __dec_zone_page_state(page, NR_SHMEM); |
| __inc_zone_page_state(newpage, NR_SHMEM); |
| } |
| -- |
| 1.7.9.6 |
| |