If the migrate target is a large free page and we ignore suitable,
it may not good for defrag. So move the ignore block suitable after
check large free page.

Signed-off-by: Yisheng Xie <xieyishe...@huawei.com>
---
 mm/compaction.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/mm/compaction.c b/mm/compaction.c
index 0fdfde0..4bf2a5d 100644
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -991,9 +991,6 @@ static bool too_many_isolated(struct zone *zone)
 static bool suitable_migration_target(struct compact_control *cc,
                                                        struct page *page)
 {
-       if (cc->ignore_block_suitable)
-               return true;
-
        /* If the page is a large free page, then disallow migration */
        if (PageBuddy(page)) {
                /*
@@ -1005,6 +1002,9 @@ static bool suitable_migration_target(struct 
compact_control *cc,
                        return false;
        }
 
+       if (cc->ignore_block_suitable)
+               return true;
+
        /* If the block is MIGRATE_MOVABLE or MIGRATE_CMA, allow migration */
        if (migrate_async_suitable(get_pageblock_migratetype(page)))
                return true;
-- 
1.7.12.4

Reply via email to