Lines Matching refs:dn

736 static void __set_data_blkaddr(struct dnode_of_data *dn)  in __set_data_blkaddr()  argument
738 struct f2fs_node *rn = F2FS_NODE(dn->node_page); in __set_data_blkaddr()
742 if (IS_INODE(dn->node_page) && f2fs_has_extra_attr(dn->inode)) in __set_data_blkaddr()
743 base = get_extra_isize(dn->inode); in __set_data_blkaddr()
747 addr_array[base + dn->ofs_in_node] = cpu_to_le32(dn->data_blkaddr); in __set_data_blkaddr()
756 void f2fs_set_data_blkaddr(struct dnode_of_data *dn) in f2fs_set_data_blkaddr() argument
758 f2fs_wait_on_page_writeback(dn->node_page, NODE, true, true); in f2fs_set_data_blkaddr()
759 __set_data_blkaddr(dn); in f2fs_set_data_blkaddr()
760 if (set_page_dirty(dn->node_page)) in f2fs_set_data_blkaddr()
761 dn->node_changed = true; in f2fs_set_data_blkaddr()
764 void f2fs_update_data_blkaddr(struct dnode_of_data *dn, block_t blkaddr) in f2fs_update_data_blkaddr() argument
766 dn->data_blkaddr = blkaddr; in f2fs_update_data_blkaddr()
767 f2fs_set_data_blkaddr(dn); in f2fs_update_data_blkaddr()
768 f2fs_update_extent_cache(dn); in f2fs_update_data_blkaddr()
772 int f2fs_reserve_new_blocks(struct dnode_of_data *dn, blkcnt_t count) in f2fs_reserve_new_blocks() argument
774 struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode); in f2fs_reserve_new_blocks()
780 if (unlikely(is_inode_flag_set(dn->inode, FI_NO_ALLOC))) in f2fs_reserve_new_blocks()
782 if (unlikely((err = inc_valid_block_count(sbi, dn->inode, &count)))) in f2fs_reserve_new_blocks()
785 trace_f2fs_reserve_new_blocks(dn->inode, dn->nid, in f2fs_reserve_new_blocks()
786 dn->ofs_in_node, count); in f2fs_reserve_new_blocks()
788 f2fs_wait_on_page_writeback(dn->node_page, NODE, true, true); in f2fs_reserve_new_blocks()
790 for (; count > 0; dn->ofs_in_node++) { in f2fs_reserve_new_blocks()
791 block_t blkaddr = datablock_addr(dn->inode, in f2fs_reserve_new_blocks()
792 dn->node_page, dn->ofs_in_node); in f2fs_reserve_new_blocks()
794 dn->data_blkaddr = NEW_ADDR; in f2fs_reserve_new_blocks()
795 __set_data_blkaddr(dn); in f2fs_reserve_new_blocks()
800 if (set_page_dirty(dn->node_page)) in f2fs_reserve_new_blocks()
801 dn->node_changed = true; in f2fs_reserve_new_blocks()
806 int f2fs_reserve_new_block(struct dnode_of_data *dn) in f2fs_reserve_new_block() argument
808 unsigned int ofs_in_node = dn->ofs_in_node; in f2fs_reserve_new_block()
811 ret = f2fs_reserve_new_blocks(dn, 1); in f2fs_reserve_new_block()
812 dn->ofs_in_node = ofs_in_node; in f2fs_reserve_new_block()
816 int f2fs_reserve_block(struct dnode_of_data *dn, pgoff_t index) in f2fs_reserve_block() argument
818 bool need_put = dn->inode_page ? false : true; in f2fs_reserve_block()
821 err = f2fs_get_dnode_of_data(dn, index, ALLOC_NODE); in f2fs_reserve_block()
825 if (dn->data_blkaddr == NULL_ADDR) in f2fs_reserve_block()
826 err = f2fs_reserve_new_block(dn); in f2fs_reserve_block()
828 f2fs_put_dnode(dn); in f2fs_reserve_block()
832 int f2fs_get_block(struct dnode_of_data *dn, pgoff_t index) in f2fs_get_block() argument
835 struct inode *inode = dn->inode; in f2fs_get_block()
838 dn->data_blkaddr = ei.blk + index - ei.fofs; in f2fs_get_block()
842 return f2fs_reserve_block(dn, index); in f2fs_get_block()
849 struct dnode_of_data dn; in f2fs_get_read_data_page() local
859 dn.data_blkaddr = ei.blk + index - ei.fofs; in f2fs_get_read_data_page()
860 if (!f2fs_is_valid_blkaddr(F2FS_I_SB(inode), dn.data_blkaddr, in f2fs_get_read_data_page()
868 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_get_read_data_page()
869 err = f2fs_get_dnode_of_data(&dn, index, LOOKUP_NODE); in f2fs_get_read_data_page()
872 f2fs_put_dnode(&dn); in f2fs_get_read_data_page()
874 if (unlikely(dn.data_blkaddr == NULL_ADDR)) { in f2fs_get_read_data_page()
878 if (dn.data_blkaddr != NEW_ADDR && in f2fs_get_read_data_page()
880 dn.data_blkaddr, in f2fs_get_read_data_page()
898 if (dn.data_blkaddr == NEW_ADDR) { in f2fs_get_read_data_page()
906 err = f2fs_submit_page_read(inode, page, dn.data_blkaddr); in f2fs_get_read_data_page()
983 struct dnode_of_data dn; in f2fs_get_new_data_page() local
996 set_new_dnode(&dn, inode, ipage, NULL, 0); in f2fs_get_new_data_page()
997 err = f2fs_reserve_block(&dn, index); in f2fs_get_new_data_page()
1003 f2fs_put_dnode(&dn); in f2fs_get_new_data_page()
1008 if (dn.data_blkaddr == NEW_ADDR) { in f2fs_get_new_data_page()
1028 static int __allocate_data_block(struct dnode_of_data *dn, int seg_type) in __allocate_data_block() argument
1030 struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode); in __allocate_data_block()
1037 if (unlikely(is_inode_flag_set(dn->inode, FI_NO_ALLOC))) in __allocate_data_block()
1040 err = f2fs_get_node_info(sbi, dn->nid, &ni); in __allocate_data_block()
1044 dn->data_blkaddr = datablock_addr(dn->inode, in __allocate_data_block()
1045 dn->node_page, dn->ofs_in_node); in __allocate_data_block()
1046 if (dn->data_blkaddr != NULL_ADDR) in __allocate_data_block()
1049 if (unlikely((err = inc_valid_block_count(sbi, dn->inode, &count)))) in __allocate_data_block()
1053 set_summary(&sum, dn->nid, dn->ofs_in_node, ni.version); in __allocate_data_block()
1054 old_blkaddr = dn->data_blkaddr; in __allocate_data_block()
1055 f2fs_allocate_data_block(sbi, NULL, old_blkaddr, &dn->data_blkaddr, in __allocate_data_block()
1060 f2fs_update_data_blkaddr(dn, dn->data_blkaddr); in __allocate_data_block()
1157 struct dnode_of_data dn; in f2fs_map_blocks() local
1201 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_map_blocks()
1202 err = f2fs_get_dnode_of_data(&dn, pgofs, mode); in f2fs_map_blocks()
1210 f2fs_get_next_page_offset(&dn, pgofs); in f2fs_map_blocks()
1213 f2fs_get_next_page_offset(&dn, pgofs); in f2fs_map_blocks()
1220 last_ofs_in_node = ofs_in_node = dn.ofs_in_node; in f2fs_map_blocks()
1221 end_offset = ADDRS_PER_PAGE(dn.node_page, inode); in f2fs_map_blocks()
1224 blkaddr = datablock_addr(dn.inode, dn.node_page, dn.ofs_in_node); in f2fs_map_blocks()
1236 err = __allocate_data_block(&dn, map->m_seg_type); in f2fs_map_blocks()
1239 blkaddr = dn.data_blkaddr; in f2fs_map_blocks()
1251 last_ofs_in_node = dn.ofs_in_node; in f2fs_map_blocks()
1256 err = __allocate_data_block(&dn, in f2fs_map_blocks()
1264 blkaddr = dn.data_blkaddr; in f2fs_map_blocks()
1309 dn.ofs_in_node++; in f2fs_map_blocks()
1314 (pgofs == end || dn.ofs_in_node == end_offset)) { in f2fs_map_blocks()
1316 dn.ofs_in_node = ofs_in_node; in f2fs_map_blocks()
1317 err = f2fs_reserve_new_blocks(&dn, prealloc); in f2fs_map_blocks()
1321 map->m_len += dn.ofs_in_node - ofs_in_node; in f2fs_map_blocks()
1322 if (prealloc && dn.ofs_in_node != last_ofs_in_node + 1) { in f2fs_map_blocks()
1326 dn.ofs_in_node = end_offset; in f2fs_map_blocks()
1331 else if (dn.ofs_in_node < end_offset) in f2fs_map_blocks()
1338 f2fs_update_extent_cache_range(&dn, in f2fs_map_blocks()
1344 f2fs_put_dnode(&dn); in f2fs_map_blocks()
1348 f2fs_balance_fs(sbi, dn.node_changed); in f2fs_map_blocks()
1363 f2fs_update_extent_cache_range(&dn, in f2fs_map_blocks()
1370 f2fs_put_dnode(&dn); in f2fs_map_blocks()
1374 f2fs_balance_fs(sbi, dn.node_changed); in f2fs_map_blocks()
1983 struct dnode_of_data dn; in f2fs_do_write_data_page() local
1989 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_do_write_data_page()
2007 err = f2fs_get_dnode_of_data(&dn, page->index, LOOKUP_NODE); in f2fs_do_write_data_page()
2011 fio->old_blkaddr = dn.data_blkaddr; in f2fs_do_write_data_page()
2039 f2fs_put_dnode(&dn); in f2fs_do_write_data_page()
2063 err = f2fs_get_node_info(fio->sbi, dn.nid, &ni); in f2fs_do_write_data_page()
2077 f2fs_outplace_write_data(&dn, fio); in f2fs_do_write_data_page()
2083 f2fs_put_dnode(&dn); in f2fs_do_write_data_page()
2534 struct dnode_of_data dn; in prepare_write_begin() local
2569 set_new_dnode(&dn, inode, ipage, ipage, 0); in prepare_write_begin()
2578 err = f2fs_convert_inline_page(&dn, page); in prepare_write_begin()
2581 if (dn.data_blkaddr == NULL_ADDR) in prepare_write_begin()
2582 err = f2fs_get_block(&dn, index); in prepare_write_begin()
2585 err = f2fs_get_block(&dn, index); in prepare_write_begin()
2588 dn.data_blkaddr = ei.blk + index - ei.fofs; in prepare_write_begin()
2591 err = f2fs_get_dnode_of_data(&dn, index, LOOKUP_NODE); in prepare_write_begin()
2592 if (err || dn.data_blkaddr == NULL_ADDR) { in prepare_write_begin()
2593 f2fs_put_dnode(&dn); in prepare_write_begin()
2604 *blk_addr = dn.data_blkaddr; in prepare_write_begin()
2605 *node_changed = dn.node_changed; in prepare_write_begin()
2607 f2fs_put_dnode(&dn); in prepare_write_begin()