Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ee99c71c authored by KOSAKI Motohiro's avatar KOSAKI Motohiro Committed by Linus Torvalds
Browse files

mm: introduce for_each_populated_zone() macro



Impact: cleanup

In almost cases, for_each_zone() is used with populated_zone().  It's
because almost function doesn't need memoryless node information.
Therefore, for_each_populated_zone() can help to make code simplify.

This patch has no functional change.

[akpm@linux-foundation.org: small cleanup]
Signed-off-by: default avatarKOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Mel Gorman <mel@csn.ul.ie>
Reviewed-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent a6dc60f8
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -806,6 +806,14 @@ extern struct zone *next_zone(struct zone *zone);
	     zone;					\
	     zone = next_zone(zone))

#define for_each_populated_zone(zone)		        \
	for (zone = (first_online_pgdat())->node_zones; \
	     zone;					\
	     zone = next_zone(zone))			\
		if (!populated_zone(zone))		\
			; /* do nothing */		\
		else

static inline struct zone *zonelist_zone(struct zoneref *zoneref)
{
	return zoneref->zone;
+3 −6
Original line number Diff line number Diff line
@@ -321,13 +321,10 @@ static int create_mem_extents(struct list_head *list, gfp_t gfp_mask)

	INIT_LIST_HEAD(list);

	for_each_zone(zone) {
	for_each_populated_zone(zone) {
		unsigned long zone_start, zone_end;
		struct mem_extent *ext, *cur, *aux;

		if (!populated_zone(zone))
			continue;

		zone_start = zone->zone_start_pfn;
		zone_end = zone->zone_start_pfn + zone->spanned_pages;

@@ -804,8 +801,8 @@ static unsigned int count_free_highmem_pages(void)
	struct zone *zone;
	unsigned int cnt = 0;

	for_each_zone(zone)
		if (populated_zone(zone) && is_highmem(zone))
	for_each_populated_zone(zone)
		if (is_highmem(zone))
			cnt += zone_page_state(zone, NR_FREE_PAGES);

	return cnt;
+8 −9
Original line number Diff line number Diff line
@@ -229,8 +229,7 @@ int swsusp_shrink_memory(void)
		size = count_data_pages() + PAGES_FOR_IO + SPARE_PAGES;
		tmp = size;
		size += highmem_size;
		for_each_zone (zone)
			if (populated_zone(zone)) {
		for_each_populated_zone(zone) {
			tmp += snapshot_additional_pages(zone);
			if (is_highmem(zone)) {
				highmem_size -=
+5 −21
Original line number Diff line number Diff line
@@ -922,13 +922,10 @@ static void drain_pages(unsigned int cpu)
	unsigned long flags;
	struct zone *zone;

	for_each_zone(zone) {
	for_each_populated_zone(zone) {
		struct per_cpu_pageset *pset;
		struct per_cpu_pages *pcp;

		if (!populated_zone(zone))
			continue;

		pset = zone_pcp(zone, cpu);

		pcp = &pset->pcp;
@@ -1879,10 +1876,7 @@ void show_free_areas(void)
	int cpu;
	struct zone *zone;

	for_each_zone(zone) {
		if (!populated_zone(zone))
			continue;

	for_each_populated_zone(zone) {
		show_node(zone);
		printk("%s per-cpu:\n", zone->name);

@@ -1922,12 +1916,9 @@ void show_free_areas(void)
		global_page_state(NR_PAGETABLE),
		global_page_state(NR_BOUNCE));

	for_each_zone(zone) {
	for_each_populated_zone(zone) {
		int i;

		if (!populated_zone(zone))
			continue;

		show_node(zone);
		printk("%s"
			" free:%lukB"
@@ -1967,12 +1958,9 @@ void show_free_areas(void)
		printk("\n");
	}

	for_each_zone(zone) {
	for_each_populated_zone(zone) {
 		unsigned long nr[MAX_ORDER], flags, order, total = 0;

		if (!populated_zone(zone))
			continue;

		show_node(zone);
		printk("%s: ", zone->name);

@@ -2784,11 +2772,7 @@ static int __cpuinit process_zones(int cpu)

	node_set_state(node, N_CPU);	/* this node has a cpu */

	for_each_zone(zone) {

		if (!populated_zone(zone))
			continue;

	for_each_populated_zone(zone) {
		zone_pcp(zone, cpu) = kmalloc_node(sizeof(struct per_cpu_pageset),
					 GFP_KERNEL, node);
		if (!zone_pcp(zone, cpu))
+1 −3
Original line number Diff line number Diff line
@@ -2061,11 +2061,9 @@ static unsigned long shrink_all_zones(unsigned long nr_pages, int prio,
	struct zone *zone;
	unsigned long ret = 0;

	for_each_zone(zone) {
	for_each_populated_zone(zone) {
		enum lru_list l;

		if (!populated_zone(zone))
			continue;
		if (zone_is_all_unreclaimable(zone) && prio != DEF_PRIORITY)
			continue;

Loading