|
@@ -223,24 +223,27 @@ struct page {
|
|
|
* & limit reverse map searches.
|
|
|
*/
|
|
|
union {
|
|
|
- unsigned long private; /* Mapping-private opaque data:
|
|
|
- * usually used for buffer_heads
|
|
|
- * if PagePrivate set; used for
|
|
|
- * swp_entry_t if PageSwapCache
|
|
|
- * When page is free, this indicates
|
|
|
- * order in the buddy system.
|
|
|
- */
|
|
|
+ struct {
|
|
|
+ unsigned long private; /* Mapping-private opaque data:
|
|
|
+ * usually used for buffer_heads
|
|
|
+ * if PagePrivate set; used for
|
|
|
+ * swp_entry_t if PageSwapCache.
|
|
|
+ * When page is free, this
|
|
|
+ * indicates order in the buddy
|
|
|
+ * system.
|
|
|
+ */
|
|
|
+ struct address_space *mapping; /* If low bit clear, points to
|
|
|
+ * inode address_space, or NULL.
|
|
|
+ * If page mapped as anonymous
|
|
|
+ * memory, low bit is set, and
|
|
|
+ * it points to anon_vma object:
|
|
|
+ * see PAGE_MAPPING_ANON below.
|
|
|
+ */
|
|
|
+ };
|
|
|
#if NR_CPUS >= CONFIG_SPLIT_PTLOCK_CPUS
|
|
|
- spinlock_t ptl;
|
|
|
+ spinlock_t ptl;
|
|
|
#endif
|
|
|
- } u;
|
|
|
- struct address_space *mapping; /* If low bit clear, points to
|
|
|
- * inode address_space, or NULL.
|
|
|
- * If page mapped as anonymous
|
|
|
- * memory, low bit is set, and
|
|
|
- * it points to anon_vma object:
|
|
|
- * see PAGE_MAPPING_ANON below.
|
|
|
- */
|
|
|
+ };
|
|
|
pgoff_t index; /* Our offset within mapping. */
|
|
|
struct list_head lru; /* Pageout list, eg. active_list
|
|
|
* protected by zone->lru_lock !
|
|
@@ -261,8 +264,8 @@ struct page {
|
|
|
#endif /* WANT_PAGE_VIRTUAL */
|
|
|
};
|
|
|
|
|
|
-#define page_private(page) ((page)->u.private)
|
|
|
-#define set_page_private(page, v) ((page)->u.private = (v))
|
|
|
+#define page_private(page) ((page)->private)
|
|
|
+#define set_page_private(page, v) ((page)->private = (v))
|
|
|
|
|
|
/*
|
|
|
* FIXME: take this include out, include page-flags.h in
|
|
@@ -815,7 +818,7 @@ static inline pmd_t *pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long a
|
|
|
* overflow into the next struct page (as it might with DEBUG_SPINLOCK).
|
|
|
* When freeing, reset page->mapping so free_pages_check won't complain.
|
|
|
*/
|
|
|
-#define __pte_lockptr(page) &((page)->u.ptl)
|
|
|
+#define __pte_lockptr(page) &((page)->ptl)
|
|
|
#define pte_lock_init(_page) do { \
|
|
|
spin_lock_init(__pte_lockptr(_page)); \
|
|
|
} while (0)
|