mm, compaction: remove unneeded pageblock_skip_persistent() checks
authorVlastimil Babka <vbabka@suse.cz>
Fri, 17 Nov 2017 23:26:41 +0000 (15:26 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 18 Nov 2017 00:10:00 +0000 (16:10 -0800)
Commit f3c931633a59 ("mm, compaction: persistently skip hugetlbfs
pageblocks") has introduced pageblock_skip_persistent() checks into
migration and free scanners, to make sure pageblocks that should be
persistently skipped are marked as such, regardless of the
ignore_skip_hint flag.

Since the previous patch introduced a new no_set_skip_hint flag, the
ignore flag no longer prevents marking pageblocks as skipped.  Therefore
we can remove the special cases.  The relevant pageblocks will be marked
as skipped by the common logic which marks each pageblock where no page
could be isolated.  This makes the code simpler.

Link: http://lkml.kernel.org/r/20171102121706.21504-3-vbabka@suse.cz
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
Cc: Mel Gorman <mgorman@techsingularity.net>
Cc: David Rientjes <rientjes@google.com>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/compaction.c

index bb1188a..10cd757 100644 (file)
@@ -476,10 +476,7 @@ static unsigned long isolate_freepages_block(struct compact_control *cc,
                if (PageCompound(page)) {
                        const unsigned int order = compound_order(page);
 
-                       if (pageblock_skip_persistent(page, order)) {
-                               set_pageblock_skip(page);
-                               blockpfn = end_pfn;
-                       } else if (likely(order < MAX_ORDER)) {
+                       if (likely(order < MAX_ORDER)) {
                                blockpfn += (1UL << order) - 1;
                                cursor += (1UL << order) - 1;
                        }
@@ -801,10 +798,7 @@ isolate_migratepages_block(struct compact_control *cc, unsigned long low_pfn,
                if (PageCompound(page)) {
                        const unsigned int order = compound_order(page);
 
-                       if (pageblock_skip_persistent(page, order)) {
-                               set_pageblock_skip(page);
-                               low_pfn = end_pfn;
-                       } else if (likely(order < MAX_ORDER))
+                       if (likely(order < MAX_ORDER))
                                low_pfn += (1UL << order) - 1;
                        goto isolate_fail;
                }
@@ -867,13 +861,7 @@ isolate_migratepages_block(struct compact_control *cc, unsigned long low_pfn,
                         * is safe to read and it's 0 for tail pages.
                         */
                        if (unlikely(PageCompound(page))) {
-                               const unsigned int order = compound_order(page);
-
-                               if (pageblock_skip_persistent(page, order)) {
-                                       set_pageblock_skip(page);
-                                       low_pfn = end_pfn;
-                               } else
-                                       low_pfn += (1UL << order) - 1;
+                               low_pfn += (1UL << compound_order(page)) - 1;
                                goto isolate_fail;
                        }
                }