Lines Matching refs:ifolio
36 static bool inode_has_blocks(struct inode *inode, struct folio *ifolio) in inode_has_blocks() argument
38 struct f2fs_inode *ri = F2FS_INODE(ifolio); in inode_has_blocks()
51 bool f2fs_sanity_check_inline_data(struct inode *inode, struct folio *ifolio) in f2fs_sanity_check_inline_data() argument
56 if (inode_has_blocks(inode, ifolio)) in f2fs_sanity_check_inline_data()
82 void f2fs_do_read_inline_data(struct folio *folio, struct folio *ifolio) in f2fs_do_read_inline_data() argument
94 memcpy_to_folio(folio, 0, inline_data_addr(inode, ifolio), in f2fs_do_read_inline_data()
100 void f2fs_truncate_inline_inode(struct inode *inode, struct folio *ifolio, in f2fs_truncate_inline_inode() argument
108 addr = inline_data_addr(inode, ifolio); in f2fs_truncate_inline_inode()
110 f2fs_folio_wait_writeback(ifolio, NODE, true, true); in f2fs_truncate_inline_inode()
112 folio_mark_dirty(ifolio); in f2fs_truncate_inline_inode()
120 struct folio *ifolio; in f2fs_read_inline_data() local
122 ifolio = f2fs_get_inode_folio(F2FS_I_SB(inode), inode->i_ino); in f2fs_read_inline_data()
123 if (IS_ERR(ifolio)) { in f2fs_read_inline_data()
125 return PTR_ERR(ifolio); in f2fs_read_inline_data()
129 f2fs_folio_put(ifolio, true); in f2fs_read_inline_data()
136 f2fs_do_read_inline_data(folio, ifolio); in f2fs_read_inline_data()
140 f2fs_folio_put(ifolio, true); in f2fs_read_inline_data()
221 struct folio *ifolio, *folio; in f2fs_convert_inline_inode() local
240 ifolio = f2fs_get_inode_folio(sbi, inode->i_ino); in f2fs_convert_inline_inode()
241 if (IS_ERR(ifolio)) { in f2fs_convert_inline_inode()
242 err = PTR_ERR(ifolio); in f2fs_convert_inline_inode()
246 set_new_dnode(&dn, inode, ifolio, ifolio, 0); in f2fs_convert_inline_inode()
266 struct folio *ifolio; in f2fs_write_inline_data() local
268 ifolio = f2fs_get_inode_folio(sbi, inode->i_ino); in f2fs_write_inline_data()
269 if (IS_ERR(ifolio)) in f2fs_write_inline_data()
270 return PTR_ERR(ifolio); in f2fs_write_inline_data()
273 f2fs_folio_put(ifolio, true); in f2fs_write_inline_data()
279 f2fs_folio_wait_writeback(ifolio, NODE, true, true); in f2fs_write_inline_data()
280 memcpy_from_folio(inline_data_addr(inode, ifolio), in f2fs_write_inline_data()
282 folio_mark_dirty(ifolio); in f2fs_write_inline_data()
289 folio_clear_f2fs_inline(ifolio); in f2fs_write_inline_data()
290 f2fs_folio_put(ifolio, 1); in f2fs_write_inline_data()
313 struct folio *ifolio; in f2fs_recover_inline_data() local
315 ifolio = f2fs_get_inode_folio(sbi, inode->i_ino); in f2fs_recover_inline_data()
316 if (IS_ERR(ifolio)) in f2fs_recover_inline_data()
317 return PTR_ERR(ifolio); in f2fs_recover_inline_data()
319 f2fs_folio_wait_writeback(ifolio, NODE, true, true); in f2fs_recover_inline_data()
322 dst_addr = inline_data_addr(inode, ifolio); in f2fs_recover_inline_data()
328 folio_mark_dirty(ifolio); in f2fs_recover_inline_data()
329 f2fs_folio_put(ifolio, true); in f2fs_recover_inline_data()
334 struct folio *ifolio = f2fs_get_inode_folio(sbi, inode->i_ino); in f2fs_recover_inline_data() local
335 if (IS_ERR(ifolio)) in f2fs_recover_inline_data()
336 return PTR_ERR(ifolio); in f2fs_recover_inline_data()
337 f2fs_truncate_inline_inode(inode, ifolio, 0); in f2fs_recover_inline_data()
340 f2fs_folio_put(ifolio, true); in f2fs_recover_inline_data()
361 struct folio *ifolio; in f2fs_find_in_inline_dir() local
364 ifolio = f2fs_get_inode_folio(sbi, dir->i_ino); in f2fs_find_in_inline_dir()
365 if (IS_ERR(ifolio)) { in f2fs_find_in_inline_dir()
366 *res_folio = ifolio; in f2fs_find_in_inline_dir()
370 inline_dentry = inline_data_addr(dir, ifolio); in f2fs_find_in_inline_dir()
374 folio_unlock(ifolio); in f2fs_find_in_inline_dir()
380 *res_folio = ifolio; in f2fs_find_in_inline_dir()
382 f2fs_folio_put(ifolio, false); in f2fs_find_in_inline_dir()
388 struct folio *ifolio) in f2fs_make_empty_inline_dir() argument
393 inline_dentry = inline_data_addr(inode, ifolio); in f2fs_make_empty_inline_dir()
398 folio_mark_dirty(ifolio); in f2fs_make_empty_inline_dir()
410 static int f2fs_move_inline_dirents(struct inode *dir, struct folio *ifolio, in f2fs_move_inline_dirents() argument
421 f2fs_folio_put(ifolio, true); in f2fs_move_inline_dirents()
425 set_new_dnode(&dn, dir, ifolio, NULL, 0); in f2fs_move_inline_dirents()
463 f2fs_truncate_inline_inode(dir, ifolio, 0); in f2fs_move_inline_dirents()
536 static int f2fs_move_rehashed_dirents(struct inode *dir, struct folio *ifolio, in f2fs_move_rehashed_dirents() argument
545 f2fs_folio_put(ifolio, true); in f2fs_move_rehashed_dirents()
550 f2fs_truncate_inline_inode(dir, ifolio, 0); in f2fs_move_rehashed_dirents()
552 folio_unlock(ifolio); in f2fs_move_rehashed_dirents()
558 folio_lock(ifolio); in f2fs_move_rehashed_dirents()
574 folio_lock(ifolio); in f2fs_move_rehashed_dirents()
575 f2fs_folio_wait_writeback(ifolio, NODE, true, true); in f2fs_move_rehashed_dirents()
579 folio_mark_dirty(ifolio); in f2fs_move_rehashed_dirents()
580 f2fs_folio_put(ifolio, 1); in f2fs_move_rehashed_dirents()
586 static int do_convert_inline_dir(struct inode *dir, struct folio *ifolio, in do_convert_inline_dir() argument
590 return f2fs_move_inline_dirents(dir, ifolio, inline_dentry); in do_convert_inline_dir()
592 return f2fs_move_rehashed_dirents(dir, ifolio, inline_dentry); in do_convert_inline_dir()
598 struct folio *ifolio; in f2fs_try_convert_inline_dir() local
612 ifolio = f2fs_get_inode_folio(sbi, dir->i_ino); in f2fs_try_convert_inline_dir()
613 if (IS_ERR(ifolio)) { in f2fs_try_convert_inline_dir()
614 err = PTR_ERR(ifolio); in f2fs_try_convert_inline_dir()
618 if (f2fs_has_enough_room(dir, ifolio, &fname)) { in f2fs_try_convert_inline_dir()
619 f2fs_folio_put(ifolio, true); in f2fs_try_convert_inline_dir()
623 inline_dentry = inline_data_addr(dir, ifolio); in f2fs_try_convert_inline_dir()
625 err = do_convert_inline_dir(dir, ifolio, inline_dentry); in f2fs_try_convert_inline_dir()
627 f2fs_folio_put(ifolio, true); in f2fs_try_convert_inline_dir()
639 struct folio *ifolio; in f2fs_add_inline_entry() local
647 ifolio = f2fs_get_inode_folio(sbi, dir->i_ino); in f2fs_add_inline_entry()
648 if (IS_ERR(ifolio)) in f2fs_add_inline_entry()
649 return PTR_ERR(ifolio); in f2fs_add_inline_entry()
651 inline_dentry = inline_data_addr(dir, ifolio); in f2fs_add_inline_entry()
656 err = do_convert_inline_dir(dir, ifolio, inline_dentry); in f2fs_add_inline_entry()
666 folio = f2fs_init_inode_metadata(inode, dir, fname, ifolio); in f2fs_add_inline_entry()
673 f2fs_folio_wait_writeback(ifolio, NODE, true, true); in f2fs_add_inline_entry()
678 folio_mark_dirty(ifolio); in f2fs_add_inline_entry()
696 f2fs_folio_put(ifolio, true); in f2fs_add_inline_entry()
732 struct folio *ifolio; in f2fs_empty_inline_dir() local
737 ifolio = f2fs_get_inode_folio(sbi, dir->i_ino); in f2fs_empty_inline_dir()
738 if (IS_ERR(ifolio)) in f2fs_empty_inline_dir()
741 inline_dentry = inline_data_addr(dir, ifolio); in f2fs_empty_inline_dir()
746 f2fs_folio_put(ifolio, true); in f2fs_empty_inline_dir()
758 struct folio *ifolio = NULL; in f2fs_read_inline_dir() local
768 ifolio = f2fs_get_inode_folio(F2FS_I_SB(inode), inode->i_ino); in f2fs_read_inline_dir()
769 if (IS_ERR(ifolio)) in f2fs_read_inline_dir()
770 return PTR_ERR(ifolio); in f2fs_read_inline_dir()
776 folio_unlock(ifolio); in f2fs_read_inline_dir()
778 inline_dentry = inline_data_addr(inode, ifolio); in f2fs_read_inline_dir()
786 f2fs_folio_put(ifolio, false); in f2fs_read_inline_dir()
797 struct folio *ifolio; in f2fs_inline_data_fiemap() local
800 ifolio = f2fs_get_inode_folio(F2FS_I_SB(inode), inode->i_ino); in f2fs_inline_data_fiemap()
801 if (IS_ERR(ifolio)) in f2fs_inline_data_fiemap()
802 return PTR_ERR(ifolio); in f2fs_inline_data_fiemap()
827 byteaddr += (char *)inline_data_addr(inode, ifolio) - in f2fs_inline_data_fiemap()
828 (char *)F2FS_INODE(ifolio); in f2fs_inline_data_fiemap()
832 f2fs_folio_put(ifolio, true); in f2fs_inline_data_fiemap()