Lines Matching refs:page
55 struct page **pages;
63 struct page *that_locked_page;
113 pcol->pages = kmalloc(pages * sizeof(struct page *), in pcol_try_alloc()
137 static int pcol_add_page(struct page_collect *pcol, struct page *page, in pcol_add_page() argument
143 pcol->pages[pcol->nr_pages++] = page; in pcol_add_page()
149 static int update_read_page(struct page *page, int ret) in update_read_page() argument
154 SetPageUptodate(page); in update_read_page()
155 if (PageError(page)) in update_read_page()
156 ClearPageError(page); in update_read_page()
164 clear_highpage(page); in update_read_page()
166 SetPageUptodate(page); in update_read_page()
167 if (PageError(page)) in update_read_page()
168 ClearPageError(page); in update_read_page()
175 SetPageError(page); in update_read_page()
180 static void update_write_page(struct page *page, int ret) in update_write_page() argument
186 mapping_set_error(page->mapping, ret); in update_write_page()
187 SetPageError(page); in update_write_page()
189 end_page_writeback(page); in update_write_page()
215 struct page *page = pcol->pages[i]; in __readpages_done() local
216 struct inode *inode = page->mapping->host; in __readpages_done()
228 inode->i_ino, page->index, in __readpages_done()
231 ret = update_read_page(page, page_stat); in __readpages_done()
233 unlock_page(page); in __readpages_done()
257 struct page *page = pcol->pages[i]; in _unlock_pcol_pages() local
260 update_read_page(page, ret); in _unlock_pcol_pages()
262 update_write_page(page, ret); in _unlock_pcol_pages()
264 unlock_page(page); in _unlock_pcol_pages()
275 struct page **src_page; in _maybe_not_all_in_one_io()
380 static int readpage_strip(void *data, struct page *page) in readpage_strip() argument
390 BUG_ON(!PageLocked(page)); in readpage_strip()
393 if (PageUptodate(page)) in readpage_strip()
395 page->index); in readpage_strip()
397 pcol->that_locked_page = page; in readpage_strip()
399 if (page->index < end_index) in readpage_strip()
401 else if (page->index == end_index) in readpage_strip()
410 clear_highpage(page); in readpage_strip()
412 SetPageUptodate(page); in readpage_strip()
413 if (PageError(page)) in readpage_strip()
414 ClearPageError(page); in readpage_strip()
417 unlock_page(page); in readpage_strip()
421 pcol->read_4_write, page->index, end_index); in readpage_strip()
429 pcol->pg_first = page->index; in readpage_strip()
431 page->index)) { in readpage_strip()
446 zero_user(page, len, PAGE_CACHE_SIZE - len); in readpage_strip()
449 inode->i_ino, page->index, len); in readpage_strip()
451 ret = pcol_add_page(pcol, page, len); in readpage_strip()
455 page, len, pcol->nr_pages, pcol->length); in readpage_strip()
469 unlock_page(page); in readpage_strip()
494 static int _readpage(struct page *page, bool read_4_write) in _readpage() argument
499 _pcol_init(&pcol, 1, page->mapping->host); in _readpage()
502 ret = readpage_strip(&pcol, page); in _readpage()
514 static int exofs_readpage(struct file *file, struct page *page) in exofs_readpage() argument
516 return _readpage(page, false); in exofs_readpage()
543 struct page *page = pcol->pages[i]; in writepages_done() local
544 struct inode *inode = page->mapping->host; in writepages_done()
555 update_write_page(page, page_stat); in writepages_done()
556 unlock_page(page); in writepages_done()
558 inode->i_ino, page->index, page_stat); in writepages_done()
568 static struct page *__r4w_get_page(void *priv, u64 offset, bool *uptodate) in __r4w_get_page()
575 struct page *page; in __r4w_get_page() local
584 page = find_get_page(pcol->inode->i_mapping, index); in __r4w_get_page()
585 if (!page) { in __r4w_get_page()
586 page = find_or_create_page(pcol->inode->i_mapping, in __r4w_get_page()
588 if (unlikely(!page)) { in __r4w_get_page()
593 unlock_page(page); in __r4w_get_page()
595 *uptodate = PageUptodate(page); in __r4w_get_page()
597 return page; in __r4w_get_page()
606 static void __r4w_put_page(void *priv, struct page *page) in __r4w_put_page() argument
610 if ((pcol->that_locked_page != page) && (ZERO_PAGE(0) != page)) { in __r4w_put_page()
611 EXOFS_DBGMSG2("index=0x%lx\n", page->index); in __r4w_put_page()
612 page_cache_release(page); in __r4w_put_page()
616 ZERO_PAGE(0) == page ? -1 : page->index); in __r4w_put_page()
692 static int writepage_strip(struct page *page, in writepage_strip() argument
703 BUG_ON(!PageLocked(page)); in writepage_strip()
709 if (page->index < end_index) in writepage_strip()
715 if (page->index > end_index || !len) { in writepage_strip()
722 if (PageError(page)) in writepage_strip()
723 ClearPageError(page); in writepage_strip()
724 unlock_page(page); in writepage_strip()
727 inode->i_ino, page->index); in writepage_strip()
735 pcol->pg_first = page->index; in writepage_strip()
737 page->index)) { in writepage_strip()
744 inode->i_ino, page->index); in writepage_strip()
755 inode->i_ino, page->index, len); in writepage_strip()
757 ret = pcol_add_page(pcol, page, len); in writepage_strip()
773 BUG_ON(PageWriteback(page)); in writepage_strip()
774 set_page_writeback(page); in writepage_strip()
780 inode->i_ino, page->index, ret); in writepage_strip()
781 set_bit(AS_EIO, &page->mapping->flags); in writepage_strip()
782 unlock_page(page); in writepage_strip()
830 struct page *page = pcol.pages[i]; in exofs_writepages() local
832 end_page_writeback(page); in exofs_writepages()
833 set_page_dirty(page); in exofs_writepages()
834 unlock_page(page); in exofs_writepages()
866 struct page **pagep, void **fsdata) in exofs_write_begin()
869 struct page *page; in exofs_write_begin() local
871 page = *pagep; in exofs_write_begin()
872 if (page == NULL) { in exofs_write_begin()
880 page = *pagep; in exofs_write_begin()
884 if (!PageUptodate(page) && (len != PAGE_CACHE_SIZE)) { in exofs_write_begin()
889 if (page->index < end_index) in exofs_write_begin()
891 else if (page->index == end_index) in exofs_write_begin()
897 clear_highpage(page); in exofs_write_begin()
898 SetPageUptodate(page); in exofs_write_begin()
902 ret = _readpage(page, true); in exofs_write_begin()
905 unlock_page(page); in exofs_write_begin()
919 struct page **pagep, void **fsdata) in exofs_write_begin_export()
929 struct page *page, void *fsdata) in exofs_write_end() argument
936 ret = simple_write_end(file, mapping,pos, len, copied, page, fsdata); in exofs_write_end()
946 static int exofs_releasepage(struct page *page, gfp_t gfp) in exofs_releasepage() argument
948 EXOFS_DBGMSG("page 0x%lx\n", page->index); in exofs_releasepage()
953 static void exofs_invalidatepage(struct page *page, unsigned int offset, in exofs_invalidatepage() argument
957 page->index, offset, length); in exofs_invalidatepage()