Lines Matching refs:page
81 void do_invalidatepage(struct page *page, unsigned int offset, in do_invalidatepage() argument
84 void (*invalidatepage)(struct page *, unsigned int, unsigned int); in do_invalidatepage()
86 invalidatepage = page->mapping->a_ops->invalidatepage; in do_invalidatepage()
92 (*invalidatepage)(page, offset, length); in do_invalidatepage()
106 truncate_complete_page(struct address_space *mapping, struct page *page) in truncate_complete_page() argument
108 if (page->mapping != mapping) in truncate_complete_page()
111 if (page_has_private(page)) in truncate_complete_page()
112 do_invalidatepage(page, 0, PAGE_CACHE_SIZE); in truncate_complete_page()
119 if (TestClearPageDirty(page)) in truncate_complete_page()
120 account_page_cleaned(page, mapping); in truncate_complete_page()
122 ClearPageMappedToDisk(page); in truncate_complete_page()
123 delete_from_page_cache(page); in truncate_complete_page()
136 invalidate_complete_page(struct address_space *mapping, struct page *page) in invalidate_complete_page() argument
140 if (page->mapping != mapping) in invalidate_complete_page()
143 if (page_has_private(page) && !try_to_release_page(page, 0)) in invalidate_complete_page()
146 ret = remove_mapping(mapping, page); in invalidate_complete_page()
151 int truncate_inode_page(struct address_space *mapping, struct page *page) in truncate_inode_page() argument
153 if (page_mapped(page)) { in truncate_inode_page()
155 (loff_t)page->index << PAGE_CACHE_SHIFT, in truncate_inode_page()
158 return truncate_complete_page(mapping, page); in truncate_inode_page()
164 int generic_error_remove_page(struct address_space *mapping, struct page *page) in generic_error_remove_page() argument
174 return truncate_inode_page(mapping, page); in generic_error_remove_page()
184 int invalidate_inode_page(struct page *page) in invalidate_inode_page() argument
186 struct address_space *mapping = page_mapping(page); in invalidate_inode_page()
189 if (PageDirty(page) || PageWriteback(page)) in invalidate_inode_page()
191 if (page_mapped(page)) in invalidate_inode_page()
193 return invalidate_complete_page(mapping, page); in invalidate_inode_page()
263 struct page *page = pvec.pages[i]; in truncate_inode_pages_range() local
270 if (radix_tree_exceptional_entry(page)) { in truncate_inode_pages_range()
271 clear_exceptional_entry(mapping, index, page); in truncate_inode_pages_range()
275 if (!trylock_page(page)) in truncate_inode_pages_range()
277 WARN_ON(page->index != index); in truncate_inode_pages_range()
278 if (PageWriteback(page)) { in truncate_inode_pages_range()
279 unlock_page(page); in truncate_inode_pages_range()
282 truncate_inode_page(mapping, page); in truncate_inode_pages_range()
283 unlock_page(page); in truncate_inode_pages_range()
292 struct page *page = find_lock_page(mapping, start - 1); in truncate_inode_pages_range() local
293 if (page) { in truncate_inode_pages_range()
300 wait_on_page_writeback(page); in truncate_inode_pages_range()
301 zero_user_segment(page, partial_start, top); in truncate_inode_pages_range()
302 cleancache_invalidate_page(mapping, page); in truncate_inode_pages_range()
303 if (page_has_private(page)) in truncate_inode_pages_range()
304 do_invalidatepage(page, partial_start, in truncate_inode_pages_range()
306 unlock_page(page); in truncate_inode_pages_range()
307 page_cache_release(page); in truncate_inode_pages_range()
311 struct page *page = find_lock_page(mapping, end); in truncate_inode_pages_range() local
312 if (page) { in truncate_inode_pages_range()
313 wait_on_page_writeback(page); in truncate_inode_pages_range()
314 zero_user_segment(page, 0, partial_end); in truncate_inode_pages_range()
315 cleancache_invalidate_page(mapping, page); in truncate_inode_pages_range()
316 if (page_has_private(page)) in truncate_inode_pages_range()
317 do_invalidatepage(page, 0, in truncate_inode_pages_range()
319 unlock_page(page); in truncate_inode_pages_range()
320 page_cache_release(page); in truncate_inode_pages_range()
349 struct page *page = pvec.pages[i]; in truncate_inode_pages_range() local
359 if (radix_tree_exceptional_entry(page)) { in truncate_inode_pages_range()
360 clear_exceptional_entry(mapping, index, page); in truncate_inode_pages_range()
364 lock_page(page); in truncate_inode_pages_range()
365 WARN_ON(page->index != index); in truncate_inode_pages_range()
366 wait_on_page_writeback(page); in truncate_inode_pages_range()
367 truncate_inode_page(mapping, page); in truncate_inode_pages_range()
368 unlock_page(page); in truncate_inode_pages_range()
471 struct page *page = pvec.pages[i]; in invalidate_mapping_pages() local
478 if (radix_tree_exceptional_entry(page)) { in invalidate_mapping_pages()
479 clear_exceptional_entry(mapping, index, page); in invalidate_mapping_pages()
483 if (!trylock_page(page)) in invalidate_mapping_pages()
485 WARN_ON(page->index != index); in invalidate_mapping_pages()
486 ret = invalidate_inode_page(page); in invalidate_mapping_pages()
487 unlock_page(page); in invalidate_mapping_pages()
493 deactivate_file_page(page); in invalidate_mapping_pages()
513 invalidate_complete_page2(struct address_space *mapping, struct page *page) in invalidate_complete_page2() argument
515 if (page->mapping != mapping) in invalidate_complete_page2()
518 if (page_has_private(page) && !try_to_release_page(page, GFP_KERNEL)) in invalidate_complete_page2()
522 if (PageDirty(page)) in invalidate_complete_page2()
525 BUG_ON(page_has_private(page)); in invalidate_complete_page2()
526 __delete_from_page_cache(page, NULL); in invalidate_complete_page2()
530 mapping->a_ops->freepage(page); in invalidate_complete_page2()
532 page_cache_release(page); /* pagecache ref */ in invalidate_complete_page2()
539 static int do_launder_page(struct address_space *mapping, struct page *page) in do_launder_page() argument
541 if (!PageDirty(page)) in do_launder_page()
543 if (page->mapping != mapping || mapping->a_ops->launder_page == NULL) in do_launder_page()
545 return mapping->a_ops->launder_page(page); in do_launder_page()
577 struct page *page = pvec.pages[i]; in invalidate_inode_pages2_range() local
584 if (radix_tree_exceptional_entry(page)) { in invalidate_inode_pages2_range()
585 clear_exceptional_entry(mapping, index, page); in invalidate_inode_pages2_range()
589 lock_page(page); in invalidate_inode_pages2_range()
590 WARN_ON(page->index != index); in invalidate_inode_pages2_range()
591 if (page->mapping != mapping) { in invalidate_inode_pages2_range()
592 unlock_page(page); in invalidate_inode_pages2_range()
595 wait_on_page_writeback(page); in invalidate_inode_pages2_range()
596 if (page_mapped(page)) { in invalidate_inode_pages2_range()
616 BUG_ON(page_mapped(page)); in invalidate_inode_pages2_range()
617 ret2 = do_launder_page(mapping, page); in invalidate_inode_pages2_range()
619 if (!invalidate_complete_page2(mapping, page)) in invalidate_inode_pages2_range()
624 unlock_page(page); in invalidate_inode_pages2_range()
733 struct page *page; in pagecache_isize_extended() local
746 page = find_lock_page(inode->i_mapping, index); in pagecache_isize_extended()
748 if (!page) in pagecache_isize_extended()
754 if (page_mkclean(page)) in pagecache_isize_extended()
755 set_page_dirty(page); in pagecache_isize_extended()
756 unlock_page(page); in pagecache_isize_extended()
757 page_cache_release(page); in pagecache_isize_extended()