mm/zonelist: enumerate zonelists array index
authorYaowei Bai <baiyaowei@cmss.chinamobile.com>
Thu, 14 Jan 2016 23:19:00 +0000 (15:19 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 15 Jan 2016 00:00:49 +0000 (16:00 -0800)
Hardcoding index to zonelists array in gfp_zonelist() is not a good
idea, let's enumerate it to improve readability.

No functional change.

[akpm@linux-foundation.org: coding-style fixes]
[akpm@linux-foundation.org: fix CONFIG_NUMA=n build]
[n-horiguchi@ah.jp.nec.com: fix warning in comparing enumerator]
Signed-off-by: Yaowei Bai <baiyaowei@cmss.chinamobile.com>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: David Rientjes <rientjes@google.com>
Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
include/linux/gfp.h
include/linux/mmzone.h
mm/page_alloc.c

index 1dd59ab..91f74e7 100644 (file)
@@ -384,10 +384,11 @@ static inline enum zone_type gfp_zone(gfp_t flags)
 
 static inline int gfp_zonelist(gfp_t flags)
 {
-       if (IS_ENABLED(CONFIG_NUMA) && unlikely(flags & __GFP_THISNODE))
-               return 1;
-
-       return 0;
+#ifdef CONFIG_NUMA
+       if (unlikely(flags & __GFP_THISNODE))
+               return ZONELIST_NOFALLBACK;
+#endif
+       return ZONELIST_FALLBACK;
 }
 
 /*
index 9963846..12c98df 100644 (file)
@@ -571,19 +571,17 @@ static inline bool zone_is_empty(struct zone *zone)
 /* Maximum number of zones on a zonelist */
 #define MAX_ZONES_PER_ZONELIST (MAX_NUMNODES * MAX_NR_ZONES)
 
+enum {
+       ZONELIST_FALLBACK,      /* zonelist with fallback */
 #ifdef CONFIG_NUMA
-
-/*
- * The NUMA zonelists are doubled because we need zonelists that restrict the
- * allocations to a single node for __GFP_THISNODE.
- *
- * [0] : Zonelist with fallback
- * [1] : No fallback (__GFP_THISNODE)
- */
-#define MAX_ZONELISTS 2
-#else
-#define MAX_ZONELISTS 1
+       /*
+        * The NUMA zonelists are doubled because we need zonelists that
+        * restrict the allocations to a single node for __GFP_THISNODE.
+        */
+       ZONELIST_NOFALLBACK,    /* zonelist without fallback (__GFP_THISNODE) */
 #endif
+       MAX_ZONELISTS
+};
 
 /*
  * This struct contains information about a zone in a zonelist. It is stored
index 2f6d30d..e40e702 100644 (file)
@@ -4148,8 +4148,7 @@ static void set_zonelist_order(void)
 
 static void build_zonelists(pg_data_t *pgdat)
 {
-       int j, node, load;
-       enum zone_type i;
+       int i, node, load;
        nodemask_t used_mask;
        int local_node, prev_node;
        struct zonelist *zonelist;
@@ -4169,7 +4168,7 @@ static void build_zonelists(pg_data_t *pgdat)
        nodes_clear(used_mask);
 
        memset(node_order, 0, sizeof(node_order));
-       j = 0;
+       i = 0;
 
        while ((node = find_next_best_node(local_node, &used_mask)) >= 0) {
                /*
@@ -4186,12 +4185,12 @@ static void build_zonelists(pg_data_t *pgdat)
                if (order == ZONELIST_ORDER_NODE)
                        build_zonelists_in_node_order(pgdat, node);
                else
-                       node_order[j++] = node; /* remember order */
+                       node_order[i++] = node; /* remember order */
        }
 
        if (order == ZONELIST_ORDER_ZONE) {
                /* calculate node order -- i.e., DMA last! */
-               build_zonelists_in_zone_order(pgdat, j);
+               build_zonelists_in_zone_order(pgdat, i);
        }
 
        build_thisnode_zonelists(pgdat);