Lines Matching refs:inode
222 struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode); in reserve_new_block()
224 if (unlikely(is_inode_flag_set(F2FS_I(dn->inode), FI_NO_ALLOC))) in reserve_new_block()
226 if (unlikely(!inc_valid_block_count(sbi, dn->inode, 1))) in reserve_new_block()
229 trace_f2fs_reserve_new_block(dn->inode, dn->nid, dn->ofs_in_node); in reserve_new_block()
233 mark_inode_dirty(dn->inode); in reserve_new_block()
267 static bool lookup_extent_info(struct inode *inode, pgoff_t pgofs, in lookup_extent_info() argument
270 struct f2fs_inode_info *fi = F2FS_I(inode); in lookup_extent_info()
280 stat_inc_total_hit(inode->i_sb); in lookup_extent_info()
288 stat_inc_read_hit(inode->i_sb); in lookup_extent_info()
296 static bool update_extent_info(struct inode *inode, pgoff_t fofs, in update_extent_info() argument
299 struct f2fs_inode_info *fi = F2FS_I(inode); in update_extent_info()
412 static struct extent_tree *__grab_extent_tree(struct inode *inode) in __grab_extent_tree() argument
414 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in __grab_extent_tree()
416 nid_t ino = inode->i_ino; in __grab_extent_tree()
573 static void f2fs_init_extent_tree(struct inode *inode, in f2fs_init_extent_tree() argument
576 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in f2fs_init_extent_tree()
584 et = __grab_extent_tree(inode); in f2fs_init_extent_tree()
606 static bool f2fs_lookup_extent_tree(struct inode *inode, pgoff_t pgofs, in f2fs_lookup_extent_tree() argument
609 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in f2fs_lookup_extent_tree()
613 trace_f2fs_lookup_extent_tree_start(inode, pgofs); in f2fs_lookup_extent_tree()
615 et = __find_extent_tree(sbi, inode->i_ino); in f2fs_lookup_extent_tree()
632 trace_f2fs_lookup_extent_tree_end(inode, pgofs, en); in f2fs_lookup_extent_tree()
638 static void f2fs_update_extent_tree(struct inode *inode, pgoff_t fofs, in f2fs_update_extent_tree() argument
641 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in f2fs_update_extent_tree()
648 trace_f2fs_update_extent_tree(inode, fofs, blkaddr); in f2fs_update_extent_tree()
650 et = __grab_extent_tree(inode); in f2fs_update_extent_tree()
720 void f2fs_preserve_extent_tree(struct inode *inode) in f2fs_preserve_extent_tree() argument
723 struct extent_info *ext = &F2FS_I(inode)->ext; in f2fs_preserve_extent_tree()
726 if (!test_opt(F2FS_I_SB(inode), EXTENT_CACHE)) in f2fs_preserve_extent_tree()
729 et = __find_extent_tree(F2FS_I_SB(inode), inode->i_ino); in f2fs_preserve_extent_tree()
733 update_inode_page(inode); in f2fs_preserve_extent_tree()
766 update_inode_page(inode); in f2fs_preserve_extent_tree()
828 void f2fs_destroy_extent_tree(struct inode *inode) in f2fs_destroy_extent_tree() argument
830 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in f2fs_destroy_extent_tree()
837 et = __find_extent_tree(sbi, inode->i_ino); in f2fs_destroy_extent_tree()
850 et = radix_tree_lookup(&sbi->extent_tree_root, inode->i_ino); in f2fs_destroy_extent_tree()
856 radix_tree_delete(&sbi->extent_tree_root, inode->i_ino); in f2fs_destroy_extent_tree()
861 trace_f2fs_destroy_extent_tree(inode, node_cnt); in f2fs_destroy_extent_tree()
865 void f2fs_init_extent_cache(struct inode *inode, struct f2fs_extent *i_ext) in f2fs_init_extent_cache() argument
867 if (test_opt(F2FS_I_SB(inode), EXTENT_CACHE)) in f2fs_init_extent_cache()
868 f2fs_init_extent_tree(inode, i_ext); in f2fs_init_extent_cache()
870 write_lock(&F2FS_I(inode)->ext_lock); in f2fs_init_extent_cache()
871 get_extent_info(&F2FS_I(inode)->ext, *i_ext); in f2fs_init_extent_cache()
872 write_unlock(&F2FS_I(inode)->ext_lock); in f2fs_init_extent_cache()
875 static bool f2fs_lookup_extent_cache(struct inode *inode, pgoff_t pgofs, in f2fs_lookup_extent_cache() argument
878 if (is_inode_flag_set(F2FS_I(inode), FI_NO_EXTENT)) in f2fs_lookup_extent_cache()
881 if (test_opt(F2FS_I_SB(inode), EXTENT_CACHE)) in f2fs_lookup_extent_cache()
882 return f2fs_lookup_extent_tree(inode, pgofs, ei); in f2fs_lookup_extent_cache()
884 return lookup_extent_info(inode, pgofs, ei); in f2fs_lookup_extent_cache()
889 struct f2fs_inode_info *fi = F2FS_I(dn->inode); in f2fs_update_extent_cache()
892 f2fs_bug_on(F2FS_I_SB(dn->inode), dn->data_blkaddr == NEW_ADDR); in f2fs_update_extent_cache()
900 if (test_opt(F2FS_I_SB(dn->inode), EXTENT_CACHE)) in f2fs_update_extent_cache()
901 return f2fs_update_extent_tree(dn->inode, fofs, in f2fs_update_extent_cache()
904 if (update_extent_info(dn->inode, fofs, dn->data_blkaddr)) in f2fs_update_extent_cache()
908 struct page *find_data_page(struct inode *inode, pgoff_t index, bool sync) in find_data_page() argument
910 struct address_space *mapping = inode->i_mapping; in find_data_page()
933 if (f2fs_lookup_extent_cache(inode, index, &ei)) { in find_data_page()
938 set_new_dnode(&dn, inode, NULL, NULL, 0); in find_data_page()
962 err = f2fs_submit_page_bio(F2FS_I_SB(inode), page, &fio); in find_data_page()
981 struct page *get_lock_data_page(struct inode *inode, pgoff_t index) in get_lock_data_page() argument
983 struct address_space *mapping = inode->i_mapping; in get_lock_data_page()
997 if (f2fs_lookup_extent_cache(inode, index, &ei)) { in get_lock_data_page()
1002 set_new_dnode(&dn, inode, NULL, NULL, 0); in get_lock_data_page()
1032 err = f2fs_submit_page_bio(F2FS_I_SB(inode), page, &fio); in get_lock_data_page()
1056 struct page *get_new_data_page(struct inode *inode, in get_new_data_page() argument
1059 struct address_space *mapping = inode->i_mapping; in get_new_data_page()
1064 set_new_dnode(&dn, inode, ipage, NULL, 0); in get_new_data_page()
1087 err = f2fs_submit_page_bio(F2FS_I_SB(inode), page, &fio); in get_new_data_page()
1104 i_size_read(inode) < ((index + 1) << PAGE_CACHE_SHIFT)) { in get_new_data_page()
1105 i_size_write(inode, ((index + 1) << PAGE_CACHE_SHIFT)); in get_new_data_page()
1107 set_inode_flag(F2FS_I(inode), FI_UPDATE_DIR); in get_new_data_page()
1118 struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode); in __allocate_data_block()
1119 struct f2fs_inode_info *fi = F2FS_I(dn->inode); in __allocate_data_block()
1125 if (unlikely(is_inode_flag_set(F2FS_I(dn->inode), FI_NO_ALLOC))) in __allocate_data_block()
1132 if (unlikely(!inc_valid_block_count(sbi, dn->inode, 1))) in __allocate_data_block()
1151 if (i_size_read(dn->inode) < ((fofs + 1) << PAGE_CACHE_SHIFT)) in __allocate_data_block()
1152 i_size_write(dn->inode, ((fofs + 1) << PAGE_CACHE_SHIFT)); in __allocate_data_block()
1157 static void __allocate_data_blocks(struct inode *inode, loff_t offset, in __allocate_data_blocks() argument
1160 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in __allocate_data_blocks()
1172 set_new_dnode(&dn, inode, NULL, NULL, 0); in __allocate_data_blocks()
1177 end_offset = ADDRS_PER_PAGE(dn.node_page, F2FS_I(inode)); in __allocate_data_blocks()
1218 static int __get_data_block(struct inode *inode, sector_t iblock, in __get_data_block() argument
1221 unsigned int blkbits = inode->i_sb->s_blocksize_bits; in __get_data_block()
1233 if (f2fs_lookup_extent_cache(inode, pgofs, &ei)) { in __get_data_block()
1234 f2fs_map_bh(inode->i_sb, pgofs, &ei, bh_result); in __get_data_block()
1239 f2fs_lock_op(F2FS_I_SB(inode)); in __get_data_block()
1242 set_new_dnode(&dn, inode, NULL, NULL, 0); in __get_data_block()
1254 map_bh(bh_result, inode->i_sb, dn.data_blkaddr); in __get_data_block()
1261 map_bh(bh_result, inode->i_sb, dn.data_blkaddr); in __get_data_block()
1266 end_offset = ADDRS_PER_PAGE(dn.node_page, F2FS_I(inode)); in __get_data_block()
1278 set_new_dnode(&dn, inode, NULL, NULL, 0); in __get_data_block()
1288 end_offset = ADDRS_PER_PAGE(dn.node_page, F2FS_I(inode)); in __get_data_block()
1317 f2fs_unlock_op(F2FS_I_SB(inode)); in __get_data_block()
1319 trace_f2fs_get_data_block(inode, iblock, bh_result, err); in __get_data_block()
1323 static int get_data_block(struct inode *inode, sector_t iblock, in get_data_block() argument
1326 return __get_data_block(inode, iblock, bh_result, create, false); in get_data_block()
1329 static int get_data_block_fiemap(struct inode *inode, sector_t iblock, in get_data_block_fiemap() argument
1332 return __get_data_block(inode, iblock, bh_result, create, true); in get_data_block_fiemap()
1335 int f2fs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, in f2fs_fiemap() argument
1338 return generic_block_fiemap(inode, fieinfo, in f2fs_fiemap()
1344 struct inode *inode = page->mapping->host; in f2fs_read_data_page() local
1350 if (f2fs_has_inline_data(inode)) in f2fs_read_data_page()
1351 ret = f2fs_read_inline_data(inode, page); in f2fs_read_data_page()
1362 struct inode *inode = file->f_mapping->host; in f2fs_read_data_pages() local
1365 if (f2fs_has_inline_data(inode)) in f2fs_read_data_pages()
1373 struct inode *inode = page->mapping->host; in do_write_data_page() local
1377 set_new_dnode(&dn, inode, NULL, NULL, 0); in do_write_data_page()
1398 need_inplace_update(inode))) { in do_write_data_page()
1400 set_inode_flag(F2FS_I(inode), FI_UPDATE_WRITE); in do_write_data_page()
1407 set_inode_flag(F2FS_I(inode), FI_APPEND_WRITE); in do_write_data_page()
1409 set_inode_flag(F2FS_I(inode), FI_FIRST_BLOCK_WRITTEN); in do_write_data_page()
1419 struct inode *inode = page->mapping->host; in f2fs_write_data_page() local
1420 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in f2fs_write_data_page()
1421 loff_t i_size = i_size_read(inode); in f2fs_write_data_page()
1449 if (f2fs_is_drop_cache(inode)) in f2fs_write_data_page()
1451 if (f2fs_is_volatile_file(inode) && !wbc->for_reclaim && in f2fs_write_data_page()
1456 if (S_ISDIR(inode->i_mode)) { in f2fs_write_data_page()
1476 if (f2fs_has_inline_data(inode)) in f2fs_write_data_page()
1477 err = f2fs_write_inline_data(inode, page); in f2fs_write_data_page()
1487 inode_dec_dirty_pages(inode); in f2fs_write_data_page()
1514 struct inode *inode = mapping->host; in f2fs_write_data_pages() local
1515 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in f2fs_write_data_pages()
1526 if (S_ISDIR(inode->i_mode) && wbc->sync_mode == WB_SYNC_NONE && in f2fs_write_data_pages()
1527 get_dirty_pages(inode) < nr_pages_to_skip(sbi, DATA) && in f2fs_write_data_pages()
1537 if (!S_ISDIR(inode->i_mode)) { in f2fs_write_data_pages()
1547 remove_dirty_dir_inode(inode); in f2fs_write_data_pages()
1553 wbc->pages_skipped += get_dirty_pages(inode); in f2fs_write_data_pages()
1559 struct inode *inode = mapping->host; in f2fs_write_failed() local
1561 if (to > inode->i_size) { in f2fs_write_failed()
1562 truncate_pagecache(inode, inode->i_size); in f2fs_write_failed()
1563 truncate_blocks(inode, inode->i_size, true); in f2fs_write_failed()
1571 struct inode *inode = mapping->host; in f2fs_write_begin() local
1572 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in f2fs_write_begin()
1578 trace_f2fs_write_begin(inode, pos, len, flags); in f2fs_write_begin()
1588 err = f2fs_convert_inline_inode(inode); in f2fs_write_begin()
1604 ipage = get_node_page(sbi, inode->i_ino); in f2fs_write_begin()
1610 set_new_dnode(&dn, inode, ipage, ipage, 0); in f2fs_write_begin()
1612 if (f2fs_has_inline_data(inode)) { in f2fs_write_begin()
1615 set_inode_flag(F2FS_I(inode), FI_DATA_EXIST); in f2fs_write_begin()
1635 if ((pos & PAGE_CACHE_MASK) >= i_size_read(inode)) { in f2fs_write_begin()
1687 struct inode *inode = page->mapping->host; in f2fs_write_end() local
1689 trace_f2fs_write_end(inode, pos, len, copied); in f2fs_write_end()
1693 if (pos + copied > i_size_read(inode)) { in f2fs_write_end()
1694 i_size_write(inode, pos + copied); in f2fs_write_end()
1695 mark_inode_dirty(inode); in f2fs_write_end()
1696 update_inode_page(inode); in f2fs_write_end()
1703 static int check_direct_IO(struct inode *inode, struct iov_iter *iter, in check_direct_IO() argument
1706 unsigned blocksize_mask = inode->i_sb->s_blocksize - 1; in check_direct_IO()
1725 struct inode *inode = mapping->host; in f2fs_direct_IO() local
1730 if (f2fs_has_inline_data(inode)) { in f2fs_direct_IO()
1731 err = f2fs_convert_inline_inode(inode); in f2fs_direct_IO()
1736 if (check_direct_IO(inode, iter, offset)) in f2fs_direct_IO()
1739 trace_f2fs_direct_IO_enter(inode, offset, count, iov_iter_rw(iter)); in f2fs_direct_IO()
1742 __allocate_data_blocks(inode, offset, count); in f2fs_direct_IO()
1744 err = blockdev_direct_IO(iocb, inode, iter, offset, get_data_block); in f2fs_direct_IO()
1748 trace_f2fs_direct_IO_exit(inode, offset, count, iov_iter_rw(iter), err); in f2fs_direct_IO()
1756 struct inode *inode = page->mapping->host; in f2fs_invalidate_page() local
1757 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in f2fs_invalidate_page()
1759 if (inode->i_ino >= F2FS_ROOT_INO(sbi) && in f2fs_invalidate_page()
1764 if (inode->i_ino == F2FS_META_INO(sbi)) in f2fs_invalidate_page()
1766 else if (inode->i_ino == F2FS_NODE_INO(sbi)) in f2fs_invalidate_page()
1769 inode_dec_dirty_pages(inode); in f2fs_invalidate_page()
1787 struct inode *inode = mapping->host; in f2fs_set_data_page_dirty() local
1793 if (f2fs_is_atomic_file(inode)) { in f2fs_set_data_page_dirty()
1794 register_inmem_page(inode, page); in f2fs_set_data_page_dirty()
1798 mark_inode_dirty(inode); in f2fs_set_data_page_dirty()
1802 update_dirty_page(inode, page); in f2fs_set_data_page_dirty()
1810 struct inode *inode = mapping->host; in f2fs_bmap() local
1813 if (f2fs_has_inline_data(inode)) { in f2fs_bmap()
1814 int err = f2fs_convert_inline_inode(inode); in f2fs_bmap()