Lines Matching refs:page
79 int __add_to_swap_cache(struct page *page, swp_entry_t entry) in __add_to_swap_cache() argument
84 VM_BUG_ON_PAGE(!PageLocked(page), page); in __add_to_swap_cache()
85 VM_BUG_ON_PAGE(PageSwapCache(page), page); in __add_to_swap_cache()
86 VM_BUG_ON_PAGE(!PageSwapBacked(page), page); in __add_to_swap_cache()
88 page_cache_get(page); in __add_to_swap_cache()
89 SetPageSwapCache(page); in __add_to_swap_cache()
90 set_page_private(page, entry.val); in __add_to_swap_cache()
95 entry.val, page); in __add_to_swap_cache()
98 __inc_zone_page_state(page, NR_FILE_PAGES); in __add_to_swap_cache()
110 set_page_private(page, 0UL); in __add_to_swap_cache()
111 ClearPageSwapCache(page); in __add_to_swap_cache()
112 page_cache_release(page); in __add_to_swap_cache()
119 int add_to_swap_cache(struct page *page, swp_entry_t entry, gfp_t gfp_mask) in add_to_swap_cache() argument
125 error = __add_to_swap_cache(page, entry); in add_to_swap_cache()
135 void __delete_from_swap_cache(struct page *page) in __delete_from_swap_cache() argument
140 VM_BUG_ON_PAGE(!PageLocked(page), page); in __delete_from_swap_cache()
141 VM_BUG_ON_PAGE(!PageSwapCache(page), page); in __delete_from_swap_cache()
142 VM_BUG_ON_PAGE(PageWriteback(page), page); in __delete_from_swap_cache()
144 entry.val = page_private(page); in __delete_from_swap_cache()
146 radix_tree_delete(&address_space->page_tree, page_private(page)); in __delete_from_swap_cache()
147 set_page_private(page, 0); in __delete_from_swap_cache()
148 ClearPageSwapCache(page); in __delete_from_swap_cache()
150 __dec_zone_page_state(page, NR_FILE_PAGES); in __delete_from_swap_cache()
161 int add_to_swap(struct page *page, struct list_head *list) in add_to_swap() argument
166 VM_BUG_ON_PAGE(!PageLocked(page), page); in add_to_swap()
167 VM_BUG_ON_PAGE(!PageUptodate(page), page); in add_to_swap()
173 if (unlikely(PageTransHuge(page))) in add_to_swap()
174 if (unlikely(split_huge_page_to_list(page, list))) { in add_to_swap()
190 err = add_to_swap_cache(page, entry, in add_to_swap()
194 SetPageDirty(page); in add_to_swap()
212 void delete_from_swap_cache(struct page *page) in delete_from_swap_cache() argument
217 entry.val = page_private(page); in delete_from_swap_cache()
221 __delete_from_swap_cache(page); in delete_from_swap_cache()
225 page_cache_release(page); in delete_from_swap_cache()
236 static inline void free_swap_cache(struct page *page) in free_swap_cache() argument
238 if (PageSwapCache(page) && !page_mapped(page) && trylock_page(page)) { in free_swap_cache()
239 try_to_free_swap(page); in free_swap_cache()
240 unlock_page(page); in free_swap_cache()
248 void free_page_and_swap_cache(struct page *page) in free_page_and_swap_cache() argument
250 free_swap_cache(page); in free_page_and_swap_cache()
251 page_cache_release(page); in free_page_and_swap_cache()
258 void free_pages_and_swap_cache(struct page **pages, int nr) in free_pages_and_swap_cache()
260 struct page **pagep = pages; in free_pages_and_swap_cache()
275 struct page * lookup_swap_cache(swp_entry_t entry) in lookup_swap_cache()
277 struct page *page; in lookup_swap_cache() local
279 page = find_get_page(swap_address_space(entry), entry.val); in lookup_swap_cache()
281 if (page) { in lookup_swap_cache()
283 if (TestClearPageReadahead(page)) in lookup_swap_cache()
288 return page; in lookup_swap_cache()
297 struct page *read_swap_cache_async(swp_entry_t entry, gfp_t gfp_mask, in read_swap_cache_async()
300 struct page *found_page, *new_page = NULL; in read_swap_cache_async()
450 struct page *swapin_readahead(swp_entry_t entry, gfp_t gfp_mask, in swapin_readahead()
453 struct page *page; in swapin_readahead() local
473 page = read_swap_cache_async(swp_entry(swp_type(entry), offset), in swapin_readahead()
475 if (!page) in swapin_readahead()
478 SetPageReadahead(page); in swapin_readahead()
479 page_cache_release(page); in swapin_readahead()