]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
mm/compaction: cleanup isolate_freepages()
authorVlastimil Babka <vbabka@suse.cz>
Wed, 14 May 2014 00:01:48 +0000 (10:01 +1000)
committerStephen Rothwell <sfr@canb.auug.org.au>
Wed, 14 May 2014 00:01:48 +0000 (10:01 +1000)
isolate_freepages() is currently somewhat hard to follow thanks to many
looks like it is related to the 'low_pfn' variable, but in fact it is not.

This patch renames the 'high_pfn' variable to a hopefully less confusing name,
and slightly changes its handling without a functional change. A comment made
obsolete by recent changes is also updated.

Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Mel Gorman <mgorman@suse.de>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Cc: Michal Nazarewicz <mina86@mina86.com>
Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Cc: Christoph Lameter <cl@linux.com>
Cc: Rik van Riel <riel@redhat.com>
Cc: Dongjun Shin <d.j.shin@samsung.com>
Cc: Sunghwan Yun <sunghwan.yun@samsung.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/compaction.c

index 3e62aeb8360383fce4d360a47fffa01398c5aa5f..a5bebb74932a2d1af89c4643f1ba0910bc3a26f9 100644 (file)
@@ -662,7 +662,7 @@ static void isolate_freepages(struct zone *zone,
                                struct compact_control *cc)
 {
        struct page *page;
-       unsigned long high_pfn, low_pfn, pfn, z_end_pfn;
+       unsigned long pfn, low_pfn, next_free_pfn, z_end_pfn;
        int nr_freepages = cc->nr_freepages;
        struct list_head *freelist = &cc->freepages;
 
@@ -679,11 +679,10 @@ static void isolate_freepages(struct zone *zone,
        low_pfn = ALIGN(cc->migrate_pfn + 1, pageblock_nr_pages);
 
        /*
-        * Take care that if the migration scanner is at the end of the zone
-        * that the free scanner does not accidentally move to the next zone
-        * in the next isolation cycle.
+        * Seed the value for max(next_free_pfn, pfn) updates. If there are
+        * none, the pfn < low_pfn check will kick in.
         */
-       high_pfn = min(low_pfn, pfn);
+       next_free_pfn = 0;
 
        z_end_pfn = zone_end_pfn(zone);
 
@@ -744,7 +743,7 @@ static void isolate_freepages(struct zone *zone,
                 */
                if (isolated) {
                        cc->finished_update_free = true;
-                       high_pfn = max(high_pfn, pfn);
+                       next_free_pfn = max(next_free_pfn, pfn);
                }
        }
 
@@ -756,9 +755,9 @@ static void isolate_freepages(struct zone *zone,
         * so that compact_finished() may detect this
         */
        if (pfn < low_pfn)
-               cc->free_pfn = max(pfn, zone->zone_start_pfn);
-       else
-               cc->free_pfn = high_pfn;
+               next_free_pfn = max(pfn, zone->zone_start_pfn);
+
+       cc->free_pfn = next_free_pfn;
        cc->nr_freepages = nr_freepages;
 }