diff options
-rw-r--r-- | mm/page_alloc.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index b5a58d476c1a..d73bfad1c32f 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -847,8 +847,19 @@ static int rmqueue_bulk(struct zone *zone, unsigned int order, | |||
847 | struct page *page = __rmqueue(zone, order, migratetype); | 847 | struct page *page = __rmqueue(zone, order, migratetype); |
848 | if (unlikely(page == NULL)) | 848 | if (unlikely(page == NULL)) |
849 | break; | 849 | break; |
850 | |||
851 | /* | ||
852 | * Split buddy pages returned by expand() are received here | ||
853 | * in physical page order. The page is added to the callers and | ||
854 | * list and the list head then moves forward. From the callers | ||
855 | * perspective, the linked list is ordered by page number in | ||
856 | * some conditions. This is useful for IO devices that can | ||
857 | * merge IO requests if the physical pages are ordered | ||
858 | * properly. | ||
859 | */ | ||
850 | list_add(&page->lru, list); | 860 | list_add(&page->lru, list); |
851 | set_page_private(page, migratetype); | 861 | set_page_private(page, migratetype); |
862 | list = &page->lru; | ||
852 | } | 863 | } |
853 | spin_unlock(&zone->lock); | 864 | spin_unlock(&zone->lock); |
854 | return i; | 865 | return i; |