Lines Matching refs:folio
84 static void ext2_commit_chunk(struct folio *folio, loff_t pos, unsigned len) in ext2_commit_chunk() argument
86 struct address_space *mapping = folio->mapping; in ext2_commit_chunk()
90 block_write_end(pos, len, len, folio); in ext2_commit_chunk()
96 folio_unlock(folio); in ext2_commit_chunk()
99 static bool ext2_check_folio(struct folio *folio, int quiet, char *kaddr) in ext2_check_folio() argument
101 struct inode *dir = folio->mapping->host; in ext2_check_folio()
106 unsigned limit = folio_size(folio); in ext2_check_folio()
110 if (dir->i_size < folio_pos(folio) + limit) { in ext2_check_folio()
111 limit = offset_in_folio(folio, dir->i_size); in ext2_check_folio()
135 folio_set_checked(folio); in ext2_check_folio()
164 dir->i_ino, error, folio_pos(folio) + offs, in ext2_check_folio()
174 dir->i_ino, folio_pos(folio) + offs, in ext2_check_folio()
190 int quiet, struct folio **foliop) in ext2_get_folio()
193 struct folio *folio = read_mapping_folio(mapping, n, NULL); in ext2_get_folio() local
196 if (IS_ERR(folio)) in ext2_get_folio()
197 return ERR_CAST(folio); in ext2_get_folio()
198 kaddr = kmap_local_folio(folio, 0); in ext2_get_folio()
199 if (unlikely(!folio_test_checked(folio))) { in ext2_get_folio()
200 if (!ext2_check_folio(folio, quiet, kaddr)) in ext2_get_folio()
203 *foliop = folio; in ext2_get_folio()
207 folio_release_kmap(folio, kaddr); in ext2_get_folio()
277 struct folio *folio; in ext2_readdir() local
278 char *kaddr = ext2_get_folio(inode, n, 0, &folio); in ext2_readdir()
302 folio_release_kmap(folio, de); in ext2_readdir()
314 folio_release_kmap(folio, de); in ext2_readdir()
320 folio_release_kmap(folio, kaddr); in ext2_readdir()
343 const struct qstr *child, struct folio **foliop) in ext2_find_entry()
412 struct ext2_dir_entry_2 *ext2_dotdot(struct inode *dir, struct folio **foliop) in ext2_dotdot()
424 struct folio *folio; in ext2_inode_by_name() local
426 de = ext2_find_entry(dir, child, &folio); in ext2_inode_by_name()
431 folio_release_kmap(folio, de); in ext2_inode_by_name()
435 static int ext2_prepare_chunk(struct folio *folio, loff_t pos, unsigned len) in ext2_prepare_chunk() argument
437 return __block_write_begin(folio, pos, len, ext2_get_block); in ext2_prepare_chunk()
451 struct folio *folio, struct inode *inode, bool update_times) in ext2_set_link() argument
453 loff_t pos = folio_pos(folio) + offset_in_folio(folio, de); in ext2_set_link()
457 folio_lock(folio); in ext2_set_link()
458 err = ext2_prepare_chunk(folio, pos, len); in ext2_set_link()
460 folio_unlock(folio); in ext2_set_link()
465 ext2_commit_chunk(folio, pos, len); in ext2_set_link()
484 struct folio *folio = NULL; in ext2_add_link() local
497 char *kaddr = ext2_get_folio(dir, n, 0, &folio); in ext2_add_link()
502 folio_lock(folio); in ext2_add_link()
505 kaddr += folio_size(folio) - reclen; in ext2_add_link()
532 folio_unlock(folio); in ext2_add_link()
533 folio_release_kmap(folio, kaddr); in ext2_add_link()
539 pos = folio_pos(folio) + offset_in_folio(folio, de); in ext2_add_link()
540 err = ext2_prepare_chunk(folio, pos, rec_len); in ext2_add_link()
553 ext2_commit_chunk(folio, pos, rec_len); in ext2_add_link()
560 folio_release_kmap(folio, de); in ext2_add_link()
563 folio_unlock(folio); in ext2_add_link()
571 int ext2_delete_entry(struct ext2_dir_entry_2 *dir, struct folio *folio) in ext2_delete_entry() argument
573 struct inode *inode = folio->mapping->host; in ext2_delete_entry()
580 from = offset_in_folio(folio, dir); in ext2_delete_entry()
596 from = offset_in_folio(folio, pde); in ext2_delete_entry()
597 pos = folio_pos(folio) + from; in ext2_delete_entry()
598 folio_lock(folio); in ext2_delete_entry()
599 err = ext2_prepare_chunk(folio, pos, to - from); in ext2_delete_entry()
601 folio_unlock(folio); in ext2_delete_entry()
607 ext2_commit_chunk(folio, pos, to - from); in ext2_delete_entry()
619 struct folio *folio = filemap_grab_folio(inode->i_mapping, 0); in ext2_make_empty() local
625 if (IS_ERR(folio)) in ext2_make_empty()
626 return PTR_ERR(folio); in ext2_make_empty()
628 err = ext2_prepare_chunk(folio, 0, chunk_size); in ext2_make_empty()
630 folio_unlock(folio); in ext2_make_empty()
633 kaddr = kmap_local_folio(folio, 0); in ext2_make_empty()
649 ext2_commit_chunk(folio, 0, chunk_size); in ext2_make_empty()
652 folio_put(folio); in ext2_make_empty()
661 struct folio *folio; in ext2_empty_dir() local
668 kaddr = ext2_get_folio(inode, i, 0, &folio); in ext2_empty_dir()
697 folio_release_kmap(folio, kaddr); in ext2_empty_dir()
702 folio_release_kmap(folio, kaddr); in ext2_empty_dir()