diff options
Diffstat (limited to 'include/linux/mm_inline.h')
| -rw-r--r-- | include/linux/mm_inline.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/include/linux/mm_inline.h b/include/linux/mm_inline.h index 47762ca695a5..49cc68af01f8 100644 --- a/include/linux/mm_inline.h +++ b/include/linux/mm_inline.h | |||
| @@ -38,3 +38,25 @@ del_page_from_lru(struct zone *zone, struct page *page) | |||
| 38 | zone->nr_inactive--; | 38 | zone->nr_inactive--; |
| 39 | } | 39 | } |
| 40 | } | 40 | } |
| 41 | |||
| 42 | /* | ||
| 43 | * Isolate one page from the LRU lists. | ||
| 44 | * | ||
| 45 | * - zone->lru_lock must be held | ||
| 46 | */ | ||
| 47 | static inline int __isolate_lru_page(struct page *page) | ||
| 48 | { | ||
| 49 | if (unlikely(!TestClearPageLRU(page))) | ||
| 50 | return 0; | ||
| 51 | |||
| 52 | if (get_page_testone(page)) { | ||
| 53 | /* | ||
| 54 | * It is being freed elsewhere | ||
| 55 | */ | ||
| 56 | __put_page(page); | ||
| 57 | SetPageLRU(page); | ||
| 58 | return -ENOENT; | ||
| 59 | } | ||
| 60 | |||
| 61 | return 1; | ||
| 62 | } | ||
