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()
57 static int exofs_commit_chunk(struct page *page, loff_t pos, unsigned len) in exofs_commit_chunk() argument
59 struct address_space *mapping = page->mapping; in exofs_commit_chunk()
65 if (!PageUptodate(page)) in exofs_commit_chunk()
66 SetPageUptodate(page); in exofs_commit_chunk()
72 set_page_dirty(page); in exofs_commit_chunk()
75 err = write_one_page(page, 1); in exofs_commit_chunk()
77 unlock_page(page); in exofs_commit_chunk()
82 static void exofs_check_page(struct page *page) in exofs_check_page() argument
84 struct inode *dir = page->mapping->host; in exofs_check_page()
86 char *kaddr = page_address(page); in exofs_check_page()
93 if ((dir->i_size >> PAGE_CACHE_SHIFT) == page->index) { in exofs_check_page()
116 SetPageChecked(page); in exofs_check_page()
141 dir->i_ino, error, (page->index<<PAGE_CACHE_SHIFT)+offs, in exofs_check_page()
150 dir->i_ino, (page->index<<PAGE_CACHE_SHIFT)+offs, in exofs_check_page()
153 SetPageChecked(page); in exofs_check_page()
154 SetPageError(page); in exofs_check_page()
157 static struct page *exofs_get_page(struct inode *dir, unsigned long n) in exofs_get_page()
160 struct page *page = read_mapping_page(mapping, n, NULL); in exofs_get_page() local
162 if (!IS_ERR(page)) { in exofs_get_page()
163 kmap(page); in exofs_get_page()
164 if (!PageChecked(page)) in exofs_get_page()
165 exofs_check_page(page); in exofs_get_page()
166 if (PageError(page)) in exofs_get_page()
169 return page; in exofs_get_page()
172 exofs_put_page(page); in exofs_get_page()
252 struct page *page = exofs_get_page(inode, n); in exofs_readdir() local
254 if (IS_ERR(page)) { in exofs_readdir()
258 return PTR_ERR(page); in exofs_readdir()
260 kaddr = page_address(page); in exofs_readdir()
278 exofs_put_page(page); in exofs_readdir()
292 exofs_put_page(page); in exofs_readdir()
298 exofs_put_page(page); in exofs_readdir()
304 struct dentry *dentry, struct page **res_page) in exofs_find_entry()
311 struct page *page = NULL; in exofs_find_entry() local
326 page = exofs_get_page(dir, n); in exofs_find_entry()
327 if (!IS_ERR(page)) { in exofs_find_entry()
328 kaddr = page_address(page); in exofs_find_entry()
336 exofs_put_page(page); in exofs_find_entry()
343 exofs_put_page(page); in exofs_find_entry()
352 *res_page = page; in exofs_find_entry()
357 struct exofs_dir_entry *exofs_dotdot(struct inode *dir, struct page **p) in exofs_dotdot()
359 struct page *page = exofs_get_page(dir, 0); in exofs_dotdot() local
362 if (!IS_ERR(page)) { in exofs_dotdot()
364 (struct exofs_dir_entry *)page_address(page)); in exofs_dotdot()
365 *p = page; in exofs_dotdot()
372 struct page *page; in exofs_parent_ino() local
376 de = exofs_dotdot(d_inode(child), &page); in exofs_parent_ino()
381 exofs_put_page(page); in exofs_parent_ino()
389 struct page *page; in exofs_inode_by_name() local
391 de = exofs_find_entry(dir, dentry, &page); in exofs_inode_by_name()
394 exofs_put_page(page); in exofs_inode_by_name()
400 struct page *page, struct inode *inode) in exofs_set_link() argument
402 loff_t pos = page_offset(page) + in exofs_set_link()
403 (char *) de - (char *) page_address(page); in exofs_set_link()
407 lock_page(page); in exofs_set_link()
408 err = exofs_write_begin(NULL, page->mapping, pos, len, in exofs_set_link()
409 AOP_FLAG_UNINTERRUPTIBLE, &page, NULL); in exofs_set_link()
417 err = exofs_commit_chunk(page, pos, len); in exofs_set_link()
418 exofs_put_page(page); in exofs_set_link()
432 struct page *page = NULL; in exofs_add_link() local
444 page = exofs_get_page(dir, n); in exofs_add_link()
445 err = PTR_ERR(page); in exofs_add_link()
446 if (IS_ERR(page)) in exofs_add_link()
448 lock_page(page); in exofs_add_link()
449 kaddr = page_address(page); in exofs_add_link()
479 unlock_page(page); in exofs_add_link()
480 exofs_put_page(page); in exofs_add_link()
488 pos = page_offset(page) + in exofs_add_link()
489 (char *)de - (char *)page_address(page); in exofs_add_link()
490 err = exofs_write_begin(NULL, page->mapping, pos, rec_len, 0, in exofs_add_link()
491 &page, NULL); in exofs_add_link()
505 err = exofs_commit_chunk(page, pos, rec_len); in exofs_add_link()
511 exofs_put_page(page); in exofs_add_link()
515 unlock_page(page); in exofs_add_link()
519 int exofs_delete_entry(struct exofs_dir_entry *dir, struct page *page) in exofs_delete_entry() argument
521 struct address_space *mapping = page->mapping; in exofs_delete_entry()
524 char *kaddr = page_address(page); in exofs_delete_entry()
544 from = (char *)pde - (char *)page_address(page); in exofs_delete_entry()
545 pos = page_offset(page) + from; in exofs_delete_entry()
546 lock_page(page); in exofs_delete_entry()
547 err = exofs_write_begin(NULL, page->mapping, pos, to - from, 0, in exofs_delete_entry()
548 &page, NULL); in exofs_delete_entry()
556 err = exofs_commit_chunk(page, pos, to - from); in exofs_delete_entry()
561 exofs_put_page(page); in exofs_delete_entry()
572 struct page *page = grab_cache_page(mapping, 0); in exofs_make_empty() local
578 if (!page) in exofs_make_empty()
581 err = exofs_write_begin(NULL, page->mapping, 0, chunk_size, 0, in exofs_make_empty()
582 &page, NULL); in exofs_make_empty()
584 unlock_page(page); in exofs_make_empty()
588 kaddr = kmap_atomic(page); in exofs_make_empty()
603 err = exofs_commit_chunk(page, 0, chunk_size); in exofs_make_empty()
605 page_cache_release(page); in exofs_make_empty()
611 struct page *page = NULL; in exofs_empty_dir() local
617 page = exofs_get_page(inode, i); in exofs_empty_dir()
619 if (IS_ERR(page)) in exofs_empty_dir()
622 kaddr = page_address(page); in exofs_empty_dir()
648 exofs_put_page(page); in exofs_empty_dir()
653 exofs_put_page(page); in exofs_empty_dir()