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()
261 struct page *page = exofs_get_page(inode, n); in exofs_readdir() local
263 if (IS_ERR(page)) { in exofs_readdir()
267 return PTR_ERR(page); in exofs_readdir()
269 kaddr = page_address(page); in exofs_readdir()
287 exofs_put_page(page); in exofs_readdir()
303 exofs_put_page(page); in exofs_readdir()
309 exofs_put_page(page); in exofs_readdir()
316 struct dentry *dentry, struct page **res_page) in exofs_find_entry()
323 struct page *page = NULL; in exofs_find_entry() local
338 page = exofs_get_page(dir, n); in exofs_find_entry()
339 if (!IS_ERR(page)) { in exofs_find_entry()
340 kaddr = page_address(page); in exofs_find_entry()
348 exofs_put_page(page); in exofs_find_entry()
355 exofs_put_page(page); in exofs_find_entry()
364 *res_page = page; in exofs_find_entry()
369 struct exofs_dir_entry *exofs_dotdot(struct inode *dir, struct page **p) in exofs_dotdot()
371 struct page *page = exofs_get_page(dir, 0); in exofs_dotdot() local
374 if (!IS_ERR(page)) { in exofs_dotdot()
376 (struct exofs_dir_entry *)page_address(page)); in exofs_dotdot()
377 *p = page; in exofs_dotdot()
384 struct page *page; in exofs_parent_ino() local
388 de = exofs_dotdot(child->d_inode, &page); in exofs_parent_ino()
393 exofs_put_page(page); in exofs_parent_ino()
401 struct page *page; in exofs_inode_by_name() local
403 de = exofs_find_entry(dir, dentry, &page); in exofs_inode_by_name()
406 exofs_put_page(page); in exofs_inode_by_name()
412 struct page *page, struct inode *inode) in exofs_set_link() argument
414 loff_t pos = page_offset(page) + in exofs_set_link()
415 (char *) de - (char *) page_address(page); in exofs_set_link()
419 lock_page(page); in exofs_set_link()
420 err = exofs_write_begin(NULL, page->mapping, pos, len, in exofs_set_link()
421 AOP_FLAG_UNINTERRUPTIBLE, &page, NULL); in exofs_set_link()
429 err = exofs_commit_chunk(page, pos, len); in exofs_set_link()
430 exofs_put_page(page); in exofs_set_link()
444 struct page *page = NULL; in exofs_add_link() local
456 page = exofs_get_page(dir, n); in exofs_add_link()
457 err = PTR_ERR(page); in exofs_add_link()
458 if (IS_ERR(page)) in exofs_add_link()
460 lock_page(page); in exofs_add_link()
461 kaddr = page_address(page); in exofs_add_link()
491 unlock_page(page); in exofs_add_link()
492 exofs_put_page(page); in exofs_add_link()
500 pos = page_offset(page) + in exofs_add_link()
501 (char *)de - (char *)page_address(page); in exofs_add_link()
502 err = exofs_write_begin(NULL, page->mapping, pos, rec_len, 0, in exofs_add_link()
503 &page, NULL); in exofs_add_link()
517 err = exofs_commit_chunk(page, pos, rec_len); in exofs_add_link()
523 exofs_put_page(page); in exofs_add_link()
527 unlock_page(page); in exofs_add_link()
531 int exofs_delete_entry(struct exofs_dir_entry *dir, struct page *page) in exofs_delete_entry() argument
533 struct address_space *mapping = page->mapping; in exofs_delete_entry()
536 char *kaddr = page_address(page); in exofs_delete_entry()
556 from = (char *)pde - (char *)page_address(page); in exofs_delete_entry()
557 pos = page_offset(page) + from; in exofs_delete_entry()
558 lock_page(page); in exofs_delete_entry()
559 err = exofs_write_begin(NULL, page->mapping, pos, to - from, 0, in exofs_delete_entry()
560 &page, NULL); in exofs_delete_entry()
568 err = exofs_commit_chunk(page, pos, to - from); in exofs_delete_entry()
573 exofs_put_page(page); in exofs_delete_entry()
584 struct page *page = grab_cache_page(mapping, 0); in exofs_make_empty() local
590 if (!page) in exofs_make_empty()
593 err = exofs_write_begin(NULL, page->mapping, 0, chunk_size, 0, in exofs_make_empty()
594 &page, NULL); in exofs_make_empty()
596 unlock_page(page); in exofs_make_empty()
600 kaddr = kmap_atomic(page); in exofs_make_empty()
615 err = exofs_commit_chunk(page, 0, chunk_size); in exofs_make_empty()
617 page_cache_release(page); in exofs_make_empty()
623 struct page *page = NULL; in exofs_empty_dir() local
629 page = exofs_get_page(inode, i); in exofs_empty_dir()
631 if (IS_ERR(page)) in exofs_empty_dir()
634 kaddr = page_address(page); in exofs_empty_dir()
660 exofs_put_page(page); in exofs_empty_dir()
665 exofs_put_page(page); in exofs_empty_dir()