[PATCH v5 4/6] mm/page_isolation: cleanup set_migratetype_isolate()

David Hildenbrand
Sun, 16 Aug 2020 12:53:31 -0000

Let's clean it up a bit, simplifying the exit paths.

Reviewed-by: Baoquan He <bhe at redhat.com>
Reviewed-by: Pankaj Gupta <pankaj.gupta.linux at gmail.com>
Cc: Andrew Morton <akpm at linux-foundation.org>
Cc: Michal Hocko <mhocko at suse.com>
Cc: Michael S. Tsirkin <mst at redhat.com>
Cc: Mike Kravetz <mike.kravetz at oracle.com>
Signed-off-by: David Hildenbrand <david at redhat.com>
---
 mm/page_isolation.c | 17 +++++++----------
 1 file changed, 7 insertions(+), 10 deletions(-)

diff --git a/mm/page_isolation.c b/mm/page_isolation.c
index d099aac479601..e65fe5d770849 100644
--- a/mm/page_isolation.c
+++ b/mm/page_isolation.c
@@ -17,12 +17,9 @@

 static int set_migratetype_isolate(struct page *page, int migratetype, int
isol_flags)
 {
-	struct page *unmovable = NULL;
-	struct zone *zone;
+	struct zone *zone = page_zone(page);
+	struct page *unmovable;
 	unsigned long flags;
-	int ret = -EBUSY;
-
-	zone = page_zone(page);

 	spin_lock_irqsave(&zone->lock, flags);

@@ -51,13 +48,13 @@ static int set_migratetype_isolate(struct page *page, int
migratetype, int isol_
 									NULL);

 		__mod_zone_freepage_state(zone, -nr_pages, mt);
-		ret = 0;
+		spin_unlock_irqrestore(&zone->lock, flags);
+		drain_all_pages(zone);
+		return 0;
 	}

 	spin_unlock_irqrestore(&zone->lock, flags);
-	if (!ret) {
-		drain_all_pages(zone);
-	} else if ((isol_flags & REPORT_FAILURE) && unmovable) {
+	if (isol_flags & REPORT_FAILURE) {
 		/*
 		 * printk() with zone->lock held will likely trigger a
 		 * lockdep splat, so defer it here.
@@ -65,7 +62,7 @@ static int set_migratetype_isolate(struct page *page, int
migratetype, int isol_
 		dump_page(unmovable, "unmovable page");
 	}

-	return ret;
+	return -EBUSY;
 }

 static void unset_migratetype_isolate(struct page *page, unsigned migratetype)
--
2.26.2