|
@@ -6767,23 +6767,23 @@ void *__init alloc_large_system_hash(const char *tablename,
|
|
|
}
|
|
|
|
|
|
/* Return a pointer to the bitmap storing bits affecting a block of pages */
|
|
|
-static inline unsigned long *get_pageblock_bitmap(struct zone *zone,
|
|
|
+static inline unsigned long *get_pageblock_bitmap(struct page *page,
|
|
|
unsigned long pfn)
|
|
|
{
|
|
|
#ifdef CONFIG_SPARSEMEM
|
|
|
return __pfn_to_section(pfn)->pageblock_flags;
|
|
|
#else
|
|
|
- return zone->pageblock_flags;
|
|
|
+ return page_zone(page)->pageblock_flags;
|
|
|
#endif /* CONFIG_SPARSEMEM */
|
|
|
}
|
|
|
|
|
|
-static inline int pfn_to_bitidx(struct zone *zone, unsigned long pfn)
|
|
|
+static inline int pfn_to_bitidx(struct page *page, unsigned long pfn)
|
|
|
{
|
|
|
#ifdef CONFIG_SPARSEMEM
|
|
|
pfn &= (PAGES_PER_SECTION-1);
|
|
|
return (pfn >> pageblock_order) * NR_PAGEBLOCK_BITS;
|
|
|
#else
|
|
|
- pfn = pfn - round_down(zone->zone_start_pfn, pageblock_nr_pages);
|
|
|
+ pfn = pfn - round_down(page_zone(page)->zone_start_pfn, pageblock_nr_pages);
|
|
|
return (pfn >> pageblock_order) * NR_PAGEBLOCK_BITS;
|
|
|
#endif /* CONFIG_SPARSEMEM */
|
|
|
}
|
|
@@ -6801,14 +6801,12 @@ unsigned long get_pfnblock_flags_mask(struct page *page, unsigned long pfn,
|
|
|
unsigned long end_bitidx,
|
|
|
unsigned long mask)
|
|
|
{
|
|
|
- struct zone *zone;
|
|
|
unsigned long *bitmap;
|
|
|
unsigned long bitidx, word_bitidx;
|
|
|
unsigned long word;
|
|
|
|
|
|
- zone = page_zone(page);
|
|
|
- bitmap = get_pageblock_bitmap(zone, pfn);
|
|
|
- bitidx = pfn_to_bitidx(zone, pfn);
|
|
|
+ bitmap = get_pageblock_bitmap(page, pfn);
|
|
|
+ bitidx = pfn_to_bitidx(page, pfn);
|
|
|
word_bitidx = bitidx / BITS_PER_LONG;
|
|
|
bitidx &= (BITS_PER_LONG-1);
|
|
|
|
|
@@ -6830,20 +6828,18 @@ void set_pfnblock_flags_mask(struct page *page, unsigned long flags,
|
|
|
unsigned long end_bitidx,
|
|
|
unsigned long mask)
|
|
|
{
|
|
|
- struct zone *zone;
|
|
|
unsigned long *bitmap;
|
|
|
unsigned long bitidx, word_bitidx;
|
|
|
unsigned long old_word, word;
|
|
|
|
|
|
BUILD_BUG_ON(NR_PAGEBLOCK_BITS != 4);
|
|
|
|
|
|
- zone = page_zone(page);
|
|
|
- bitmap = get_pageblock_bitmap(zone, pfn);
|
|
|
- bitidx = pfn_to_bitidx(zone, pfn);
|
|
|
+ bitmap = get_pageblock_bitmap(page, pfn);
|
|
|
+ bitidx = pfn_to_bitidx(page, pfn);
|
|
|
word_bitidx = bitidx / BITS_PER_LONG;
|
|
|
bitidx &= (BITS_PER_LONG-1);
|
|
|
|
|
|
- VM_BUG_ON_PAGE(!zone_spans_pfn(zone, pfn), page);
|
|
|
+ VM_BUG_ON_PAGE(!zone_spans_pfn(page_zone(page), pfn), page);
|
|
|
|
|
|
bitidx += end_bitidx;
|
|
|
mask <<= (BITS_PER_LONG - bitidx - 1);
|