Lines Matching refs:page
69 static inline void ext2_put_page(struct page *page) in ext2_put_page() argument
71 kunmap(page); in ext2_put_page()
72 put_page(page); in ext2_put_page()
90 static int ext2_commit_chunk(struct page *page, loff_t pos, unsigned len) in ext2_commit_chunk() argument
92 struct address_space *mapping = page->mapping; in ext2_commit_chunk()
97 block_write_end(NULL, mapping, pos, len, len, page, NULL); in ext2_commit_chunk()
105 err = write_one_page(page); in ext2_commit_chunk()
109 unlock_page(page); in ext2_commit_chunk()
115 static bool ext2_check_page(struct page *page, int quiet) in ext2_check_page() argument
117 struct inode *dir = page->mapping->host; in ext2_check_page()
120 char *kaddr = page_address(page); in ext2_check_page()
127 if ((dir->i_size >> PAGE_SHIFT) == page->index) { in ext2_check_page()
152 SetPageChecked(page); in ext2_check_page()
181 dir->i_ino, error, (page->index<<PAGE_SHIFT)+offs, in ext2_check_page()
191 dir->i_ino, (page->index<<PAGE_SHIFT)+offs, in ext2_check_page()
195 SetPageError(page); in ext2_check_page()
199 static struct page * ext2_get_page(struct inode *dir, unsigned long n, in ext2_get_page()
203 struct page *page = read_mapping_page(mapping, n, NULL); in ext2_get_page() local
204 if (!IS_ERR(page)) { in ext2_get_page()
205 kmap(page); in ext2_get_page()
206 if (unlikely(!PageChecked(page))) { in ext2_get_page()
207 if (PageError(page) || !ext2_check_page(page, quiet)) in ext2_get_page()
211 return page; in ext2_get_page()
214 ext2_put_page(page); in ext2_get_page()
285 struct page *page = ext2_get_page(inode, n, 0); in ext2_readdir() local
287 if (IS_ERR(page)) { in ext2_readdir()
292 return PTR_ERR(page); in ext2_readdir()
294 kaddr = page_address(page); in ext2_readdir()
309 ext2_put_page(page); in ext2_readdir()
321 ext2_put_page(page); in ext2_readdir()
327 ext2_put_page(page); in ext2_readdir()
341 const struct qstr *child, struct page **res_page) in ext2_find_entry()
348 struct page *page = NULL; in ext2_find_entry() local
365 page = ext2_get_page(dir, n, dir_has_error); in ext2_find_entry()
366 if (!IS_ERR(page)) { in ext2_find_entry()
367 kaddr = page_address(page); in ext2_find_entry()
374 ext2_put_page(page); in ext2_find_entry()
381 ext2_put_page(page); in ext2_find_entry()
400 *res_page = page; in ext2_find_entry()
405 struct ext2_dir_entry_2 * ext2_dotdot (struct inode *dir, struct page **p) in ext2_dotdot()
407 struct page *page = ext2_get_page(dir, 0, 0); in ext2_dotdot() local
410 if (!IS_ERR(page)) { in ext2_dotdot()
411 de = ext2_next_entry((ext2_dirent *) page_address(page)); in ext2_dotdot()
412 *p = page; in ext2_dotdot()
421 struct page *page; in ext2_inode_by_name() local
423 de = ext2_find_entry (dir, child, &page); in ext2_inode_by_name()
426 ext2_put_page(page); in ext2_inode_by_name()
431 static int ext2_prepare_chunk(struct page *page, loff_t pos, unsigned len) in ext2_prepare_chunk() argument
433 return __block_write_begin(page, pos, len, ext2_get_block); in ext2_prepare_chunk()
438 struct page *page, struct inode *inode, int update_times) in ext2_set_link() argument
440 loff_t pos = page_offset(page) + in ext2_set_link()
441 (char *) de - (char *) page_address(page); in ext2_set_link()
445 lock_page(page); in ext2_set_link()
446 err = ext2_prepare_chunk(page, pos, len); in ext2_set_link()
450 err = ext2_commit_chunk(page, pos, len); in ext2_set_link()
451 ext2_put_page(page); in ext2_set_link()
469 struct page *page = NULL; in ext2_add_link() local
485 page = ext2_get_page(dir, n, 0); in ext2_add_link()
486 err = PTR_ERR(page); in ext2_add_link()
487 if (IS_ERR(page)) in ext2_add_link()
489 lock_page(page); in ext2_add_link()
490 kaddr = page_address(page); in ext2_add_link()
520 unlock_page(page); in ext2_add_link()
521 ext2_put_page(page); in ext2_add_link()
527 pos = page_offset(page) + in ext2_add_link()
528 (char*)de - (char*)page_address(page); in ext2_add_link()
529 err = ext2_prepare_chunk(page, pos, rec_len); in ext2_add_link()
542 err = ext2_commit_chunk(page, pos, rec_len); in ext2_add_link()
548 ext2_put_page(page); in ext2_add_link()
552 unlock_page(page); in ext2_add_link()
560 int ext2_delete_entry (struct ext2_dir_entry_2 * dir, struct page * page ) in ext2_delete_entry() argument
562 struct inode *inode = page->mapping->host; in ext2_delete_entry()
563 char *kaddr = page_address(page); in ext2_delete_entry()
583 from = (char*)pde - (char*)page_address(page); in ext2_delete_entry()
584 pos = page_offset(page) + from; in ext2_delete_entry()
585 lock_page(page); in ext2_delete_entry()
586 err = ext2_prepare_chunk(page, pos, to - from); in ext2_delete_entry()
591 err = ext2_commit_chunk(page, pos, to - from); in ext2_delete_entry()
596 ext2_put_page(page); in ext2_delete_entry()
605 struct page *page = grab_cache_page(inode->i_mapping, 0); in ext2_make_empty() local
611 if (!page) in ext2_make_empty()
614 err = ext2_prepare_chunk(page, 0, chunk_size); in ext2_make_empty()
616 unlock_page(page); in ext2_make_empty()
619 kaddr = kmap_atomic(page); in ext2_make_empty()
635 err = ext2_commit_chunk(page, 0, chunk_size); in ext2_make_empty()
637 put_page(page); in ext2_make_empty()
646 struct page *page = NULL; in ext2_empty_dir() local
653 page = ext2_get_page(inode, i, dir_has_error); in ext2_empty_dir()
655 if (IS_ERR(page)) { in ext2_empty_dir()
660 kaddr = page_address(page); in ext2_empty_dir()
686 ext2_put_page(page); in ext2_empty_dir()
691 ext2_put_page(page); in ext2_empty_dir()