diff options
Diffstat (limited to 'include/linux/page-flags.h')
| -rw-r--r-- | include/linux/page-flags.h | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h index 5748642e9f36..9d7921dd50f0 100644 --- a/include/linux/page-flags.h +++ b/include/linux/page-flags.h | |||
| @@ -13,24 +13,25 @@ | |||
| 13 | * PG_reserved is set for special pages, which can never be swapped out. Some | 13 | * PG_reserved is set for special pages, which can never be swapped out. Some |
| 14 | * of them might not even exist (eg empty_bad_page)... | 14 | * of them might not even exist (eg empty_bad_page)... |
| 15 | * | 15 | * |
| 16 | * The PG_private bitflag is set if page->private contains a valid value. | 16 | * The PG_private bitflag is set on pagecache pages if they contain filesystem |
| 17 | * specific data (which is normally at page->private). It can be used by | ||
| 18 | * private allocations for its own usage. | ||
| 17 | * | 19 | * |
| 18 | * During disk I/O, PG_locked is used. This bit is set before I/O and | 20 | * During initiation of disk I/O, PG_locked is set. This bit is set before I/O |
| 19 | * reset when I/O completes. page_waitqueue(page) is a wait queue of all tasks | 21 | * and cleared when writeback _starts_ or when read _completes_. PG_writeback |
| 20 | * waiting for the I/O on this page to complete. | 22 | * is set before writeback starts and cleared when it finishes. |
| 23 | * | ||
| 24 | * PG_locked also pins a page in pagecache, and blocks truncation of the file | ||
| 25 | * while it is held. | ||
| 26 | * | ||
| 27 | * page_waitqueue(page) is a wait queue of all tasks waiting for the page | ||
| 28 | * to become unlocked. | ||
| 21 | * | 29 | * |
| 22 | * PG_uptodate tells whether the page's contents is valid. When a read | 30 | * PG_uptodate tells whether the page's contents is valid. When a read |
| 23 | * completes, the page becomes uptodate, unless a disk I/O error happened. | 31 | * completes, the page becomes uptodate, unless a disk I/O error happened. |
| 24 | * | 32 | * |
| 25 | * For choosing which pages to swap out, inode pages carry a PG_referenced bit, | 33 | * PG_referenced, PG_reclaim are used for page reclaim for anonymous and |
| 26 | * which is set any time the system accesses that page through the (mapping, | 34 | * file-backed pagecache (see mm/vmscan.c). |
| 27 | * index) hash table. This referenced bit, together with the referenced bit | ||
| 28 | * in the page tables, is used to manipulate page->age and move the page across | ||
| 29 | * the active, inactive_dirty and inactive_clean lists. | ||
| 30 | * | ||
| 31 | * Note that the referenced bit, the page->lru list_head and the active, | ||
| 32 | * inactive_dirty and inactive_clean lists are protected by the | ||
| 33 | * zone->lru_lock, and *NOT* by the usual PG_locked bit! | ||
| 34 | * | 35 | * |
| 35 | * PG_error is set to indicate that an I/O error occurred on this page. | 36 | * PG_error is set to indicate that an I/O error occurred on this page. |
| 36 | * | 37 | * |
| @@ -42,6 +43,10 @@ | |||
| 42 | * space, they need to be kmapped separately for doing IO on the pages. The | 43 | * space, they need to be kmapped separately for doing IO on the pages. The |
| 43 | * struct page (these bits with information) are always mapped into kernel | 44 | * struct page (these bits with information) are always mapped into kernel |
| 44 | * address space... | 45 | * address space... |
| 46 | * | ||
| 47 | * PG_buddy is set to indicate that the page is free and in the buddy system | ||
| 48 | * (see mm/page_alloc.c). | ||
| 49 | * | ||
| 45 | */ | 50 | */ |
| 46 | 51 | ||
| 47 | /* | 52 | /* |
| @@ -74,7 +79,7 @@ | |||
| 74 | #define PG_checked 8 /* kill me in 2.5.<early>. */ | 79 | #define PG_checked 8 /* kill me in 2.5.<early>. */ |
| 75 | #define PG_arch_1 9 | 80 | #define PG_arch_1 9 |
| 76 | #define PG_reserved 10 | 81 | #define PG_reserved 10 |
| 77 | #define PG_private 11 /* Has something at ->private */ | 82 | #define PG_private 11 /* If pagecache, has fs-private data */ |
| 78 | 83 | ||
| 79 | #define PG_writeback 12 /* Page is under writeback */ | 84 | #define PG_writeback 12 /* Page is under writeback */ |
| 80 | #define PG_nosave 13 /* Used for system suspend/resume */ | 85 | #define PG_nosave 13 /* Used for system suspend/resume */ |
| @@ -83,7 +88,7 @@ | |||
| 83 | 88 | ||
| 84 | #define PG_mappedtodisk 16 /* Has blocks allocated on-disk */ | 89 | #define PG_mappedtodisk 16 /* Has blocks allocated on-disk */ |
| 85 | #define PG_reclaim 17 /* To be reclaimed asap */ | 90 | #define PG_reclaim 17 /* To be reclaimed asap */ |
| 86 | #define PG_nosave_free 18 /* Free, should not be written */ | 91 | #define PG_nosave_free 18 /* Used for system suspend/resume */ |
| 87 | #define PG_buddy 19 /* Page is free, on buddy lists */ | 92 | #define PG_buddy 19 /* Page is free, on buddy lists */ |
| 88 | 93 | ||
| 89 | 94 | ||
