}
#ifdef NODE_NOT_IN_PAGE_FLAGS
-extern int page_to_nid(const struct page *page);
+extern int pgflags_nid(unsigned long pgflags);
#else
+static inline int pgflags_nid(unsigned long pgflags)
+{
+ return (pgflags >> NODES_PGSHIFT) & NODES_MASK;
+}
+#endif
+
static inline int page_to_nid(const struct page *page)
{
struct page *p = (struct page *)page;
- return (PF_POISONED_CHECK(p)->flags >> NODES_PGSHIFT) & NODES_MASK;
+ return pgflags_nid(PF_POISONED_CHECK(p)->flags);
}
-#endif
-
#ifdef CONFIG_NUMA_BALANCING
static inline int cpu_pid_to_cpupid(int cpu, int pid)
{
static u16 section_to_node_table[NR_MEM_SECTIONS] __cacheline_aligned;
#endif
-int page_to_nid(const struct page *page)
+int pgflags_nid(unsigned long pgflags)
{
- return section_to_node_table[pgflags_section(page->flags)];
+ return section_to_node_table[pgflags_section(pgflags)];
}
-EXPORT_SYMBOL(page_to_nid);
+EXPORT_SYMBOL(pgflags_nid);
static void set_section_nid(unsigned long section_nr, int nid)
{