Lines Matching refs:page
83 struct page *page = pvec->pages[i]; in truncate_exceptional_pvec_entries() local
86 if (!xa_is_value(page)) { in truncate_exceptional_pvec_entries()
87 pvec->pages[j++] = page; in truncate_exceptional_pvec_entries()
99 __clear_shadow_entry(mapping, index, page); in truncate_exceptional_pvec_entries()
152 void do_invalidatepage(struct page *page, unsigned int offset, in do_invalidatepage() argument
155 void (*invalidatepage)(struct page *, unsigned int, unsigned int); in do_invalidatepage()
157 invalidatepage = page->mapping->a_ops->invalidatepage; in do_invalidatepage()
163 (*invalidatepage)(page, offset, length); in do_invalidatepage()
176 static void truncate_cleanup_page(struct page *page) in truncate_cleanup_page() argument
178 if (page_mapped(page)) in truncate_cleanup_page()
179 unmap_mapping_page(page); in truncate_cleanup_page()
181 if (page_has_private(page)) in truncate_cleanup_page()
182 do_invalidatepage(page, 0, thp_size(page)); in truncate_cleanup_page()
189 cancel_dirty_page(page); in truncate_cleanup_page()
190 ClearPageMappedToDisk(page); in truncate_cleanup_page()
202 invalidate_complete_page(struct address_space *mapping, struct page *page) in invalidate_complete_page() argument
206 if (page->mapping != mapping) in invalidate_complete_page()
209 if (page_has_private(page) && !try_to_release_page(page, 0)) in invalidate_complete_page()
212 ret = remove_mapping(mapping, page); in invalidate_complete_page()
217 int truncate_inode_page(struct address_space *mapping, struct page *page) in truncate_inode_page() argument
219 VM_BUG_ON_PAGE(PageTail(page), page); in truncate_inode_page()
221 if (page->mapping != mapping) in truncate_inode_page()
224 truncate_cleanup_page(page); in truncate_inode_page()
225 delete_from_page_cache(page); in truncate_inode_page()
232 int generic_error_remove_page(struct address_space *mapping, struct page *page) in generic_error_remove_page() argument
242 return truncate_inode_page(mapping, page); in generic_error_remove_page()
252 int invalidate_inode_page(struct page *page) in invalidate_inode_page() argument
254 struct address_space *mapping = page_mapping(page); in invalidate_inode_page()
257 if (PageDirty(page) || PageWriteback(page)) in invalidate_inode_page()
259 if (page_mapped(page)) in invalidate_inode_page()
261 return invalidate_complete_page(mapping, page); in invalidate_inode_page()
338 struct page *page = pvec.pages[i]; in truncate_inode_pages_range() local
345 if (xa_is_value(page)) in truncate_inode_pages_range()
348 if (!trylock_page(page)) in truncate_inode_pages_range()
350 WARN_ON(page_to_index(page) != index); in truncate_inode_pages_range()
351 if (PageWriteback(page)) { in truncate_inode_pages_range()
352 unlock_page(page); in truncate_inode_pages_range()
355 if (page->mapping != mapping) { in truncate_inode_pages_range()
356 unlock_page(page); in truncate_inode_pages_range()
359 pagevec_add(&locked_pvec, page); in truncate_inode_pages_range()
372 struct page *page = find_lock_page(mapping, start - 1); in truncate_inode_pages_range() local
373 if (page) { in truncate_inode_pages_range()
380 wait_on_page_writeback(page); in truncate_inode_pages_range()
381 zero_user_segment(page, partial_start, top); in truncate_inode_pages_range()
382 cleancache_invalidate_page(mapping, page); in truncate_inode_pages_range()
383 if (page_has_private(page)) in truncate_inode_pages_range()
384 do_invalidatepage(page, partial_start, in truncate_inode_pages_range()
386 unlock_page(page); in truncate_inode_pages_range()
387 put_page(page); in truncate_inode_pages_range()
391 struct page *page = find_lock_page(mapping, end); in truncate_inode_pages_range() local
392 if (page) { in truncate_inode_pages_range()
393 wait_on_page_writeback(page); in truncate_inode_pages_range()
394 zero_user_segment(page, 0, partial_end); in truncate_inode_pages_range()
395 cleancache_invalidate_page(mapping, page); in truncate_inode_pages_range()
396 if (page_has_private(page)) in truncate_inode_pages_range()
397 do_invalidatepage(page, 0, in truncate_inode_pages_range()
399 unlock_page(page); in truncate_inode_pages_range()
400 put_page(page); in truncate_inode_pages_range()
430 struct page *page = pvec.pages[i]; in truncate_inode_pages_range() local
440 if (xa_is_value(page)) in truncate_inode_pages_range()
443 lock_page(page); in truncate_inode_pages_range()
444 WARN_ON(page_to_index(page) != index); in truncate_inode_pages_range()
445 wait_on_page_writeback(page); in truncate_inode_pages_range()
446 truncate_inode_page(mapping, page); in truncate_inode_pages_range()
447 unlock_page(page); in truncate_inode_pages_range()
543 struct page *page = pvec.pages[i]; in __invalidate_mapping_pages() local
550 if (xa_is_value(page)) { in __invalidate_mapping_pages()
552 page); in __invalidate_mapping_pages()
556 if (!trylock_page(page)) in __invalidate_mapping_pages()
559 WARN_ON(page_to_index(page) != index); in __invalidate_mapping_pages()
562 if (PageTransTail(page)) { in __invalidate_mapping_pages()
563 unlock_page(page); in __invalidate_mapping_pages()
565 } else if (PageTransHuge(page)) { in __invalidate_mapping_pages()
574 unlock_page(page); in __invalidate_mapping_pages()
579 get_page(page); in __invalidate_mapping_pages()
589 ret = invalidate_inode_page(page); in __invalidate_mapping_pages()
590 unlock_page(page); in __invalidate_mapping_pages()
596 deactivate_file_page(page); in __invalidate_mapping_pages()
602 if (PageTransHuge(page)) in __invalidate_mapping_pages()
603 put_page(page); in __invalidate_mapping_pages()
655 invalidate_complete_page2(struct address_space *mapping, struct page *page) in invalidate_complete_page2() argument
659 if (page->mapping != mapping) in invalidate_complete_page2()
662 if (page_has_private(page) && !try_to_release_page(page, GFP_KERNEL)) in invalidate_complete_page2()
666 if (PageDirty(page)) in invalidate_complete_page2()
669 BUG_ON(page_has_private(page)); in invalidate_complete_page2()
670 __delete_from_page_cache(page, NULL); in invalidate_complete_page2()
674 mapping->a_ops->freepage(page); in invalidate_complete_page2()
676 put_page(page); /* pagecache ref */ in invalidate_complete_page2()
683 static int do_launder_page(struct address_space *mapping, struct page *page) in do_launder_page() argument
685 if (!PageDirty(page)) in do_launder_page()
687 if (page->mapping != mapping || mapping->a_ops->launder_page == NULL) in do_launder_page()
689 return mapping->a_ops->launder_page(page); in do_launder_page()
723 struct page *page = pvec.pages[i]; in invalidate_inode_pages2_range() local
730 if (xa_is_value(page)) { in invalidate_inode_pages2_range()
732 index, page)) in invalidate_inode_pages2_range()
737 if (!did_range_unmap && page_mapped(page)) { in invalidate_inode_pages2_range()
747 lock_page(page); in invalidate_inode_pages2_range()
748 WARN_ON(page_to_index(page) != index); in invalidate_inode_pages2_range()
749 if (page->mapping != mapping) { in invalidate_inode_pages2_range()
750 unlock_page(page); in invalidate_inode_pages2_range()
753 wait_on_page_writeback(page); in invalidate_inode_pages2_range()
755 if (page_mapped(page)) in invalidate_inode_pages2_range()
756 unmap_mapping_page(page); in invalidate_inode_pages2_range()
757 BUG_ON(page_mapped(page)); in invalidate_inode_pages2_range()
759 ret2 = do_launder_page(mapping, page); in invalidate_inode_pages2_range()
761 if (!invalidate_complete_page2(mapping, page)) in invalidate_inode_pages2_range()
766 unlock_page(page); in invalidate_inode_pages2_range()
886 struct page *page; in pagecache_isize_extended() local
899 page = find_lock_page(inode->i_mapping, index); in pagecache_isize_extended()
901 if (!page) in pagecache_isize_extended()
907 if (page_mkclean(page)) in pagecache_isize_extended()
908 set_page_dirty(page); in pagecache_isize_extended()
909 unlock_page(page); in pagecache_isize_extended()
910 put_page(page); in pagecache_isize_extended()