Lines Matching full:dn
645 pgoff_t f2fs_get_next_page_offset(struct dnode_of_data *dn, pgoff_t pgofs) in f2fs_get_next_page_offset() argument
647 const long direct_index = ADDRS_PER_INODE(dn->inode); in f2fs_get_next_page_offset()
648 const long direct_blks = ADDRS_PER_BLOCK(dn->inode); in f2fs_get_next_page_offset()
649 const long indirect_blks = ADDRS_PER_BLOCK(dn->inode) * NIDS_PER_BLOCK; in f2fs_get_next_page_offset()
650 unsigned int skipped_unit = ADDRS_PER_BLOCK(dn->inode); in f2fs_get_next_page_offset()
651 int cur_level = dn->cur_level; in f2fs_get_next_page_offset()
652 int max_level = dn->max_level; in f2fs_get_next_page_offset()
655 if (!dn->max_level) in f2fs_get_next_page_offset()
661 switch (dn->max_level) { in f2fs_get_next_page_offset()
672 f2fs_bug_on(F2FS_I_SB(dn->inode), 1); in f2fs_get_next_page_offset()
757 * Caller should call f2fs_put_dnode(dn).
761 int f2fs_get_dnode_of_data(struct dnode_of_data *dn, pgoff_t index, int mode) in f2fs_get_dnode_of_data() argument
763 struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode); in f2fs_get_dnode_of_data()
772 level = get_node_path(dn->inode, index, offset, noffset); in f2fs_get_dnode_of_data()
776 nids[0] = dn->inode->i_ino; in f2fs_get_dnode_of_data()
777 npage[0] = dn->inode_page; in f2fs_get_dnode_of_data()
786 if (f2fs_has_inline_data(dn->inode) && index) { in f2fs_get_dnode_of_data()
795 dn->inode_page = npage[0]; in f2fs_get_dnode_of_data()
796 dn->inode_page_locked = true; in f2fs_get_dnode_of_data()
809 dn->nid = nids[i]; in f2fs_get_dnode_of_data()
810 npage[i] = f2fs_new_node_page(dn, noffset[i]); in f2fs_get_dnode_of_data()
829 dn->inode_page_locked = false; in f2fs_get_dnode_of_data()
848 dn->nid = nids[level]; in f2fs_get_dnode_of_data()
849 dn->ofs_in_node = offset[level]; in f2fs_get_dnode_of_data()
850 dn->node_page = npage[level]; in f2fs_get_dnode_of_data()
851 dn->data_blkaddr = f2fs_data_blkaddr(dn); in f2fs_get_dnode_of_data()
853 if (is_inode_flag_set(dn->inode, FI_COMPRESSED_FILE) && in f2fs_get_dnode_of_data()
855 unsigned int c_len = f2fs_cluster_blocks_are_contiguous(dn); in f2fs_get_dnode_of_data()
861 blkaddr = f2fs_data_blkaddr(dn); in f2fs_get_dnode_of_data()
863 blkaddr = data_blkaddr(dn->inode, dn->node_page, in f2fs_get_dnode_of_data()
864 dn->ofs_in_node + 1); in f2fs_get_dnode_of_data()
866 f2fs_update_read_extent_tree_range_compressed(dn->inode, in f2fs_get_dnode_of_data()
868 F2FS_I(dn->inode)->i_cluster_size, in f2fs_get_dnode_of_data()
879 dn->inode_page = NULL; in f2fs_get_dnode_of_data()
880 dn->node_page = NULL; in f2fs_get_dnode_of_data()
882 dn->cur_level = i; in f2fs_get_dnode_of_data()
883 dn->max_level = level; in f2fs_get_dnode_of_data()
884 dn->ofs_in_node = offset[level]; in f2fs_get_dnode_of_data()
889 static int truncate_node(struct dnode_of_data *dn) in truncate_node() argument
891 struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode); in truncate_node()
896 err = f2fs_get_node_info(sbi, dn->nid, &ni, false); in truncate_node()
902 dec_valid_node_count(sbi, dn->inode, dn->nid == dn->inode->i_ino); in truncate_node()
905 if (dn->nid == dn->inode->i_ino) { in truncate_node()
906 f2fs_remove_orphan_inode(sbi, dn->nid); in truncate_node()
908 f2fs_inode_synced(dn->inode); in truncate_node()
911 clear_node_page_dirty(dn->node_page); in truncate_node()
914 index = dn->node_page->index; in truncate_node()
915 f2fs_put_page(dn->node_page, 1); in truncate_node()
920 dn->node_page = NULL; in truncate_node()
921 trace_f2fs_truncate_node(dn->inode, dn->nid, ni.blk_addr); in truncate_node()
926 static int truncate_dnode(struct dnode_of_data *dn) in truncate_dnode() argument
928 struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode); in truncate_dnode()
932 if (dn->nid == 0) in truncate_dnode()
936 page = f2fs_get_node_page(sbi, dn->nid); in truncate_dnode()
942 if (IS_INODE(page) || ino_of_node(page) != dn->inode->i_ino) { in truncate_dnode()
944 dn->inode->i_ino, dn->nid, ino_of_node(page)); in truncate_dnode()
952 dn->node_page = page; in truncate_dnode()
953 dn->ofs_in_node = 0; in truncate_dnode()
954 f2fs_truncate_data_blocks_range(dn, ADDRS_PER_BLOCK(dn->inode)); in truncate_dnode()
955 err = truncate_node(dn); in truncate_dnode()
964 static int truncate_nodes(struct dnode_of_data *dn, unsigned int nofs, in truncate_nodes() argument
967 struct dnode_of_data rdn = *dn; in truncate_nodes()
975 if (dn->nid == 0) in truncate_nodes()
978 trace_f2fs_truncate_nodes_enter(dn->inode, dn->nid, dn->data_blkaddr); in truncate_nodes()
980 page = f2fs_get_node_page(F2FS_I_SB(dn->inode), dn->nid); in truncate_nodes()
982 trace_f2fs_truncate_nodes_exit(dn->inode, PTR_ERR(page)); in truncate_nodes()
999 dn->node_changed = true; in truncate_nodes()
1013 dn->node_changed = true; in truncate_nodes()
1024 dn->node_page = page; in truncate_nodes()
1025 ret = truncate_node(dn); in truncate_nodes()
1032 trace_f2fs_truncate_nodes_exit(dn->inode, freed); in truncate_nodes()
1037 trace_f2fs_truncate_nodes_exit(dn->inode, ret); in truncate_nodes()
1041 static int truncate_partial_nodes(struct dnode_of_data *dn, in truncate_partial_nodes() argument
1058 pages[i] = f2fs_get_node_page(F2FS_I_SB(dn->inode), nid[i]); in truncate_partial_nodes()
1074 dn->nid = child_nid; in truncate_partial_nodes()
1075 err = truncate_dnode(dn); in truncate_partial_nodes()
1079 dn->node_changed = true; in truncate_partial_nodes()
1083 dn->node_page = pages[idx]; in truncate_partial_nodes()
1084 dn->nid = nid[idx]; in truncate_partial_nodes()
1085 err = truncate_node(dn); in truncate_partial_nodes()
1098 trace_f2fs_truncate_partial_nodes(dn->inode, nid, depth, err); in truncate_partial_nodes()
1113 struct dnode_of_data dn; in f2fs_truncate_inode_blocks() local
1130 set_new_dnode(&dn, inode, page, NULL, 0); in f2fs_truncate_inode_blocks()
1143 err = truncate_partial_nodes(&dn, ri, offset, level); in f2fs_truncate_inode_blocks()
1152 err = truncate_partial_nodes(&dn, ri, offset, level); in f2fs_truncate_inode_blocks()
1162 dn.nid = le32_to_cpu(ri->i_nid[offset[0] - NODE_DIR1_BLOCK]); in f2fs_truncate_inode_blocks()
1166 err = truncate_dnode(&dn); in f2fs_truncate_inode_blocks()
1171 err = truncate_nodes(&dn, nofs, offset[1], 2); in f2fs_truncate_inode_blocks()
1175 err = truncate_nodes(&dn, nofs, offset[1], 3); in f2fs_truncate_inode_blocks()
1208 struct dnode_of_data dn; in f2fs_truncate_xattr_node() local
1219 set_new_dnode(&dn, inode, NULL, npage, nid); in f2fs_truncate_xattr_node()
1220 err = truncate_node(&dn); in f2fs_truncate_xattr_node()
1237 struct dnode_of_data dn; in f2fs_remove_inode_page() local
1240 set_new_dnode(&dn, inode, NULL, NULL, inode->i_ino); in f2fs_remove_inode_page()
1241 err = f2fs_get_dnode_of_data(&dn, 0, LOOKUP_NODE); in f2fs_remove_inode_page()
1247 f2fs_put_dnode(&dn); in f2fs_remove_inode_page()
1254 f2fs_truncate_data_blocks_range(&dn, 1); in f2fs_remove_inode_page()
1258 f2fs_put_dnode(&dn); in f2fs_remove_inode_page()
1270 err = truncate_node(&dn); in f2fs_remove_inode_page()
1272 f2fs_put_dnode(&dn); in f2fs_remove_inode_page()
1280 struct dnode_of_data dn; in f2fs_new_inode_page() local
1283 set_new_dnode(&dn, inode, NULL, NULL, inode->i_ino); in f2fs_new_inode_page()
1286 return f2fs_new_node_page(&dn, 0); in f2fs_new_inode_page()
1289 struct page *f2fs_new_node_page(struct dnode_of_data *dn, unsigned int ofs) in f2fs_new_node_page() argument
1291 struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode); in f2fs_new_node_page()
1296 if (unlikely(is_inode_flag_set(dn->inode, FI_NO_ALLOC))) in f2fs_new_node_page()
1299 page = f2fs_grab_cache_page(NODE_MAPPING(sbi), dn->nid, false); in f2fs_new_node_page()
1303 if (unlikely((err = inc_valid_node_count(sbi, dn->inode, !ofs)))) in f2fs_new_node_page()
1307 err = f2fs_get_node_info(sbi, dn->nid, &new_ni, false); in f2fs_new_node_page()
1309 dec_valid_node_count(sbi, dn->inode, !ofs); in f2fs_new_node_page()
1319 new_ni.nid = dn->nid; in f2fs_new_node_page()
1320 new_ni.ino = dn->inode->i_ino; in f2fs_new_node_page()
1327 fill_node_footer(page, dn->nid, dn->inode->i_ino, ofs, true); in f2fs_new_node_page()
1328 set_cold_node(page, S_ISDIR(dn->inode->i_mode)); in f2fs_new_node_page()
1332 dn->node_changed = true; in f2fs_new_node_page()
1335 f2fs_i_xnid_write(dn->inode, dn->nid); in f2fs_new_node_page()
2713 struct dnode_of_data dn; in f2fs_recover_xattr_data() local
2735 set_new_dnode(&dn, inode, NULL, NULL, new_xnid); in f2fs_recover_xattr_data()
2736 xpage = f2fs_new_node_page(&dn, XATTR_NODE_OFFSET); in f2fs_recover_xattr_data()