• 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()
276 if (PageDirty(page)) in orangefs_readpage()
277 orangefs_launder_page(page); in orangefs_readpage()
279 off = page_offset(page); in orangefs_readpage()
281 bv.bv_page = page; in orangefs_readpage()
292 flush_dcache_page(page); in orangefs_readpage()
294 SetPageError(page); in orangefs_readpage()
295 unlock_page(page); in orangefs_readpage()
298 SetPageUptodate(page); in orangefs_readpage()
299 if (PageError(page)) in orangefs_readpage()
300 ClearPageError(page); in orangefs_readpage()
304 unlock_page(page); in orangefs_readpage()
363 loff_t pos, unsigned len, unsigned flags, struct page **pagep, in orangefs_write_begin()
367 struct page *page; in orangefs_write_begin() local
373 page = grab_cache_page_write_begin(mapping, index, flags); in orangefs_write_begin()
374 if (!page) in orangefs_write_begin()
377 *pagep = page; in orangefs_write_begin()
379 if (PageDirty(page) && !PagePrivate(page)) { in orangefs_write_begin()
385 ret = orangefs_launder_page(page); in orangefs_write_begin()
389 if (PagePrivate(page)) { in orangefs_write_begin()
391 wr = (struct orangefs_write_range *)page_private(page); in orangefs_write_begin()
398 ret = orangefs_launder_page(page); in orangefs_write_begin()
412 SetPagePrivate(page); in orangefs_write_begin()
413 set_page_private(page, (unsigned long)wr); in orangefs_write_begin()
414 get_page(page); in orangefs_write_begin()
420 loff_t pos, unsigned len, unsigned copied, struct page *page, void *fsdata) in orangefs_write_end() argument
422 struct inode *inode = page->mapping->host; in orangefs_write_end()
433 if (!PageUptodate(page)) { in orangefs_write_end()
436 zero_user(page, from + copied, len - copied); in orangefs_write_end()
439 if (pos == page_offset(page) && in orangefs_write_end()
441 zero_user_segment(page, from + copied, PAGE_SIZE); in orangefs_write_end()
442 SetPageUptodate(page); in orangefs_write_end()
446 set_page_dirty(page); in orangefs_write_end()
447 unlock_page(page); in orangefs_write_end()
448 put_page(page); in orangefs_write_end()
454 static void orangefs_invalidatepage(struct page *page, in orangefs_invalidatepage() argument
459 wr = (struct orangefs_write_range *)page_private(page); in orangefs_invalidatepage()
462 kfree((struct orangefs_write_range *)page_private(page)); in orangefs_invalidatepage()
463 set_page_private(page, 0); in orangefs_invalidatepage()
464 ClearPagePrivate(page); in orangefs_invalidatepage()
465 put_page(page); in orangefs_invalidatepage()
468 } else if (page_offset(page) + offset <= wr->pos && in orangefs_invalidatepage()
469 wr->pos + wr->len <= page_offset(page) + offset + length) { in orangefs_invalidatepage()
470 kfree((struct orangefs_write_range *)page_private(page)); in orangefs_invalidatepage()
471 set_page_private(page, 0); in orangefs_invalidatepage()
472 ClearPagePrivate(page); in orangefs_invalidatepage()
473 put_page(page); in orangefs_invalidatepage()
475 cancel_dirty_page(page); in orangefs_invalidatepage()
478 } else if (wr->pos < page_offset(page) + offset && in orangefs_invalidatepage()
479 wr->pos + wr->len <= page_offset(page) + offset + length && in orangefs_invalidatepage()
480 page_offset(page) + offset < wr->pos + wr->len) { in orangefs_invalidatepage()
482 x = wr->pos + wr->len - (page_offset(page) + offset); in orangefs_invalidatepage()
488 } else if (page_offset(page) + offset <= wr->pos && in orangefs_invalidatepage()
489 page_offset(page) + offset + length < wr->pos + wr->len && in orangefs_invalidatepage()
490 wr->pos < page_offset(page) + offset + length) { in orangefs_invalidatepage()
492 x = page_offset(page) + offset + length - wr->pos; in orangefs_invalidatepage()
499 } else if (wr->pos < page_offset(page) + offset && in orangefs_invalidatepage()
500 page_offset(page) + offset + length < wr->pos + wr->len) { in orangefs_invalidatepage()
512 if (!((page_offset(page) + offset + length <= wr->pos) ^ in orangefs_invalidatepage()
513 (wr->pos + wr->len <= page_offset(page) + offset))) { in orangefs_invalidatepage()
516 page_offset(page) + offset, length); in orangefs_invalidatepage()
528 orangefs_launder_page(page); in orangefs_invalidatepage()
531 static int orangefs_releasepage(struct page *page, gfp_t foo) in orangefs_releasepage() argument
533 return !PagePrivate(page); in orangefs_releasepage()
536 static void orangefs_freepage(struct page *page) in orangefs_freepage() argument
538 if (PagePrivate(page)) { in orangefs_freepage()
539 kfree((struct orangefs_write_range *)page_private(page)); in orangefs_freepage()
540 set_page_private(page, 0); in orangefs_freepage()
541 ClearPagePrivate(page); in orangefs_freepage()
542 put_page(page); in orangefs_freepage()
546 static int orangefs_launder_page(struct page *page) in orangefs_launder_page() argument
553 wait_on_page_writeback(page); in orangefs_launder_page()
554 if (clear_page_dirty_for_io(page)) { in orangefs_launder_page()
555 r = orangefs_writepage_locked(page, &wbc); in orangefs_launder_page()
556 end_page_writeback(page); in orangefs_launder_page()
694 struct page *page = vmf->page; in orangefs_page_mkwrite() local
708 lock_page(page); in orangefs_page_mkwrite()
709 if (PageDirty(page) && !PagePrivate(page)) { in orangefs_page_mkwrite()
715 if (orangefs_launder_page(page)) { in orangefs_page_mkwrite()
720 if (PagePrivate(page)) { in orangefs_page_mkwrite()
721 wr = (struct orangefs_write_range *)page_private(page); in orangefs_page_mkwrite()
724 wr->pos = page_offset(page); in orangefs_page_mkwrite()
728 if (orangefs_launder_page(page)) { in orangefs_page_mkwrite()
739 wr->pos = page_offset(page); in orangefs_page_mkwrite()
743 SetPagePrivate(page); in orangefs_page_mkwrite()
744 set_page_private(page, (unsigned long)wr); in orangefs_page_mkwrite()
745 get_page(page); in orangefs_page_mkwrite()
749 if (page->mapping != inode->i_mapping) { in orangefs_page_mkwrite()
750 unlock_page(page); in orangefs_page_mkwrite()
760 set_page_dirty(page); in orangefs_page_mkwrite()
761 wait_for_stable_page(page); in orangefs_page_mkwrite()