Commit 50a15981a1fac7e019ff7c3cba87531fb580f065

Authored by Martin Schwidefsky
1 parent f433c4aec9

[S390] reference bit testing for unmapped pages

On x86 a page without a mapper is by definition not referenced / old.
The s390 architecture keeps the reference bit in the storage key and
the current code will check the storage key for page without a mapper.
This leads to an interesting effect: the first time an s390 system
needs to write pages to swap it only finds referenced pages. This
causes a lot of pages to get added and written to the swap device.
To avoid this behaviour change page_referenced to query the storage
key only if there is a mapper of the page.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>

Showing 1 changed file with 3 additions and 3 deletions Side-by-side Diff

... ... @@ -869,11 +869,11 @@
869 869 vm_flags);
870 870 if (we_locked)
871 871 unlock_page(page);
  872 +
  873 + if (page_test_and_clear_young(page_to_pfn(page)))
  874 + referenced++;
872 875 }
873 876 out:
874   - if (page_test_and_clear_young(page_to_pfn(page)))
875   - referenced++;
876   -
877 877 return referenced;
878 878 }
879 879