mm/highmem: make nr_free_highpages() handles all highmem zones by itself
nr_free_highpages() manually adds statistics per each highmem zone and returns a total value for them. Whenever we add a new highmem zone, we need to consider this function and it's really troublesome. Make it handle all highmem zones by itself. Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com> Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Cc: Rik van Riel <riel@redhat.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Mel Gorman <mgorman@techsingularity.net> Cc: Laura Abbott <lauraa@codeaurora.org> Cc: Minchan Kim <minchan@kernel.org> Cc: Marek Szyprowski <m.szyprowski@samsung.com> Cc: Michal Nazarewicz <mina86@mina86.com> Cc: Vlastimil Babka <vbabka@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
fc2bd799c7
commit
33499bfe50
12
mm/highmem.c
12
mm/highmem.c
@ -112,16 +112,12 @@ EXPORT_PER_CPU_SYMBOL(__kmap_atomic_idx);
|
|||||||
|
|
||||||
unsigned int nr_free_highpages (void)
|
unsigned int nr_free_highpages (void)
|
||||||
{
|
{
|
||||||
pg_data_t *pgdat;
|
struct zone *zone;
|
||||||
unsigned int pages = 0;
|
unsigned int pages = 0;
|
||||||
|
|
||||||
for_each_online_pgdat(pgdat) {
|
for_each_populated_zone(zone) {
|
||||||
pages += zone_page_state(&pgdat->node_zones[ZONE_HIGHMEM],
|
if (is_highmem(zone))
|
||||||
NR_FREE_PAGES);
|
pages += zone_page_state(zone, NR_FREE_PAGES);
|
||||||
if (zone_movable_is_highmem())
|
|
||||||
pages += zone_page_state(
|
|
||||||
&pgdat->node_zones[ZONE_MOVABLE],
|
|
||||||
NR_FREE_PAGES);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return pages;
|
return pages;
|
||||||
|
Loading…
Reference in New Issue
Block a user