scsi: cxgb4i: Fix TLS dependency
[linux-2.6-microblaze.git] / mm / page_isolation.c
index aa94afb..abbf422 100644 (file)
@@ -88,7 +88,7 @@ static void unset_migratetype_isolate(struct page *page, unsigned migratetype)
         * these pages to be merged.
         */
        if (PageBuddy(page)) {
-               order = page_order(page);
+               order = buddy_order(page);
                if (order >= pageblock_order) {
                        pfn = page_to_pfn(page);
                        buddy_pfn = __find_buddy_pfn(pfn, order);
@@ -106,6 +106,11 @@ static void unset_migratetype_isolate(struct page *page, unsigned migratetype)
         * If we isolate freepage with more than pageblock_order, there
         * should be no freepage in the range, so we could avoid costly
         * pageblock scanning for freepage moving.
+        *
+        * We didn't actually touch any of the isolated pages, so place them
+        * to the tail of the freelist. This is an optimization for memory
+        * onlining - just onlined memory won't immediately be considered for
+        * allocation.
         */
        if (!isolated_page) {
                nr_pages = move_freepages_block(zone, page, migratetype, NULL);
@@ -173,8 +178,7 @@ __first_valid_page(unsigned long pfn, unsigned long nr_pages)
  * (e.g. __offline_pages will need to call it after check for isolated range for
  * a next retry).
  *
- * Return: the number of isolated pageblocks on success and -EBUSY if any part
- * of range cannot be isolated.
+ * Return: 0 on success and -EBUSY if any part of range cannot be isolated.
  */
 int start_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn,
                             unsigned migratetype, int flags)
@@ -182,7 +186,6 @@ int start_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn,
        unsigned long pfn;
        unsigned long undo_pfn;
        struct page *page;
-       int nr_isolate_pageblock = 0;
 
        BUG_ON(!IS_ALIGNED(start_pfn, pageblock_nr_pages));
        BUG_ON(!IS_ALIGNED(end_pfn, pageblock_nr_pages));
@@ -196,10 +199,9 @@ int start_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn,
                                undo_pfn = pfn;
                                goto undo;
                        }
-                       nr_isolate_pageblock++;
                }
        }
-       return nr_isolate_pageblock;
+       return 0;
 undo:
        for (pfn = start_pfn;
             pfn < undo_pfn;
@@ -259,7 +261,7 @@ __test_page_isolated_in_pageblock(unsigned long pfn, unsigned long end_pfn,
                         * the correct MIGRATE_ISOLATE freelist. There is no
                         * simple way to verify that as VM_BUG_ON(), though.
                         */
-                       pfn += 1 << page_order(page);
+                       pfn += 1 << buddy_order(page);
                else if ((flags & MEMORY_OFFLINE) && PageHWPoison(page))
                        /* A HWPoisoned page cannot be also PageBuddy */
                        pfn++;