mm:swap: do not check readahead flag with THP anon
Subsystems (2)
PATCH 1/1 mm:swap: do not check readahead flag with THP anon
Huang reported PG_readahead flag marked PF_NO_COMPOUND so that we cannot use the flag for THP page. So, we need to check first whether page is THP or not before using TestClearPageReadahead in lookup_swap_cache.
This patch fixes it.
Furthermore, swap_[cluster|vma]_readahead cannot mark PG_readahead for newly allocated page because the allocated page is always a normal page, not THP at this moment. So let's clean it up, too.
--- mm/swap_state.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-)
mm/swap_state.c +8 -5
@@ -348,12 +348,17 @@ struct page *lookup_swap_cache(swp_entry_t entry, struct vm_area_struct *vma,INC_CACHE_INFO (find_total);if (page) {bool vma_ra =swap_use_vma_readahead (); -bool readahead =TestClearPageReadahead (page); +bool readahead;INC_CACHE_INFO (find_success); +/* +* At the moment, we don't support PG_readahead for anon THP +* so let's bail out rather than confusing the readahead stat. +*/ if (unlikely (PageTransCompound (page)))return page; + readahead =TestClearPageReadahead (page);if (vma && vma_ra) {unsigned long ra_val;int win, hits;
@@ -608,8 +613,7 @@ struct page *swap_cluster_readahead(swp_entry_t entry, gfp_t gfp_mask,continue ;if (page_allocated) {swap_readpage (page, false); -if (offset != entry_offset && -likely (!PageTransCompound (page))) { +if (offset != entry_offset) {SetPageReadahead (page);count_vm_event (SWAP_RA ); }
@@ -772,8 +776,7 @@ struct page *swap_vma_readahead(swp_entry_t fentry, gfp_t gfp_mask,continue ;if (page_allocated) {swap_readpage (page, false); -if (i != ra_info.offset && -likely (!PageTransCompound (page))) { +if (i != ra_info.offset) {SetPageReadahead (page);count_vm_event (SWAP_RA ); }
Signature · 7 lines
2.16.2.395.g2e18187dfd-goog -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Quoted 7 lines · Minchan Kim
Huang reported
PG_readaheadflag markedPF_NO_COMPOUNDso that we cannot use the flag for THP page. So, we need to check first whether page is THP or not before using TestClearPageReadahead inlookup_swap_cache.This patch fixes it.
Quoted 7 lines
Furthermore, swap_[cluster|vma]_readahead cannot mark
PG_readaheadfor newly allocated page because the allocated page is always a normal page, not THP at this moment. So let's clean it up, too.Cc Hugh Dickins <[email protected]>Cc "Huang, Ying" <[email protected]>Signed-off-by Minchan Kim <[email protected]>
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>