Subject: [merged] mm-vmscan-restore-sc-gfp_mask-after-promoting-it-to-__gfp_highmem.patch removed from -mm tree To: weijie.yang@xxxxxxxxxxx,mgorman@xxxxxxx,riel@xxxxxxxxxx,mm-commits@xxxxxxxxxxxxxxx From: akpm@xxxxxxxxxxxxxxxxxxxx Date: Tue, 08 Apr 2014 13:33:15 -0700 The patch titled Subject: mm/vmscan: restore sc->gfp_mask after promoting it to __GFP_HIGHMEM has been removed from the -mm tree. Its filename was mm-vmscan-restore-sc-gfp_mask-after-promoting-it-to-__gfp_highmem.patch This patch was dropped because it was merged into mainline or a subsystem tree ------------------------------------------------------ From: Weijie Yang <weijie.yang@xxxxxxxxxxx> Subject: mm/vmscan: restore sc->gfp_mask after promoting it to __GFP_HIGHMEM We promote sc->gfp_mask to __GFP_HIGHMEM to forcibly scan highmem if there are too many buffer_heads pinning highmem. See cc715d99e5 ("mm: vmscan: forcibly scan highmem if there are too many buffer_heads pinning highmem"). This patch restores sc->gfp_mask to its caller original value after finishing the scan job, to avoid the impact on other invocations from its upper caller, such as vmpressure_prio(), shrink_slab(). Signed-off-by: Weijie Yang <weijie.yang@xxxxxxxxxxx> Acked-by: Mel Gorman <mgorman@xxxxxxx> Acked-by: Rik van Riel <riel@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/vmscan.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff -puN mm/vmscan.c~mm-vmscan-restore-sc-gfp_mask-after-promoting-it-to-__gfp_highmem mm/vmscan.c --- a/mm/vmscan.c~mm-vmscan-restore-sc-gfp_mask-after-promoting-it-to-__gfp_highmem +++ a/mm/vmscan.c @@ -2314,6 +2314,7 @@ static bool shrink_zones(struct zonelist unsigned long lru_pages = 0; bool aborted_reclaim = false; struct reclaim_state *reclaim_state = current->reclaim_state; + gfp_t orig_mask; struct shrink_control shrink = { .gfp_mask = sc->gfp_mask, }; @@ -2323,6 +2324,7 @@ static bool shrink_zones(struct zonelist * allowed level, force direct reclaim to scan the highmem zone as * highmem pages could be pinning lowmem pages storing buffer_heads */ + orig_mask = sc->gfp_mask; if (buffer_heads_over_limit) sc->gfp_mask |= __GFP_HIGHMEM; @@ -2393,6 +2395,12 @@ static bool shrink_zones(struct zonelist } } + /* + * Restore to original mask to avoid the impact on the caller if we + * promoted it to __GFP_HIGHMEM. + */ + sc->gfp_mask = orig_mask; + return aborted_reclaim; } _ Patches currently in -mm which might be from weijie.yang@xxxxxxxxxxx are origin.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html