Lines Matching full:dn

1182 static void __set_data_blkaddr(struct dnode_of_data *dn)  in __set_data_blkaddr()  argument
1184 struct f2fs_node *rn = F2FS_NODE(dn->node_page); in __set_data_blkaddr()
1188 if (IS_INODE(dn->node_page) && f2fs_has_extra_attr(dn->inode)) in __set_data_blkaddr()
1189 base = get_extra_isize(dn->inode); in __set_data_blkaddr()
1193 addr_array[base + dn->ofs_in_node] = cpu_to_le32(dn->data_blkaddr); in __set_data_blkaddr()
1202 void f2fs_set_data_blkaddr(struct dnode_of_data *dn) in f2fs_set_data_blkaddr() argument
1204 f2fs_wait_on_page_writeback(dn->node_page, NODE, true, true); in f2fs_set_data_blkaddr()
1205 __set_data_blkaddr(dn); in f2fs_set_data_blkaddr()
1206 if (set_page_dirty(dn->node_page)) in f2fs_set_data_blkaddr()
1207 dn->node_changed = true; in f2fs_set_data_blkaddr()
1210 void f2fs_update_data_blkaddr(struct dnode_of_data *dn, block_t blkaddr) in f2fs_update_data_blkaddr() argument
1212 dn->data_blkaddr = blkaddr; in f2fs_update_data_blkaddr()
1213 f2fs_set_data_blkaddr(dn); in f2fs_update_data_blkaddr()
1214 f2fs_update_read_extent_cache(dn); in f2fs_update_data_blkaddr()
1217 /* dn->ofs_in_node will be returned with up-to-date last block pointer */
1218 int f2fs_reserve_new_blocks(struct dnode_of_data *dn, blkcnt_t count) in f2fs_reserve_new_blocks() argument
1220 struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode); in f2fs_reserve_new_blocks()
1226 if (unlikely(is_inode_flag_set(dn->inode, FI_NO_ALLOC))) in f2fs_reserve_new_blocks()
1228 if (unlikely((err = inc_valid_block_count(sbi, dn->inode, &count)))) in f2fs_reserve_new_blocks()
1231 trace_f2fs_reserve_new_blocks(dn->inode, dn->nid, in f2fs_reserve_new_blocks()
1232 dn->ofs_in_node, count); in f2fs_reserve_new_blocks()
1234 f2fs_wait_on_page_writeback(dn->node_page, NODE, true, true); in f2fs_reserve_new_blocks()
1236 for (; count > 0; dn->ofs_in_node++) { in f2fs_reserve_new_blocks()
1237 block_t blkaddr = f2fs_data_blkaddr(dn); in f2fs_reserve_new_blocks()
1240 dn->data_blkaddr = NEW_ADDR; in f2fs_reserve_new_blocks()
1241 __set_data_blkaddr(dn); in f2fs_reserve_new_blocks()
1246 if (set_page_dirty(dn->node_page)) in f2fs_reserve_new_blocks()
1247 dn->node_changed = true; in f2fs_reserve_new_blocks()
1251 /* Should keep dn->ofs_in_node unchanged */
1252 int f2fs_reserve_new_block(struct dnode_of_data *dn) in f2fs_reserve_new_block() argument
1254 unsigned int ofs_in_node = dn->ofs_in_node; in f2fs_reserve_new_block()
1257 ret = f2fs_reserve_new_blocks(dn, 1); in f2fs_reserve_new_block()
1258 dn->ofs_in_node = ofs_in_node; in f2fs_reserve_new_block()
1262 int f2fs_reserve_block(struct dnode_of_data *dn, pgoff_t index) in f2fs_reserve_block() argument
1264 bool need_put = dn->inode_page ? false : true; in f2fs_reserve_block()
1267 err = f2fs_get_dnode_of_data(dn, index, ALLOC_NODE); in f2fs_reserve_block()
1271 if (dn->data_blkaddr == NULL_ADDR) in f2fs_reserve_block()
1272 err = f2fs_reserve_new_block(dn); in f2fs_reserve_block()
1274 f2fs_put_dnode(dn); in f2fs_reserve_block()
1283 struct dnode_of_data dn; in f2fs_get_read_data_page() local
1292 &dn.data_blkaddr)) { in f2fs_get_read_data_page()
1293 if (!f2fs_is_valid_blkaddr(F2FS_I_SB(inode), dn.data_blkaddr, in f2fs_get_read_data_page()
1303 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_get_read_data_page()
1304 err = f2fs_get_dnode_of_data(&dn, index, LOOKUP_NODE); in f2fs_get_read_data_page()
1307 *next_pgofs = f2fs_get_next_page_offset(&dn, index); in f2fs_get_read_data_page()
1310 f2fs_put_dnode(&dn); in f2fs_get_read_data_page()
1312 if (unlikely(dn.data_blkaddr == NULL_ADDR)) { in f2fs_get_read_data_page()
1318 if (dn.data_blkaddr != NEW_ADDR && in f2fs_get_read_data_page()
1320 dn.data_blkaddr, in f2fs_get_read_data_page()
1340 if (dn.data_blkaddr == NEW_ADDR) { in f2fs_get_read_data_page()
1348 err = f2fs_submit_page_read(inode, page, dn.data_blkaddr, in f2fs_get_read_data_page()
1423 struct dnode_of_data dn; in f2fs_get_new_data_page() local
1436 set_new_dnode(&dn, inode, ipage, NULL, 0); in f2fs_get_new_data_page()
1437 err = f2fs_reserve_block(&dn, index); in f2fs_get_new_data_page()
1443 f2fs_put_dnode(&dn); in f2fs_get_new_data_page()
1448 if (dn.data_blkaddr == NEW_ADDR) { in f2fs_get_new_data_page()
1468 static int __allocate_data_block(struct dnode_of_data *dn, int seg_type) in __allocate_data_block() argument
1470 struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode); in __allocate_data_block()
1477 if (unlikely(is_inode_flag_set(dn->inode, FI_NO_ALLOC))) in __allocate_data_block()
1480 err = f2fs_get_node_info(sbi, dn->nid, &ni, false); in __allocate_data_block()
1484 dn->data_blkaddr = f2fs_data_blkaddr(dn); in __allocate_data_block()
1485 if (dn->data_blkaddr == NULL_ADDR) { in __allocate_data_block()
1486 err = inc_valid_block_count(sbi, dn->inode, &count); in __allocate_data_block()
1491 set_summary(&sum, dn->nid, dn->ofs_in_node, ni.version); in __allocate_data_block()
1492 old_blkaddr = dn->data_blkaddr; in __allocate_data_block()
1493 f2fs_allocate_data_block(sbi, NULL, old_blkaddr, &dn->data_blkaddr, in __allocate_data_block()
1500 f2fs_update_data_blkaddr(dn, dn->data_blkaddr); in __allocate_data_block()
1520 int f2fs_get_block_locked(struct dnode_of_data *dn, pgoff_t index) in f2fs_get_block_locked() argument
1522 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()
1599 struct dnode_of_data dn; in f2fs_map_blocks() local
1633 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_map_blocks()
1634 err = f2fs_get_dnode_of_data(&dn, pgofs, mode); in f2fs_map_blocks()
1639 err = f2fs_map_no_dnode(inode, map, &dn, pgofs); in f2fs_map_blocks()
1645 last_ofs_in_node = ofs_in_node = dn.ofs_in_node; in f2fs_map_blocks()
1646 end_offset = ADDRS_PER_PAGE(dn.node_page, inode); in f2fs_map_blocks()
1649 blkaddr = f2fs_data_blkaddr(&dn); in f2fs_map_blocks()
1670 last_ofs_in_node = dn.ofs_in_node; in f2fs_map_blocks()
1675 err = __allocate_data_block(&dn, map->m_seg_type); in f2fs_map_blocks()
1688 blkaddr = dn.data_blkaddr; in f2fs_map_blocks()
1693 f2fs_sanity_check_cluster(&dn) && in f2fs_map_blocks()
1753 dn.ofs_in_node++; in f2fs_map_blocks()
1758 (pgofs == end || dn.ofs_in_node == end_offset)) { in f2fs_map_blocks()
1760 dn.ofs_in_node = ofs_in_node; in f2fs_map_blocks()
1761 err = f2fs_reserve_new_blocks(&dn, prealloc); in f2fs_map_blocks()
1765 map->m_len += dn.ofs_in_node - ofs_in_node; in f2fs_map_blocks()
1766 if (prealloc && dn.ofs_in_node != last_ofs_in_node + 1) { in f2fs_map_blocks()
1770 dn.ofs_in_node = end_offset; in f2fs_map_blocks()
1775 else if (dn.ofs_in_node < end_offset) in f2fs_map_blocks()
1782 f2fs_update_read_extent_cache_range(&dn, in f2fs_map_blocks()
1788 f2fs_put_dnode(&dn); in f2fs_map_blocks()
1792 f2fs_balance_fs(sbi, dn.node_changed); in f2fs_map_blocks()
1827 f2fs_update_read_extent_cache_range(&dn, in f2fs_map_blocks()
1834 f2fs_put_dnode(&dn); in f2fs_map_blocks()
1838 f2fs_balance_fs(sbi, dn.node_changed); in f2fs_map_blocks()
2243 struct dnode_of_data dn; in f2fs_read_multi_pages() local
2291 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_read_multi_pages()
2292 ret = f2fs_get_dnode_of_data(&dn, start_idx, LOOKUP_NODE); in f2fs_read_multi_pages()
2300 f2fs_bug_on(sbi, dn.data_blkaddr != COMPRESS_ADDR); in f2fs_read_multi_pages()
2306 blkaddr = from_dnode ? data_blkaddr(dn.inode, dn.node_page, in f2fs_read_multi_pages()
2307 dn.ofs_in_node + i) : in f2fs_read_multi_pages()
2340 blkaddr = from_dnode ? data_blkaddr(dn.inode, dn.node_page, in f2fs_read_multi_pages()
2341 dn.ofs_in_node + i + 1) : in f2fs_read_multi_pages()
2367 f2fs_put_dnode(&dn); in f2fs_read_multi_pages()
2386 f2fs_put_dnode(&dn); in f2fs_read_multi_pages()
2393 f2fs_put_dnode(&dn); in f2fs_read_multi_pages()
2702 struct dnode_of_data dn; in f2fs_do_write_data_page() local
2709 set_new_dnode(&dn, F2FS_I(inode)->cow_inode, NULL, NULL, 0); in f2fs_do_write_data_page()
2711 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_do_write_data_page()
2732 err = f2fs_get_dnode_of_data(&dn, page->index, LOOKUP_NODE); in f2fs_do_write_data_page()
2736 fio->old_blkaddr = dn.data_blkaddr; in f2fs_do_write_data_page()
2765 f2fs_put_dnode(&dn); in f2fs_do_write_data_page()
2789 err = f2fs_get_node_info(fio->sbi, dn.nid, &ni, false); in f2fs_do_write_data_page()
2805 f2fs_outplace_write_data(&dn, fio); in f2fs_do_write_data_page()
2811 f2fs_put_dnode(&dn); in f2fs_do_write_data_page()
3418 struct dnode_of_data dn; in prepare_write_begin() local
3450 set_new_dnode(&dn, inode, ipage, ipage, 0); in prepare_write_begin()
3460 err = f2fs_convert_inline_page(&dn, page); in prepare_write_begin()
3461 if (err || dn.data_blkaddr != NULL_ADDR) in prepare_write_begin()
3466 &dn.data_blkaddr)) { in prepare_write_begin()
3468 err = f2fs_reserve_block(&dn, index); in prepare_write_begin()
3473 err = f2fs_get_dnode_of_data(&dn, index, LOOKUP_NODE); in prepare_write_begin()
3474 if (!err && dn.data_blkaddr != NULL_ADDR) in prepare_write_begin()
3476 f2fs_put_dnode(&dn); in prepare_write_begin()
3485 *blk_addr = dn.data_blkaddr; in prepare_write_begin()
3486 *node_changed = dn.node_changed; in prepare_write_begin()
3488 f2fs_put_dnode(&dn); in prepare_write_begin()
3498 struct dnode_of_data dn; in __find_data_block() local
3506 set_new_dnode(&dn, inode, ipage, ipage, 0); in __find_data_block()
3509 &dn.data_blkaddr)) { in __find_data_block()
3511 err = f2fs_get_dnode_of_data(&dn, index, LOOKUP_NODE); in __find_data_block()
3513 dn.data_blkaddr = NULL_ADDR; in __find_data_block()
3517 *blk_addr = dn.data_blkaddr; in __find_data_block()
3518 f2fs_put_dnode(&dn); in __find_data_block()
3526 struct dnode_of_data dn; in __reserve_data_block() local
3537 set_new_dnode(&dn, inode, ipage, ipage, 0); in __reserve_data_block()
3539 if (!f2fs_lookup_read_extent_cache_block(dn.inode, index, in __reserve_data_block()
3540 &dn.data_blkaddr)) in __reserve_data_block()
3541 err = f2fs_reserve_block(&dn, index); in __reserve_data_block()
3543 *blk_addr = dn.data_blkaddr; in __reserve_data_block()
3544 *node_changed = dn.node_changed; in __reserve_data_block()
3545 f2fs_put_dnode(&dn); in __reserve_data_block()
3833 struct dnode_of_data dn; in f2fs_bmap_compress() local
3839 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_bmap_compress()
3840 ret = f2fs_get_dnode_of_data(&dn, start_idx, LOOKUP_NODE); in f2fs_bmap_compress()
3844 if (dn.data_blkaddr != COMPRESS_ADDR) { in f2fs_bmap_compress()
3845 dn.ofs_in_node += block - start_idx; in f2fs_bmap_compress()
3846 blknr = f2fs_data_blkaddr(&dn); in f2fs_bmap_compress()
3851 f2fs_put_dnode(&dn); in f2fs_bmap_compress()