|
@@ -693,6 +693,36 @@ static inline int page_to_nid(const struct page *page)
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
+#ifdef CONFIG_NUMA_BALANCING
|
|
|
+static inline int page_xchg_last_nid(struct page *page, int nid)
|
|
|
+{
|
|
|
+ return xchg(&page->_last_nid, nid);
|
|
|
+}
|
|
|
+
|
|
|
+static inline int page_last_nid(struct page *page)
|
|
|
+{
|
|
|
+ return page->_last_nid;
|
|
|
+}
|
|
|
+static inline void reset_page_last_nid(struct page *page)
|
|
|
+{
|
|
|
+ page->_last_nid = -1;
|
|
|
+}
|
|
|
+#else
|
|
|
+static inline int page_xchg_last_nid(struct page *page, int nid)
|
|
|
+{
|
|
|
+ return page_to_nid(page);
|
|
|
+}
|
|
|
+
|
|
|
+static inline int page_last_nid(struct page *page)
|
|
|
+{
|
|
|
+ return page_to_nid(page);
|
|
|
+}
|
|
|
+
|
|
|
+static inline void reset_page_last_nid(struct page *page)
|
|
|
+{
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
static inline struct zone *page_zone(const struct page *page)
|
|
|
{
|
|
|
return &NODE_DATA(page_to_nid(page))->node_zones[page_zonenum(page)];
|