Messages in this thread Patch in this message | | | From | Huangzhaoyang <> | Subject | [PATCH] mm: mask DIRECT_RECLAIM in kswapd | Date | Mon, 6 Dec 2021 11:19:22 +0800 |
| |
From: Zhaoyang Huang <zhaoyang.huang@unisoc.com>
As the eg bellowing, using GFP_KERNEL could confuse the registered .releasepage or .shrinker functions when called in kswapd and have them acting wrongly.Mask __GFP_DIRECT_RECLAIM in kswapd.
eg, kswapd shrink_page_list try_to_release_page __fscache_maybe_release_page ... if (!(gfp & __GFP_DIRECT_RECLAIM) || !(gfp & __GFP_FS)) { fscache_stat(&fscache_n_store_vmscan_busy); return false; }
Signed-off-by: Zhaoyang Huang <zhaoyang.huang@unisoc.com> --- mm/vmscan.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mm/vmscan.c b/mm/vmscan.c index ef4a6dc..3b5c5e6 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -4083,7 +4083,7 @@ static int balance_pgdat(pg_data_t *pgdat, int order, int highest_zoneidx) bool boosted; struct zone *zone; struct scan_control sc = { - .gfp_mask = GFP_KERNEL, + .gfp_mask = GFP_KERNEL & ~__GFP_DIRECT_RECLAIM, .order = order, .may_unmap = 1, }; -- 1.9.1
| |