The commit is pushed to "branch-rh7-3.10.0-1160.42.2.vz7.184.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git after rh7-3.10.0-1160.42.2.vz7.184.1 ------> commit 1a170c7dc6e79de9e8f4811c51e243c5daaec7f1 Author: Evgenii Shatokhin <eshatok...@virtuozzo.com> Date: Mon Oct 4 13:57:15 2021 +0300
mm: Do not drop __GFP_NOFAIL in __add_to_page_cache_locked It was found that the memory allocations described in PSBM-98265 fail because 'mapping_gfp_constraint(mapping, gfp_mask)' drops __GFP_NOFAIL from gfp_mask. Restore __GFP_NOFAIL bit for mem_cgroup_try_charge_cache() https://jira.sw.ru/browse/PSBM-98265 Suggested-by: Vasily Averin <v...@virtuozzo.com> Signed-off-by: Evgenii Shatokhin <eshatok...@virtuozzo.com> --- mm/filemap.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/mm/filemap.c b/mm/filemap.c index 2d35844b3123..579b274550f2 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -716,14 +716,21 @@ static int __add_to_page_cache_locked(struct page *page, int huge = PageHuge(page); struct mem_cgroup *memcg; int error; + gfp_t gfp_mask_memcg = gfp_mask; VM_BUG_ON(!PageLocked(page)); VM_BUG_ON(PageSwapBacked(page)); gfp_mask = mapping_gfp_constraint(mapping, gfp_mask); + /* + * mapping_gfp_constraint() could have dropped __GFP_NOFAIL - + * restore it for mem_cgroup_try_charge_cache() if it was present. + */ + if (gfp_mask_memcg & __GFP_NOFAIL) + gfp_mask_memcg = gfp_mask | __GFP_NOFAIL; if (!huge) { - error = mem_cgroup_try_charge_cache(page, current->mm, gfp_mask, + error = mem_cgroup_try_charge_cache(page, current->mm, gfp_mask_memcg, &memcg); if (error) return error; _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel