Lines Matching refs:dn
1169 static void __set_data_blkaddr(struct dnode_of_data *dn, block_t blkaddr) in __set_data_blkaddr() argument
1171 __le32 *addr = get_dnode_addr(dn->inode, dn->node_folio); in __set_data_blkaddr()
1173 dn->data_blkaddr = blkaddr; in __set_data_blkaddr()
1174 addr[dn->ofs_in_node] = cpu_to_le32(dn->data_blkaddr); in __set_data_blkaddr()
1183 void f2fs_set_data_blkaddr(struct dnode_of_data *dn, block_t blkaddr) in f2fs_set_data_blkaddr() argument
1185 f2fs_folio_wait_writeback(dn->node_folio, NODE, true, true); in f2fs_set_data_blkaddr()
1186 __set_data_blkaddr(dn, blkaddr); in f2fs_set_data_blkaddr()
1187 if (folio_mark_dirty(dn->node_folio)) in f2fs_set_data_blkaddr()
1188 dn->node_changed = true; in f2fs_set_data_blkaddr()
1191 void f2fs_update_data_blkaddr(struct dnode_of_data *dn, block_t blkaddr) in f2fs_update_data_blkaddr() argument
1193 f2fs_set_data_blkaddr(dn, blkaddr); in f2fs_update_data_blkaddr()
1194 f2fs_update_read_extent_cache(dn); in f2fs_update_data_blkaddr()
1198 int f2fs_reserve_new_blocks(struct dnode_of_data *dn, blkcnt_t count) in f2fs_reserve_new_blocks() argument
1200 struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode); in f2fs_reserve_new_blocks()
1206 if (unlikely(is_inode_flag_set(dn->inode, FI_NO_ALLOC))) in f2fs_reserve_new_blocks()
1208 err = inc_valid_block_count(sbi, dn->inode, &count, true); in f2fs_reserve_new_blocks()
1212 trace_f2fs_reserve_new_blocks(dn->inode, dn->nid, in f2fs_reserve_new_blocks()
1213 dn->ofs_in_node, count); in f2fs_reserve_new_blocks()
1215 f2fs_folio_wait_writeback(dn->node_folio, NODE, true, true); in f2fs_reserve_new_blocks()
1217 for (; count > 0; dn->ofs_in_node++) { in f2fs_reserve_new_blocks()
1218 block_t blkaddr = f2fs_data_blkaddr(dn); in f2fs_reserve_new_blocks()
1221 __set_data_blkaddr(dn, NEW_ADDR); in f2fs_reserve_new_blocks()
1226 if (folio_mark_dirty(dn->node_folio)) in f2fs_reserve_new_blocks()
1227 dn->node_changed = true; in f2fs_reserve_new_blocks()
1232 int f2fs_reserve_new_block(struct dnode_of_data *dn) in f2fs_reserve_new_block() argument
1234 unsigned int ofs_in_node = dn->ofs_in_node; in f2fs_reserve_new_block()
1237 ret = f2fs_reserve_new_blocks(dn, 1); in f2fs_reserve_new_block()
1238 dn->ofs_in_node = ofs_in_node; in f2fs_reserve_new_block()
1242 int f2fs_reserve_block(struct dnode_of_data *dn, pgoff_t index) in f2fs_reserve_block() argument
1244 bool need_put = dn->inode_folio ? false : true; in f2fs_reserve_block()
1247 err = f2fs_get_dnode_of_data(dn, index, ALLOC_NODE); in f2fs_reserve_block()
1251 if (dn->data_blkaddr == NULL_ADDR) in f2fs_reserve_block()
1252 err = f2fs_reserve_new_block(dn); in f2fs_reserve_block()
1254 f2fs_put_dnode(dn); in f2fs_reserve_block()
1270 struct dnode_of_data dn; in f2fs_get_read_data_folio() local
1289 &dn.data_blkaddr)) { in f2fs_get_read_data_folio()
1290 if (!f2fs_is_valid_blkaddr(F2FS_I_SB(inode), dn.data_blkaddr, in f2fs_get_read_data_folio()
1298 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_get_read_data_folio()
1299 err = f2fs_get_dnode_of_data(&dn, index, LOOKUP_NODE); in f2fs_get_read_data_folio()
1302 *next_pgofs = f2fs_get_next_page_offset(&dn, index); in f2fs_get_read_data_folio()
1305 f2fs_put_dnode(&dn); in f2fs_get_read_data_folio()
1307 if (unlikely(dn.data_blkaddr == NULL_ADDR)) { in f2fs_get_read_data_folio()
1313 if (dn.data_blkaddr != NEW_ADDR && in f2fs_get_read_data_folio()
1315 dn.data_blkaddr, in f2fs_get_read_data_folio()
1333 if (dn.data_blkaddr == NEW_ADDR) { in f2fs_get_read_data_folio()
1342 folio, dn.data_blkaddr, op_flags, for_write); in f2fs_get_read_data_folio()
1417 struct dnode_of_data dn; in f2fs_get_new_data_folio() local
1430 set_new_dnode(&dn, inode, ifolio, NULL, 0); in f2fs_get_new_data_folio()
1431 err = f2fs_reserve_block(&dn, index); in f2fs_get_new_data_folio()
1437 f2fs_put_dnode(&dn); in f2fs_get_new_data_folio()
1442 if (dn.data_blkaddr == NEW_ADDR) { in f2fs_get_new_data_folio()
1462 static int __allocate_data_block(struct dnode_of_data *dn, int seg_type) in __allocate_data_block() argument
1464 struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode); in __allocate_data_block()
1471 if (unlikely(is_inode_flag_set(dn->inode, FI_NO_ALLOC))) in __allocate_data_block()
1474 err = f2fs_get_node_info(sbi, dn->nid, &ni, false); in __allocate_data_block()
1478 dn->data_blkaddr = f2fs_data_blkaddr(dn); in __allocate_data_block()
1479 if (dn->data_blkaddr == NULL_ADDR) { in __allocate_data_block()
1480 err = inc_valid_block_count(sbi, dn->inode, &count, true); in __allocate_data_block()
1485 set_summary(&sum, dn->nid, dn->ofs_in_node, ni.version); in __allocate_data_block()
1486 old_blkaddr = dn->data_blkaddr; in __allocate_data_block()
1488 &dn->data_blkaddr, &sum, seg_type, NULL); in __allocate_data_block()
1495 f2fs_update_data_blkaddr(dn, dn->data_blkaddr); in __allocate_data_block()
1519 int f2fs_get_block_locked(struct dnode_of_data *dn, pgoff_t index) in f2fs_get_block_locked() argument
1521 struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode); in f2fs_get_block_locked()
1526 if (!f2fs_lookup_read_extent_cache_block(dn->inode, index, in f2fs_get_block_locked()
1527 &dn->data_blkaddr)) in f2fs_get_block_locked()
1528 err = f2fs_reserve_block(dn, index); in f2fs_get_block_locked()
1535 struct f2fs_map_blocks *map, struct dnode_of_data *dn, in f2fs_map_no_dnode() argument
1550 *map->m_next_pgofs = f2fs_get_next_page_offset(dn, pgoff); in f2fs_map_no_dnode()
1552 *map->m_next_extent = f2fs_get_next_page_offset(dn, pgoff); in f2fs_map_no_dnode()
1618 struct dnode_of_data dn; in f2fs_map_blocks() local
1663 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_map_blocks()
1664 err = f2fs_get_dnode_of_data(&dn, pgofs, mode); in f2fs_map_blocks()
1669 err = f2fs_map_no_dnode(inode, map, &dn, pgofs); in f2fs_map_blocks()
1675 last_ofs_in_node = ofs_in_node = dn.ofs_in_node; in f2fs_map_blocks()
1676 end_offset = ADDRS_PER_PAGE(dn.node_folio, inode); in f2fs_map_blocks()
1679 blkaddr = f2fs_data_blkaddr(&dn); in f2fs_map_blocks()
1700 last_ofs_in_node = dn.ofs_in_node; in f2fs_map_blocks()
1705 err = __allocate_data_block(&dn, map->m_seg_type); in f2fs_map_blocks()
1718 blkaddr = dn.data_blkaddr; in f2fs_map_blocks()
1723 f2fs_sanity_check_cluster(&dn)) { in f2fs_map_blocks()
1787 dn.ofs_in_node++; in f2fs_map_blocks()
1792 (pgofs == end || dn.ofs_in_node == end_offset)) { in f2fs_map_blocks()
1794 dn.ofs_in_node = ofs_in_node; in f2fs_map_blocks()
1795 err = f2fs_reserve_new_blocks(&dn, prealloc); in f2fs_map_blocks()
1799 map->m_len += dn.ofs_in_node - ofs_in_node; in f2fs_map_blocks()
1800 if (prealloc && dn.ofs_in_node != last_ofs_in_node + 1) { in f2fs_map_blocks()
1804 dn.ofs_in_node = end_offset; in f2fs_map_blocks()
1809 else if (dn.ofs_in_node < end_offset) in f2fs_map_blocks()
1816 f2fs_update_read_extent_cache_range(&dn, in f2fs_map_blocks()
1822 f2fs_put_dnode(&dn); in f2fs_map_blocks()
1826 f2fs_balance_fs(sbi, dn.node_changed); in f2fs_map_blocks()
1862 f2fs_update_read_extent_cache_range(&dn, in f2fs_map_blocks()
1869 f2fs_put_dnode(&dn); in f2fs_map_blocks()
1873 f2fs_balance_fs(sbi, dn.node_changed); in f2fs_map_blocks()
2266 struct dnode_of_data dn; in f2fs_read_multi_pages() local
2323 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_read_multi_pages()
2324 ret = f2fs_get_dnode_of_data(&dn, start_idx, LOOKUP_NODE); in f2fs_read_multi_pages()
2328 f2fs_bug_on(sbi, dn.data_blkaddr != COMPRESS_ADDR); in f2fs_read_multi_pages()
2334 blkaddr = from_dnode ? data_blkaddr(dn.inode, dn.node_folio, in f2fs_read_multi_pages()
2335 dn.ofs_in_node + i) : in f2fs_read_multi_pages()
2368 blkaddr = from_dnode ? data_blkaddr(dn.inode, dn.node_folio, in f2fs_read_multi_pages()
2369 dn.ofs_in_node + i + 1) : in f2fs_read_multi_pages()
2409 f2fs_put_dnode(&dn); in f2fs_read_multi_pages()
2416 f2fs_put_dnode(&dn); in f2fs_read_multi_pages()
2930 struct dnode_of_data dn; in f2fs_do_write_data_page() local
2941 set_new_dnode(&dn, F2FS_I(inode)->cow_inode, NULL, NULL, 0); in f2fs_do_write_data_page()
2943 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_do_write_data_page()
2965 err = f2fs_get_dnode_of_data(&dn, folio->index, LOOKUP_NODE); in f2fs_do_write_data_page()
2969 fio->old_blkaddr = dn.data_blkaddr; in f2fs_do_write_data_page()
3001 f2fs_put_dnode(&dn); in f2fs_do_write_data_page()
3024 err = f2fs_get_node_info(fio->sbi, dn.nid, &ni, false); in f2fs_do_write_data_page()
3040 f2fs_outplace_write_data(&dn, fio); in f2fs_do_write_data_page()
3046 f2fs_put_dnode(&dn); in f2fs_do_write_data_page()
3664 struct dnode_of_data dn; in prepare_write_begin() local
3697 set_new_dnode(&dn, inode, ifolio, ifolio, 0); in prepare_write_begin()
3707 err = f2fs_convert_inline_folio(&dn, folio); in prepare_write_begin()
3708 if (err || dn.data_blkaddr != NULL_ADDR) in prepare_write_begin()
3713 &dn.data_blkaddr)) { in prepare_write_begin()
3720 err = f2fs_reserve_block(&dn, index); in prepare_write_begin()
3725 err = f2fs_get_dnode_of_data(&dn, index, LOOKUP_NODE); in prepare_write_begin()
3726 if (!err && dn.data_blkaddr != NULL_ADDR) in prepare_write_begin()
3728 f2fs_put_dnode(&dn); in prepare_write_begin()
3737 *blk_addr = dn.data_blkaddr; in prepare_write_begin()
3738 *node_changed = dn.node_changed; in prepare_write_begin()
3740 f2fs_put_dnode(&dn); in prepare_write_begin()
3750 struct dnode_of_data dn; in __find_data_block() local
3758 set_new_dnode(&dn, inode, ifolio, ifolio, 0); in __find_data_block()
3761 &dn.data_blkaddr)) { in __find_data_block()
3763 err = f2fs_get_dnode_of_data(&dn, index, LOOKUP_NODE); in __find_data_block()
3765 dn.data_blkaddr = NULL_ADDR; in __find_data_block()
3769 *blk_addr = dn.data_blkaddr; in __find_data_block()
3770 f2fs_put_dnode(&dn); in __find_data_block()
3778 struct dnode_of_data dn; in __reserve_data_block() local
3790 set_new_dnode(&dn, inode, ifolio, ifolio, 0); in __reserve_data_block()
3792 if (!f2fs_lookup_read_extent_cache_block(dn.inode, index, in __reserve_data_block()
3793 &dn.data_blkaddr)) in __reserve_data_block()
3794 err = f2fs_reserve_block(&dn, index); in __reserve_data_block()
3796 *blk_addr = dn.data_blkaddr; in __reserve_data_block()
3797 *node_changed = dn.node_changed; in __reserve_data_block()
3798 f2fs_put_dnode(&dn); in __reserve_data_block()
4100 struct dnode_of_data dn; in f2fs_bmap_compress() local
4106 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_bmap_compress()
4107 ret = f2fs_get_dnode_of_data(&dn, start_idx, LOOKUP_NODE); in f2fs_bmap_compress()
4111 if (dn.data_blkaddr != COMPRESS_ADDR) { in f2fs_bmap_compress()
4112 dn.ofs_in_node += block - start_idx; in f2fs_bmap_compress()
4113 blknr = f2fs_data_blkaddr(&dn); in f2fs_bmap_compress()
4118 f2fs_put_dnode(&dn); in f2fs_bmap_compress()