mm/page_alloc: fix counting of managed_pages
[ Upstream commit f7ec104458e00d27a190348ac3a513f3df3699a4 ] commitf63661566f
("mm/page_alloc.c: clear out zone->lowmem_reserve[] if the zone is empty") clears out zone->lowmem_reserve[] if zone is empty. But when zone is not empty and sysctl_lowmem_reserve_ratio[i] is set to zero, zone_managed_pages(zone) is not counted in the managed_pages either. This is inconsistent with the description of lowmem_reserve, so fix it. Link: https://lkml.kernel.org/r/20210527125707.3760259-1-liushixin2@huawei.com Fixes:f63661566f
("mm/page_alloc.c: clear out zone->lowmem_reserve[] if the zone is empty") Signed-off-by: Liu Shixin <liushixin2@huawei.com> Reported-by: yangerkun <yangerkun@huawei.com> Reviewed-by: Baoquan He <bhe@redhat.com> Acked-by: David Hildenbrand <david@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
d7deea31ed
commit
10f32b8c9e
@@ -7798,17 +7798,17 @@ static void setup_per_zone_lowmem_reserve(void)
|
|||||||
unsigned long managed_pages = 0;
|
unsigned long managed_pages = 0;
|
||||||
|
|
||||||
for (j = i + 1; j < MAX_NR_ZONES; j++) {
|
for (j = i + 1; j < MAX_NR_ZONES; j++) {
|
||||||
if (clear) {
|
|
||||||
zone->lowmem_reserve[j] = 0;
|
|
||||||
} else {
|
|
||||||
struct zone *upper_zone = &pgdat->node_zones[j];
|
struct zone *upper_zone = &pgdat->node_zones[j];
|
||||||
|
|
||||||
managed_pages += zone_managed_pages(upper_zone);
|
managed_pages += zone_managed_pages(upper_zone);
|
||||||
|
|
||||||
|
if (clear)
|
||||||
|
zone->lowmem_reserve[j] = 0;
|
||||||
|
else
|
||||||
zone->lowmem_reserve[j] = managed_pages / ratio;
|
zone->lowmem_reserve[j] = managed_pages / ratio;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/* update totalreserve_pages */
|
/* update totalreserve_pages */
|
||||||
calculate_totalreserve_pages();
|
calculate_totalreserve_pages();
|
||||||
|
Reference in New Issue
Block a user