offline_pages() is the only user. __offline_isolated_pages() never gets
called with ranges that contain memory holes and we no longer care about
the return value. Drop the return value handling and all pfn_valid()
checks.

Update the documentation.

Cc: Andrew Morton <[email protected]>
Cc: Michal Hocko <[email protected]>
Cc: Wei Yang <[email protected]>
Cc: Baoquan He <[email protected]>
Cc: Pankaj Gupta <[email protected]>
Cc: Oscar Salvador <[email protected]>
Signed-off-by: David Hildenbrand <[email protected]>
---
 include/linux/memory_hotplug.h |  4 ++--
 mm/page_alloc.c                | 27 ++++-----------------------
 2 files changed, 6 insertions(+), 25 deletions(-)

diff --git a/include/linux/memory_hotplug.h b/include/linux/memory_hotplug.h
index 375515803cd83..0b461691d1a49 100644
--- a/include/linux/memory_hotplug.h
+++ b/include/linux/memory_hotplug.h
@@ -103,8 +103,8 @@ extern int online_pages(unsigned long pfn, unsigned long 
nr_pages,
                        int online_type, int nid);
 extern struct zone *test_pages_in_a_zone(unsigned long start_pfn,
                                         unsigned long end_pfn);
-extern unsigned long __offline_isolated_pages(unsigned long start_pfn,
-                                               unsigned long end_pfn);
+extern void __offline_isolated_pages(unsigned long start_pfn,
+                                    unsigned long end_pfn);
 
 typedef void (*online_page_callback_t)(struct page *page, unsigned int order);
 
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index cf0b25161feae..03f585f95dc60 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -8692,35 +8692,21 @@ void zone_pcp_reset(struct zone *zone)
 
 #ifdef CONFIG_MEMORY_HOTREMOVE
 /*
- * All pages in the range must be in a single zone and isolated
- * before calling this.
+ * All pages in the range must be in a single zone, must not contain holes,
+ * must span full sections, and must be isolated before calling this function.
  */
-unsigned long
-__offline_isolated_pages(unsigned long start_pfn, unsigned long end_pfn)
+void __offline_isolated_pages(unsigned long start_pfn, unsigned long end_pfn)
 {
+       unsigned long pfn = start_pfn;
        struct page *page;
        struct zone *zone;
        unsigned int order;
-       unsigned long pfn;
        unsigned long flags;
-       unsigned long offlined_pages = 0;
-
-       /* find the first valid pfn */
-       for (pfn = start_pfn; pfn < end_pfn; pfn++)
-               if (pfn_valid(pfn))
-                       break;
-       if (pfn == end_pfn)
-               return offlined_pages;
 
        offline_mem_sections(pfn, end_pfn);
        zone = page_zone(pfn_to_page(pfn));
        spin_lock_irqsave(&zone->lock, flags);
-       pfn = start_pfn;
        while (pfn < end_pfn) {
-               if (!pfn_valid(pfn)) {
-                       pfn++;
-                       continue;
-               }
                page = pfn_to_page(pfn);
                /*
                 * The HWPoisoned page may be not in buddy system, and
@@ -8728,7 +8714,6 @@ __offline_isolated_pages(unsigned long start_pfn, 
unsigned long end_pfn)
                 */
                if (unlikely(!PageBuddy(page) && PageHWPoison(page))) {
                        pfn++;
-                       offlined_pages++;
                        continue;
                }
                /*
@@ -8739,20 +8724,16 @@ __offline_isolated_pages(unsigned long start_pfn, 
unsigned long end_pfn)
                        BUG_ON(page_count(page));
                        BUG_ON(PageBuddy(page));
                        pfn++;
-                       offlined_pages++;
                        continue;
                }
 
                BUG_ON(page_count(page));
                BUG_ON(!PageBuddy(page));
                order = page_order(page);
-               offlined_pages += 1 << order;
                del_page_from_free_list(page, zone, order);
                pfn += (1 << order);
        }
        spin_unlock_irqrestore(&zone->lock, flags);
-
-       return offlined_pages;
 }
 #endif
 
-- 
2.26.2

Reply via email to