|
@@ -3377,9 +3377,15 @@ static void setup_zone_migrate_reserve(struct zone *zone)
|
|
|
unsigned long block_migratetype;
|
|
|
int reserve;
|
|
|
|
|
|
- /* Get the start pfn, end pfn and the number of blocks to reserve */
|
|
|
+ /*
|
|
|
+ * Get the start pfn, end pfn and the number of blocks to reserve
|
|
|
+ * We have to be careful to be aligned to pageblock_nr_pages to
|
|
|
+ * make sure that we always check pfn_valid for the first page in
|
|
|
+ * the block.
|
|
|
+ */
|
|
|
start_pfn = zone->zone_start_pfn;
|
|
|
end_pfn = start_pfn + zone->spanned_pages;
|
|
|
+ start_pfn = roundup(start_pfn, pageblock_nr_pages);
|
|
|
reserve = roundup(min_wmark_pages(zone), pageblock_nr_pages) >>
|
|
|
pageblock_order;
|
|
|
|