|
@@ -489,8 +489,10 @@ __find_buddy_index(unsigned long page_idx, unsigned int order)
|
|
|
* (c) a page and its buddy have the same order &&
|
|
|
* (d) a page and its buddy are in the same zone.
|
|
|
*
|
|
|
- * For recording whether a page is in the buddy system, we set ->_mapcount -2.
|
|
|
- * Setting, clearing, and testing _mapcount -2 is serialized by zone->lock.
|
|
|
+ * For recording whether a page is in the buddy system, we set ->_mapcount
|
|
|
+ * PAGE_BUDDY_MAPCOUNT_VALUE.
|
|
|
+ * Setting, clearing, and testing _mapcount PAGE_BUDDY_MAPCOUNT_VALUE is
|
|
|
+ * serialized by zone->lock.
|
|
|
*
|
|
|
* For recording page's order, we use page_private(page).
|
|
|
*/
|
|
@@ -528,8 +530,9 @@ static inline int page_is_buddy(struct page *page, struct page *buddy,
|
|
|
* as necessary, plus some accounting needed to play nicely with other
|
|
|
* parts of the VM system.
|
|
|
* At each level, we keep a list of pages, which are heads of continuous
|
|
|
- * free pages of length of (1 << order) and marked with _mapcount -2. Page's
|
|
|
- * order is recorded in page_private(page) field.
|
|
|
+ * free pages of length of (1 << order) and marked with _mapcount
|
|
|
+ * PAGE_BUDDY_MAPCOUNT_VALUE. Page's order is recorded in page_private(page)
|
|
|
+ * field.
|
|
|
* So when we are allocating or freeing one, we can derive the state of the
|
|
|
* other. That is, if we allocate a small block, and both were
|
|
|
* free, the remainder of the region must be split into blocks.
|