mm, compaction: rename COMPACT_PARTIAL to COMPACT_SUCCESS
authorVlastimil Babka <vbabka@suse.cz>
Fri, 7 Oct 2016 23:57:41 +0000 (16:57 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 8 Oct 2016 01:46:27 +0000 (18:46 -0700)
COMPACT_PARTIAL has historically meant that compaction returned after
doing some work without fully compacting a zone.  It however didn't
distinguish if compaction terminated because it succeeded in creating
the requested high-order page.  This has changed recently and now we
only return COMPACT_PARTIAL when compaction thinks it succeeded, or the
high-order watermark check in compaction_suitable() passes and no
compaction needs to be done.

So at this point we can make the return value clearer by renaming it to
COMPACT_SUCCESS.  The next patch will remove some redundant tests for
success where compaction just returned COMPACT_SUCCESS.

Link: http://lkml.kernel.org/r/20160810091226.6709-4-vbabka@suse.cz
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
Tested-by: Lorenzo Stoakes <lstoakes@gmail.com>
Acked-by: Michal Hocko <mhocko@suse.com>
Cc: Mel Gorman <mgorman@techsingularity.net>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: David Rientjes <rientjes@google.com>
Cc: Rik van Riel <riel@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
include/linux/compaction.h
include/trace/events/compaction.h
mm/compaction.c
mm/vmscan.c

index 1bb58581301c19270fb2d65d446175cd2a4c8f23..e88c037afe47bad99854880bbf6e406817907c08 100644 (file)
@@ -49,10 +49,10 @@ enum compact_result {
        COMPACT_CONTENDED,
 
        /*
-        * direct compaction partially compacted a zone and there might be
-        * suitable pages
+        * direct compaction terminated after concluding that the allocation
+        * should now succeed
         */
-       COMPACT_PARTIAL,
+       COMPACT_SUCCESS,
 };
 
 struct alloc_context; /* in mm/internal.h */
@@ -88,7 +88,7 @@ static inline bool compaction_made_progress(enum compact_result result)
         * that the compaction successfully isolated and migrated some
         * pageblocks.
         */
-       if (result == COMPACT_PARTIAL)
+       if (result == COMPACT_SUCCESS)
                return true;
 
        return false;
index c2ba402ab25651009c5b67e90145b81124fd110e..cbdb90b6b30847670041434cfe546bb62223b77c 100644 (file)
@@ -13,7 +13,7 @@
        EM( COMPACT_SKIPPED,            "skipped")              \
        EM( COMPACT_DEFERRED,           "deferred")             \
        EM( COMPACT_CONTINUE,           "continue")             \
-       EM( COMPACT_PARTIAL,            "partial")              \
+       EM( COMPACT_SUCCESS,            "success")              \
        EM( COMPACT_PARTIAL_SKIPPED,    "partial_skipped")      \
        EM( COMPACT_COMPLETE,           "complete")             \
        EM( COMPACT_NO_SUITABLE_PAGE,   "no_suitable_page")     \
index 8e32778fba5b44d2a5124fd50655e991b510e35a..335eeeed0c913b9aee5497b04250a15ef3f97e5a 100644 (file)
@@ -1329,13 +1329,13 @@ static enum compact_result __compact_finished(struct zone *zone, struct compact_
 
                /* Job done if page is free of the right migratetype */
                if (!list_empty(&area->free_list[migratetype]))
-                       return COMPACT_PARTIAL;
+                       return COMPACT_SUCCESS;
 
 #ifdef CONFIG_CMA
                /* MIGRATE_MOVABLE can fallback on MIGRATE_CMA */
                if (migratetype == MIGRATE_MOVABLE &&
                        !list_empty(&area->free_list[MIGRATE_CMA]))
-                       return COMPACT_PARTIAL;
+                       return COMPACT_SUCCESS;
 #endif
                /*
                 * Job done if allocation would steal freepages from
@@ -1343,7 +1343,7 @@ static enum compact_result __compact_finished(struct zone *zone, struct compact_
                 */
                if (find_suitable_fallback(area, order, migratetype,
                                                true, &can_steal) != -1)
-                       return COMPACT_PARTIAL;
+                       return COMPACT_SUCCESS;
        }
 
        return COMPACT_NO_SUITABLE_PAGE;
@@ -1367,7 +1367,7 @@ static enum compact_result compact_finished(struct zone *zone,
  * compaction_suitable: Is this suitable to run compaction on this zone now?
  * Returns
  *   COMPACT_SKIPPED  - If there are too few free pages for compaction
- *   COMPACT_PARTIAL  - If the allocation would succeed without compaction
+ *   COMPACT_SUCCESS  - If the allocation would succeed without compaction
  *   COMPACT_CONTINUE - If compaction should run now
  */
 static enum compact_result __compaction_suitable(struct zone *zone, int order,
@@ -1388,7 +1388,7 @@ static enum compact_result __compaction_suitable(struct zone *zone, int order,
         */
        if (zone_watermark_ok(zone, order, watermark, classzone_idx,
                                                                alloc_flags))
-               return COMPACT_PARTIAL;
+               return COMPACT_SUCCESS;
 
        /*
         * Watermarks for order-0 must be met for compaction. Note the 2UL.
@@ -1477,7 +1477,7 @@ static enum compact_result compact_zone(struct zone *zone, struct compact_contro
        ret = compaction_suitable(zone, cc->order, cc->alloc_flags,
                                                        cc->classzone_idx);
        /* Compaction is likely to fail */
-       if (ret == COMPACT_PARTIAL || ret == COMPACT_SKIPPED)
+       if (ret == COMPACT_SUCCESS || ret == COMPACT_SKIPPED)
                return ret;
 
        /* huh, compaction_suitable is returning something unexpected */
index 0fe8b7113868fa01f308331c48ebf36a4c1c87ac..981fc84e7434d122d1865f9c46a26f4098662260 100644 (file)
@@ -2495,7 +2495,7 @@ static inline bool should_continue_reclaim(struct pglist_data *pgdat,
                        continue;
 
                switch (compaction_suitable(zone, sc->order, 0, sc->reclaim_idx)) {
-               case COMPACT_PARTIAL:
+               case COMPACT_SUCCESS:
                case COMPACT_CONTINUE:
                        return false;
                default: