Lines Matching refs:page
41 static void gfs2_page_add_databufs(struct gfs2_inode *ip, struct page *page, in gfs2_page_add_databufs() argument
44 struct buffer_head *head = page_buffers(page); in gfs2_page_add_databufs()
97 static int gfs2_writepage_common(struct page *page, in gfs2_writepage_common() argument
100 struct inode *inode = page->mapping->host; in gfs2_writepage_common()
113 if (page->index > end_index || (page->index == end_index && !offset)) { in gfs2_writepage_common()
114 page->mapping->a_ops->invalidatepage(page, 0, PAGE_CACHE_SIZE); in gfs2_writepage_common()
119 redirty_page_for_writepage(wbc, page); in gfs2_writepage_common()
121 unlock_page(page); in gfs2_writepage_common()
132 static int gfs2_writepage(struct page *page, struct writeback_control *wbc) in gfs2_writepage() argument
136 ret = gfs2_writepage_common(page, wbc); in gfs2_writepage()
140 return nobh_writepage(page, gfs2_get_block_noalloc, wbc); in gfs2_writepage()
154 static int __gfs2_jdata_writepage(struct page *page, struct writeback_control *wbc) in __gfs2_jdata_writepage() argument
156 struct inode *inode = page->mapping->host; in __gfs2_jdata_writepage()
160 if (PageChecked(page)) { in __gfs2_jdata_writepage()
161 ClearPageChecked(page); in __gfs2_jdata_writepage()
162 if (!page_has_buffers(page)) { in __gfs2_jdata_writepage()
163 create_empty_buffers(page, inode->i_sb->s_blocksize, in __gfs2_jdata_writepage()
166 gfs2_page_add_databufs(ip, page, 0, sdp->sd_vfs->s_blocksize-1); in __gfs2_jdata_writepage()
168 return block_write_full_page(page, gfs2_get_block_noalloc, wbc); in __gfs2_jdata_writepage()
180 static int gfs2_jdata_writepage(struct page *page, struct writeback_control *wbc) in gfs2_jdata_writepage() argument
182 struct inode *inode = page->mapping->host; in gfs2_jdata_writepage()
187 if (PageChecked(page)) { in gfs2_jdata_writepage()
195 ret = gfs2_writepage_common(page, wbc); in gfs2_jdata_writepage()
197 ret = __gfs2_jdata_writepage(page, wbc); in gfs2_jdata_writepage()
203 redirty_page_for_writepage(wbc, page); in gfs2_jdata_writepage()
204 unlock_page(page); in gfs2_jdata_writepage()
250 struct page *page = pvec->pages[i]; in gfs2_write_jdata_pagevec() local
259 if (page->index > end) { in gfs2_write_jdata_pagevec()
268 *done_index = page->index; in gfs2_write_jdata_pagevec()
270 lock_page(page); in gfs2_write_jdata_pagevec()
272 if (unlikely(page->mapping != mapping)) { in gfs2_write_jdata_pagevec()
274 unlock_page(page); in gfs2_write_jdata_pagevec()
278 if (!PageDirty(page)) { in gfs2_write_jdata_pagevec()
283 if (PageWriteback(page)) { in gfs2_write_jdata_pagevec()
285 wait_on_page_writeback(page); in gfs2_write_jdata_pagevec()
290 BUG_ON(PageWriteback(page)); in gfs2_write_jdata_pagevec()
291 if (!clear_page_dirty_for_io(page)) in gfs2_write_jdata_pagevec()
296 ret = __gfs2_jdata_writepage(page, wbc); in gfs2_write_jdata_pagevec()
299 unlock_page(page); in gfs2_write_jdata_pagevec()
312 *done_index = page->index + 1; in gfs2_write_jdata_pagevec()
448 static int stuffed_readpage(struct gfs2_inode *ip, struct page *page) in stuffed_readpage() argument
460 if (unlikely(page->index)) { in stuffed_readpage()
461 zero_user(page, 0, PAGE_CACHE_SIZE); in stuffed_readpage()
462 SetPageUptodate(page); in stuffed_readpage()
470 kaddr = kmap_atomic(page); in stuffed_readpage()
476 flush_dcache_page(page); in stuffed_readpage()
478 SetPageUptodate(page); in stuffed_readpage()
495 static int __gfs2_readpage(void *file, struct page *page) in __gfs2_readpage() argument
497 struct gfs2_inode *ip = GFS2_I(page->mapping->host); in __gfs2_readpage()
498 struct gfs2_sbd *sdp = GFS2_SB(page->mapping->host); in __gfs2_readpage()
502 error = stuffed_readpage(ip, page); in __gfs2_readpage()
503 unlock_page(page); in __gfs2_readpage()
505 error = mpage_readpage(page, gfs2_block_map); in __gfs2_readpage()
524 static int gfs2_readpage(struct file *file, struct page *page) in gfs2_readpage() argument
526 struct address_space *mapping = page->mapping; in gfs2_readpage()
531 unlock_page(page); in gfs2_readpage()
537 lock_page(page); in gfs2_readpage()
538 if (page->mapping == mapping && !PageUptodate(page)) in gfs2_readpage()
539 error = __gfs2_readpage(file, page); in gfs2_readpage()
541 unlock_page(page); in gfs2_readpage()
546 lock_page(page); in gfs2_readpage()
567 struct page *page; in gfs2_internal_read() local
574 page = read_cache_page(mapping, index, __gfs2_readpage, NULL); in gfs2_internal_read()
575 if (IS_ERR(page)) in gfs2_internal_read()
576 return PTR_ERR(page); in gfs2_internal_read()
577 p = kmap_atomic(page); in gfs2_internal_read()
580 page_cache_release(page); in gfs2_internal_read()
645 struct page **pagep, void **fsdata) in gfs2_write_begin()
656 struct page *page; in gfs2_write_begin() local
706 page = grab_cache_page_write_begin(mapping, index, flags); in gfs2_write_begin()
707 *pagep = page; in gfs2_write_begin()
708 if (unlikely(!page)) in gfs2_write_begin()
714 error = gfs2_unstuff_dinode(ip, page); in gfs2_write_begin()
717 } else if (!PageUptodate(page)) { in gfs2_write_begin()
718 error = stuffed_readpage(ip, page); in gfs2_write_begin()
724 error = __block_write_begin(page, from, len, gfs2_block_map); in gfs2_write_begin()
729 unlock_page(page); in gfs2_write_begin()
730 page_cache_release(page); in gfs2_write_begin()
811 struct page *page) in gfs2_stuffed_write_end() argument
821 kaddr = kmap_atomic(page); in gfs2_stuffed_write_end()
824 flush_dcache_page(page); in gfs2_stuffed_write_end()
827 if (!PageUptodate(page)) in gfs2_stuffed_write_end()
828 SetPageUptodate(page); in gfs2_stuffed_write_end()
829 unlock_page(page); in gfs2_stuffed_write_end()
830 page_cache_release(page); in gfs2_stuffed_write_end()
873 struct page *page, void *fsdata) in gfs2_write_end() argument
875 struct inode *inode = page->mapping->host; in gfs2_write_end()
890 unlock_page(page); in gfs2_write_end()
891 page_cache_release(page); in gfs2_write_end()
896 return gfs2_stuffed_write_end(inode, dibh, pos, len, copied, page); in gfs2_write_end()
899 gfs2_page_add_databufs(ip, page, from, to); in gfs2_write_end()
901 ret = generic_write_end(file, mapping, pos, len, copied, page, fsdata); in gfs2_write_end()
935 static int gfs2_set_page_dirty(struct page *page) in gfs2_set_page_dirty() argument
937 SetPageChecked(page); in gfs2_set_page_dirty()
938 return __set_page_dirty_buffers(page); in gfs2_set_page_dirty()
990 static void gfs2_invalidatepage(struct page *page, unsigned int offset, in gfs2_invalidatepage() argument
993 struct gfs2_sbd *sdp = GFS2_SB(page->mapping->host); in gfs2_invalidatepage()
999 BUG_ON(!PageLocked(page)); in gfs2_invalidatepage()
1001 ClearPageChecked(page); in gfs2_invalidatepage()
1002 if (!page_has_buffers(page)) in gfs2_invalidatepage()
1005 bh = head = page_buffers(page); in gfs2_invalidatepage()
1017 try_to_release_page(page, 0); in gfs2_invalidatepage()
1120 int gfs2_releasepage(struct page *page, gfp_t gfp_mask) in gfs2_releasepage() argument
1122 struct address_space *mapping = page->mapping; in gfs2_releasepage()
1127 if (!page_has_buffers(page)) in gfs2_releasepage()
1132 head = bh = page_buffers(page); in gfs2_releasepage()
1145 head = bh = page_buffers(page); in gfs2_releasepage()
1161 return try_to_free_buffers(page); in gfs2_releasepage()