Lines Matching refs:page
324 static int nfs_want_read_modify_write(struct file *file, struct page *page, in nfs_want_read_modify_write() argument
327 unsigned int pglen = nfs_page_length(page); in nfs_want_read_modify_write()
332 if (!PageUptodate(page)) in nfs_want_read_modify_write()
338 !PageUptodate(page) && /* Uptodate? */ in nfs_want_read_modify_write()
339 !PagePrivate(page) && /* i/o request already? */ in nfs_want_read_modify_write()
356 struct page **pagep, void **fsdata) in nfs_write_begin()
360 struct page *page; in nfs_write_begin() local
380 page = grab_cache_page_write_begin(mapping, index, flags); in nfs_write_begin()
381 if (!page) in nfs_write_begin()
383 *pagep = page; in nfs_write_begin()
385 ret = nfs_flush_incompatible(file, page); in nfs_write_begin()
387 unlock_page(page); in nfs_write_begin()
388 page_cache_release(page); in nfs_write_begin()
390 nfs_want_read_modify_write(file, page, pos, len)) { in nfs_write_begin()
392 ret = nfs_readpage(file, page); in nfs_write_begin()
393 page_cache_release(page); in nfs_write_begin()
402 struct page *page, void *fsdata) in nfs_write_end() argument
415 if (!PageUptodate(page)) { in nfs_write_end()
416 unsigned pglen = nfs_page_length(page); in nfs_write_end()
420 zero_user_segments(page, 0, offset, in nfs_write_end()
422 SetPageUptodate(page); in nfs_write_end()
424 zero_user_segment(page, end, PAGE_CACHE_SIZE); in nfs_write_end()
426 SetPageUptodate(page); in nfs_write_end()
428 zero_user_segment(page, pglen, PAGE_CACHE_SIZE); in nfs_write_end()
431 status = nfs_updatepage(file, page, offset, copied); in nfs_write_end()
433 unlock_page(page); in nfs_write_end()
434 page_cache_release(page); in nfs_write_end()
456 static void nfs_invalidate_page(struct page *page, unsigned int offset, in nfs_invalidate_page() argument
460 page, offset, length); in nfs_invalidate_page()
465 nfs_wb_page_cancel(page_file_mapping(page)->host, page); in nfs_invalidate_page()
467 nfs_fscache_invalidate_page(page, page->mapping->host); in nfs_invalidate_page()
476 static int nfs_release_page(struct page *page, gfp_t gfp) in nfs_release_page() argument
478 struct address_space *mapping = page->mapping; in nfs_release_page()
480 dfprintk(PAGECACHE, "NFS: release_page(%p)\n", page); in nfs_release_page()
496 wait_on_page_bit_killable_timeout(page, PG_private, in nfs_release_page()
498 if (PagePrivate(page)) in nfs_release_page()
504 if (PagePrivate(page)) in nfs_release_page()
506 return nfs_fscache_release_page(page, gfp); in nfs_release_page()
509 static void nfs_check_dirty_writeback(struct page *page, in nfs_check_dirty_writeback() argument
513 struct address_space *mapping = page_file_mapping(page); in nfs_check_dirty_writeback()
515 if (!mapping || PageSwapCache(page)) in nfs_check_dirty_writeback()
534 if (PagePrivate(page)) in nfs_check_dirty_writeback()
546 static int nfs_launder_page(struct page *page) in nfs_launder_page() argument
548 struct inode *inode = page_file_mapping(page)->host; in nfs_launder_page()
552 inode->i_ino, (long long)page_offset(page)); in nfs_launder_page()
554 nfs_fscache_wait_on_page_write(nfsi, page); in nfs_launder_page()
555 return nfs_wb_page(inode, page); in nfs_launder_page()
612 struct page *page = vmf->page; in nfs_vm_page_mkwrite() local
621 (long long)page_offset(page)); in nfs_vm_page_mkwrite()
624 nfs_fscache_wait_on_page_write(NFS_I(inode), page); in nfs_vm_page_mkwrite()
629 lock_page(page); in nfs_vm_page_mkwrite()
630 mapping = page_file_mapping(page); in nfs_vm_page_mkwrite()
634 wait_on_page_writeback(page); in nfs_vm_page_mkwrite()
636 pagelen = nfs_page_length(page); in nfs_vm_page_mkwrite()
641 if (nfs_flush_incompatible(filp, page) == 0 && in nfs_vm_page_mkwrite()
642 nfs_updatepage(filp, page, 0, pagelen) == 0) in nfs_vm_page_mkwrite()
647 unlock_page(page); in nfs_vm_page_mkwrite()