Pass the page->flags to this function instead of the struct page.
This is in preparation for splitting struct page into separate types.
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
*/
#define __page_to_pfn(pg) \
({ const struct page *__pg = (pg); \
- int __sec = page_to_section(__pg); \
+ int __sec = pgflags_section(__pg->flags); \
(unsigned long)(__pg - __section_mem_map_addr(__nr_to_section(__sec))); \
})
page->flags |= (section & SECTIONS_MASK) << SECTIONS_PGSHIFT;
}
-static inline unsigned long page_to_section(const struct page *page)
+static inline unsigned long pgflags_section(unsigned long pgflags)
{
- return (page->flags >> SECTIONS_PGSHIFT) & SECTIONS_MASK;
+ return (flags >> SECTIONS_PGSHIFT) & SECTIONS_MASK;
}
#endif
int page_to_nid(const struct page *page)
{
- return section_to_node_table[page_to_section(page)];
+ return section_to_node_table[pgflags_section(page->flags)];
}
EXPORT_SYMBOL(page_to_nid);