Lines Matching refs:page
41 static inline void exofs_put_page(struct page *page) in exofs_put_page() argument
43 kunmap(page); in exofs_put_page()
44 page_cache_release(page); in exofs_put_page()
63 static int exofs_commit_chunk(struct page *page, loff_t pos, unsigned len) in exofs_commit_chunk() argument
65 struct address_space *mapping = page->mapping; in exofs_commit_chunk()
71 if (!PageUptodate(page)) in exofs_commit_chunk()
72 SetPageUptodate(page); in exofs_commit_chunk()
78 set_page_dirty(page); in exofs_commit_chunk()
81 err = write_one_page(page, 1); in exofs_commit_chunk()
83 unlock_page(page); in exofs_commit_chunk()
88 static void exofs_check_page(struct page *page) in exofs_check_page() argument
90 struct inode *dir = page->mapping->host; in exofs_check_page()
92 char *kaddr = page_address(page); in exofs_check_page()
99 if ((dir->i_size >> PAGE_CACHE_SHIFT) == page->index) { in exofs_check_page()
122 SetPageChecked(page); in exofs_check_page()
147 dir->i_ino, error, (page->index<<PAGE_CACHE_SHIFT)+offs, in exofs_check_page()
156 dir->i_ino, (page->index<<PAGE_CACHE_SHIFT)+offs, in exofs_check_page()
159 SetPageChecked(page); in exofs_check_page()
160 SetPageError(page); in exofs_check_page()
163 static struct page *exofs_get_page(struct inode *dir, unsigned long n) in exofs_get_page()
166 struct page *page = read_mapping_page(mapping, n, NULL); in exofs_get_page() local
168 if (!IS_ERR(page)) { in exofs_get_page()
169 kmap(page); in exofs_get_page()
170 if (!PageChecked(page)) in exofs_get_page()
171 exofs_check_page(page); in exofs_get_page()
172 if (PageError(page)) in exofs_get_page()
175 return page; in exofs_get_page()
178 exofs_put_page(page); in exofs_get_page()
258 struct page *page = exofs_get_page(inode, n); in exofs_readdir() local
260 if (IS_ERR(page)) { in exofs_readdir()
264 return PTR_ERR(page); in exofs_readdir()
266 kaddr = page_address(page); in exofs_readdir()
284 exofs_put_page(page); in exofs_readdir()
298 exofs_put_page(page); in exofs_readdir()
304 exofs_put_page(page); in exofs_readdir()
310 struct dentry *dentry, struct page **res_page) in exofs_find_entry()
317 struct page *page = NULL; in exofs_find_entry() local
332 page = exofs_get_page(dir, n); in exofs_find_entry()
333 if (!IS_ERR(page)) { in exofs_find_entry()
334 kaddr = page_address(page); in exofs_find_entry()
342 exofs_put_page(page); in exofs_find_entry()
349 exofs_put_page(page); in exofs_find_entry()
358 *res_page = page; in exofs_find_entry()
363 struct exofs_dir_entry *exofs_dotdot(struct inode *dir, struct page **p) in exofs_dotdot()
365 struct page *page = exofs_get_page(dir, 0); in exofs_dotdot() local
368 if (!IS_ERR(page)) { in exofs_dotdot()
370 (struct exofs_dir_entry *)page_address(page)); in exofs_dotdot()
371 *p = page; in exofs_dotdot()
378 struct page *page; in exofs_parent_ino() local
382 de = exofs_dotdot(d_inode(child), &page); in exofs_parent_ino()
387 exofs_put_page(page); in exofs_parent_ino()
395 struct page *page; in exofs_inode_by_name() local
397 de = exofs_find_entry(dir, dentry, &page); in exofs_inode_by_name()
400 exofs_put_page(page); in exofs_inode_by_name()
406 struct page *page, struct inode *inode) in exofs_set_link() argument
408 loff_t pos = page_offset(page) + in exofs_set_link()
409 (char *) de - (char *) page_address(page); in exofs_set_link()
413 lock_page(page); in exofs_set_link()
414 err = exofs_write_begin(NULL, page->mapping, pos, len, in exofs_set_link()
415 AOP_FLAG_UNINTERRUPTIBLE, &page, NULL); in exofs_set_link()
423 err = exofs_commit_chunk(page, pos, len); in exofs_set_link()
424 exofs_put_page(page); in exofs_set_link()
438 struct page *page = NULL; in exofs_add_link() local
450 page = exofs_get_page(dir, n); in exofs_add_link()
451 err = PTR_ERR(page); in exofs_add_link()
452 if (IS_ERR(page)) in exofs_add_link()
454 lock_page(page); in exofs_add_link()
455 kaddr = page_address(page); in exofs_add_link()
485 unlock_page(page); in exofs_add_link()
486 exofs_put_page(page); in exofs_add_link()
494 pos = page_offset(page) + in exofs_add_link()
495 (char *)de - (char *)page_address(page); in exofs_add_link()
496 err = exofs_write_begin(NULL, page->mapping, pos, rec_len, 0, in exofs_add_link()
497 &page, NULL); in exofs_add_link()
511 err = exofs_commit_chunk(page, pos, rec_len); in exofs_add_link()
517 exofs_put_page(page); in exofs_add_link()
521 unlock_page(page); in exofs_add_link()
525 int exofs_delete_entry(struct exofs_dir_entry *dir, struct page *page) in exofs_delete_entry() argument
527 struct address_space *mapping = page->mapping; in exofs_delete_entry()
530 char *kaddr = page_address(page); in exofs_delete_entry()
550 from = (char *)pde - (char *)page_address(page); in exofs_delete_entry()
551 pos = page_offset(page) + from; in exofs_delete_entry()
552 lock_page(page); in exofs_delete_entry()
553 err = exofs_write_begin(NULL, page->mapping, pos, to - from, 0, in exofs_delete_entry()
554 &page, NULL); in exofs_delete_entry()
562 err = exofs_commit_chunk(page, pos, to - from); in exofs_delete_entry()
567 exofs_put_page(page); in exofs_delete_entry()
578 struct page *page = grab_cache_page(mapping, 0); in exofs_make_empty() local
584 if (!page) in exofs_make_empty()
587 err = exofs_write_begin(NULL, page->mapping, 0, chunk_size, 0, in exofs_make_empty()
588 &page, NULL); in exofs_make_empty()
590 unlock_page(page); in exofs_make_empty()
594 kaddr = kmap_atomic(page); in exofs_make_empty()
609 err = exofs_commit_chunk(page, 0, chunk_size); in exofs_make_empty()
611 page_cache_release(page); in exofs_make_empty()
617 struct page *page = NULL; in exofs_empty_dir() local
623 page = exofs_get_page(inode, i); in exofs_empty_dir()
625 if (IS_ERR(page)) in exofs_empty_dir()
628 kaddr = page_address(page); in exofs_empty_dir()
654 exofs_put_page(page); in exofs_empty_dir()
659 exofs_put_page(page); in exofs_empty_dir()