• Home
  • Raw
  • Download

Lines Matching refs:page

18 static int orangefs_writepage_locked(struct page *page,  in orangefs_writepage_locked()  argument
21 struct inode *inode = page->mapping->host; in orangefs_writepage_locked()
29 set_page_writeback(page); in orangefs_writepage_locked()
32 if (PagePrivate(page)) { in orangefs_writepage_locked()
33 wr = (struct orangefs_write_range *)page_private(page); in orangefs_writepage_locked()
42 off = page_offset(page); in orangefs_writepage_locked()
51 bv.bv_page = page; in orangefs_writepage_locked()
60 SetPageError(page); in orangefs_writepage_locked()
61 mapping_set_error(page->mapping, ret); in orangefs_writepage_locked()
67 set_page_private(page, 0); in orangefs_writepage_locked()
68 ClearPagePrivate(page); in orangefs_writepage_locked()
69 put_page(page); in orangefs_writepage_locked()
74 static int orangefs_writepage(struct page *page, struct writeback_control *wbc) in orangefs_writepage() argument
77 ret = orangefs_writepage_locked(page, wbc); in orangefs_writepage()
78 unlock_page(page); in orangefs_writepage()
79 end_page_writeback(page); in orangefs_writepage()
90 struct page **pages;
161 static int orangefs_writepages_callback(struct page *page, in orangefs_writepages_callback() argument
168 if (!PagePrivate(page)) { in orangefs_writepages_callback()
169 unlock_page(page); in orangefs_writepages_callback()
175 wr = (struct orangefs_write_range *)page_private(page); in orangefs_writepages_callback()
183 ow->pages[ow->npages++] = page; in orangefs_writepages_callback()
195 ow->pages[ow->npages++] = page; in orangefs_writepages_callback()
205 ret = orangefs_writepage_locked(page, wbc); in orangefs_writepages_callback()
206 mapping_set_error(page->mapping, ret); in orangefs_writepages_callback()
207 unlock_page(page); in orangefs_writepages_callback()
208 end_page_writeback(page); in orangefs_writepages_callback()
228 ow->pages = kcalloc(ow->maxpages, sizeof(struct page *), GFP_KERNEL); in orangefs_writepages()
250 static int orangefs_launder_page(struct page *);
252 static int orangefs_readpage(struct file *file, struct page *page) in orangefs_readpage() argument
254 struct inode *inode = page->mapping->host; in orangefs_readpage()
260 struct page *next_page; in orangefs_readpage()
303 if (PageDirty(page)) in orangefs_readpage()
304 orangefs_launder_page(page); in orangefs_readpage()
306 off = page_offset(page); in orangefs_readpage()
308 bv.bv_page = page; in orangefs_readpage()
319 flush_dcache_page(page); in orangefs_readpage()
321 SetPageError(page); in orangefs_readpage()
322 unlock_page(page); in orangefs_readpage()
325 SetPageUptodate(page); in orangefs_readpage()
326 if (PageError(page)) in orangefs_readpage()
327 ClearPageError(page); in orangefs_readpage()
331 unlock_page(page); in orangefs_readpage()
390 loff_t pos, unsigned len, unsigned flags, struct page **pagep, in orangefs_write_begin()
394 struct page *page; in orangefs_write_begin() local
400 page = grab_cache_page_write_begin(mapping, index, flags); in orangefs_write_begin()
401 if (!page) in orangefs_write_begin()
404 *pagep = page; in orangefs_write_begin()
406 if (PageDirty(page) && !PagePrivate(page)) { in orangefs_write_begin()
412 ret = orangefs_launder_page(page); in orangefs_write_begin()
416 if (PagePrivate(page)) { in orangefs_write_begin()
418 wr = (struct orangefs_write_range *)page_private(page); in orangefs_write_begin()
425 ret = orangefs_launder_page(page); in orangefs_write_begin()
439 SetPagePrivate(page); in orangefs_write_begin()
440 set_page_private(page, (unsigned long)wr); in orangefs_write_begin()
441 get_page(page); in orangefs_write_begin()
447 loff_t pos, unsigned len, unsigned copied, struct page *page, void *fsdata) in orangefs_write_end() argument
449 struct inode *inode = page->mapping->host; in orangefs_write_end()
460 if (!PageUptodate(page)) { in orangefs_write_end()
463 zero_user(page, from + copied, len - copied); in orangefs_write_end()
466 if (pos == page_offset(page) && in orangefs_write_end()
468 zero_user_segment(page, from + copied, PAGE_SIZE); in orangefs_write_end()
469 SetPageUptodate(page); in orangefs_write_end()
473 set_page_dirty(page); in orangefs_write_end()
474 unlock_page(page); in orangefs_write_end()
475 put_page(page); in orangefs_write_end()
481 static void orangefs_invalidatepage(struct page *page, in orangefs_invalidatepage() argument
486 wr = (struct orangefs_write_range *)page_private(page); in orangefs_invalidatepage()
489 kfree((struct orangefs_write_range *)page_private(page)); in orangefs_invalidatepage()
490 set_page_private(page, 0); in orangefs_invalidatepage()
491 ClearPagePrivate(page); in orangefs_invalidatepage()
492 put_page(page); in orangefs_invalidatepage()
495 } else if (page_offset(page) + offset <= wr->pos && in orangefs_invalidatepage()
496 wr->pos + wr->len <= page_offset(page) + offset + length) { in orangefs_invalidatepage()
497 kfree((struct orangefs_write_range *)page_private(page)); in orangefs_invalidatepage()
498 set_page_private(page, 0); in orangefs_invalidatepage()
499 ClearPagePrivate(page); in orangefs_invalidatepage()
500 put_page(page); in orangefs_invalidatepage()
502 cancel_dirty_page(page); in orangefs_invalidatepage()
505 } else if (wr->pos < page_offset(page) + offset && in orangefs_invalidatepage()
506 wr->pos + wr->len <= page_offset(page) + offset + length && in orangefs_invalidatepage()
507 page_offset(page) + offset < wr->pos + wr->len) { in orangefs_invalidatepage()
509 x = wr->pos + wr->len - (page_offset(page) + offset); in orangefs_invalidatepage()
515 } else if (page_offset(page) + offset <= wr->pos && in orangefs_invalidatepage()
516 page_offset(page) + offset + length < wr->pos + wr->len && in orangefs_invalidatepage()
517 wr->pos < page_offset(page) + offset + length) { in orangefs_invalidatepage()
519 x = page_offset(page) + offset + length - wr->pos; in orangefs_invalidatepage()
526 } else if (wr->pos < page_offset(page) + offset && in orangefs_invalidatepage()
527 page_offset(page) + offset + length < wr->pos + wr->len) { in orangefs_invalidatepage()
539 if (!((page_offset(page) + offset + length <= wr->pos) ^ in orangefs_invalidatepage()
540 (wr->pos + wr->len <= page_offset(page) + offset))) { in orangefs_invalidatepage()
543 page_offset(page) + offset, length); in orangefs_invalidatepage()
555 orangefs_launder_page(page); in orangefs_invalidatepage()
558 static int orangefs_releasepage(struct page *page, gfp_t foo) in orangefs_releasepage() argument
560 return !PagePrivate(page); in orangefs_releasepage()
563 static void orangefs_freepage(struct page *page) in orangefs_freepage() argument
565 if (PagePrivate(page)) { in orangefs_freepage()
566 kfree((struct orangefs_write_range *)page_private(page)); in orangefs_freepage()
567 set_page_private(page, 0); in orangefs_freepage()
568 ClearPagePrivate(page); in orangefs_freepage()
569 put_page(page); in orangefs_freepage()
573 static int orangefs_launder_page(struct page *page) in orangefs_launder_page() argument
580 wait_on_page_writeback(page); in orangefs_launder_page()
581 if (clear_page_dirty_for_io(page)) { in orangefs_launder_page()
582 r = orangefs_writepage_locked(page, &wbc); in orangefs_launder_page()
583 end_page_writeback(page); in orangefs_launder_page()
721 struct page *page = vmf->page; in orangefs_page_mkwrite() local
735 lock_page(page); in orangefs_page_mkwrite()
736 if (PageDirty(page) && !PagePrivate(page)) { in orangefs_page_mkwrite()
742 if (orangefs_launder_page(page)) { in orangefs_page_mkwrite()
747 if (PagePrivate(page)) { in orangefs_page_mkwrite()
748 wr = (struct orangefs_write_range *)page_private(page); in orangefs_page_mkwrite()
751 wr->pos = page_offset(page); in orangefs_page_mkwrite()
755 if (orangefs_launder_page(page)) { in orangefs_page_mkwrite()
766 wr->pos = page_offset(page); in orangefs_page_mkwrite()
770 SetPagePrivate(page); in orangefs_page_mkwrite()
771 set_page_private(page, (unsigned long)wr); in orangefs_page_mkwrite()
772 get_page(page); in orangefs_page_mkwrite()
776 if (page->mapping != inode->i_mapping) { in orangefs_page_mkwrite()
777 unlock_page(page); in orangefs_page_mkwrite()
787 set_page_dirty(page); in orangefs_page_mkwrite()
788 wait_for_stable_page(page); in orangefs_page_mkwrite()