Lines Matching refs:dn
214 void set_data_blkaddr(struct dnode_of_data *dn) in set_data_blkaddr() argument
218 struct page *node_page = dn->node_page; in set_data_blkaddr()
219 unsigned int ofs_in_node = dn->ofs_in_node; in set_data_blkaddr()
227 addr_array[ofs_in_node] = cpu_to_le32(dn->data_blkaddr); in set_data_blkaddr()
231 int reserve_new_block(struct dnode_of_data *dn) in reserve_new_block() argument
233 struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode); in reserve_new_block()
235 if (unlikely(is_inode_flag_set(F2FS_I(dn->inode), FI_NO_ALLOC))) in reserve_new_block()
237 if (unlikely(!inc_valid_block_count(sbi, dn->inode, 1))) in reserve_new_block()
240 trace_f2fs_reserve_new_block(dn->inode, dn->nid, dn->ofs_in_node); in reserve_new_block()
242 dn->data_blkaddr = NEW_ADDR; in reserve_new_block()
243 set_data_blkaddr(dn); in reserve_new_block()
244 mark_inode_dirty(dn->inode); in reserve_new_block()
245 sync_inode_page(dn); in reserve_new_block()
249 int f2fs_reserve_block(struct dnode_of_data *dn, pgoff_t index) in f2fs_reserve_block() argument
251 bool need_put = dn->inode_page ? false : true; in f2fs_reserve_block()
254 err = get_dnode_of_data(dn, index, ALLOC_NODE); in f2fs_reserve_block()
258 if (dn->data_blkaddr == NULL_ADDR) in f2fs_reserve_block()
259 err = reserve_new_block(dn); in f2fs_reserve_block()
261 f2fs_put_dnode(dn); in f2fs_reserve_block()
265 int f2fs_get_block(struct dnode_of_data *dn, pgoff_t index) in f2fs_get_block() argument
268 struct inode *inode = dn->inode; in f2fs_get_block()
271 dn->data_blkaddr = ei.blk + index - ei.fofs; in f2fs_get_block()
275 return f2fs_reserve_block(dn, index); in f2fs_get_block()
282 struct dnode_of_data dn; in get_read_data_page() local
301 dn.data_blkaddr = ei.blk + index - ei.fofs; in get_read_data_page()
305 set_new_dnode(&dn, inode, NULL, NULL, 0); in get_read_data_page()
306 err = get_dnode_of_data(&dn, index, LOOKUP_NODE); in get_read_data_page()
309 f2fs_put_dnode(&dn); in get_read_data_page()
311 if (unlikely(dn.data_blkaddr == NULL_ADDR)) { in get_read_data_page()
327 if (dn.data_blkaddr == NEW_ADDR) { in get_read_data_page()
334 fio.blk_addr = dn.data_blkaddr; in get_read_data_page()
413 struct dnode_of_data dn; in get_new_data_page() local
426 set_new_dnode(&dn, inode, ipage, NULL, 0); in get_new_data_page()
427 err = f2fs_reserve_block(&dn, index); in get_new_data_page()
433 f2fs_put_dnode(&dn); in get_new_data_page()
438 if (dn.data_blkaddr == NEW_ADDR) { in get_new_data_page()
461 static int __allocate_data_block(struct dnode_of_data *dn) in __allocate_data_block() argument
463 struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode); in __allocate_data_block()
464 struct f2fs_inode_info *fi = F2FS_I(dn->inode); in __allocate_data_block()
470 if (unlikely(is_inode_flag_set(F2FS_I(dn->inode), FI_NO_ALLOC))) in __allocate_data_block()
473 dn->data_blkaddr = datablock_addr(dn->node_page, dn->ofs_in_node); in __allocate_data_block()
474 if (dn->data_blkaddr == NEW_ADDR) in __allocate_data_block()
477 if (unlikely(!inc_valid_block_count(sbi, dn->inode, 1))) in __allocate_data_block()
481 get_node_info(sbi, dn->nid, &ni); in __allocate_data_block()
482 set_summary(&sum, dn->nid, dn->ofs_in_node, ni.version); in __allocate_data_block()
484 if (dn->ofs_in_node == 0 && dn->inode_page == dn->node_page) in __allocate_data_block()
487 allocate_data_block(sbi, NULL, dn->data_blkaddr, &dn->data_blkaddr, in __allocate_data_block()
489 set_data_blkaddr(dn); in __allocate_data_block()
492 fofs = start_bidx_of_node(ofs_of_node(dn->node_page), fi) + in __allocate_data_block()
493 dn->ofs_in_node; in __allocate_data_block()
494 if (i_size_read(dn->inode) < ((loff_t)(fofs + 1) << PAGE_CACHE_SHIFT)) in __allocate_data_block()
495 i_size_write(dn->inode, in __allocate_data_block()
499 f2fs_drop_largest_extent(dn->inode, fofs); in __allocate_data_block()
508 struct dnode_of_data dn; in __allocate_data_blocks() local
519 set_new_dnode(&dn, inode, NULL, NULL, 0); in __allocate_data_blocks()
520 if (get_dnode_of_data(&dn, start, ALLOC_NODE)) in __allocate_data_blocks()
524 end_offset = ADDRS_PER_PAGE(dn.node_page, F2FS_I(inode)); in __allocate_data_blocks()
526 while (dn.ofs_in_node < end_offset && len) { in __allocate_data_blocks()
532 blkaddr = datablock_addr(dn.node_page, dn.ofs_in_node); in __allocate_data_blocks()
534 if (__allocate_data_block(&dn)) in __allocate_data_blocks()
540 dn.ofs_in_node++; in __allocate_data_blocks()
544 sync_inode_page(&dn); in __allocate_data_blocks()
546 f2fs_put_dnode(&dn); in __allocate_data_blocks()
553 sync_inode_page(&dn); in __allocate_data_blocks()
554 f2fs_put_dnode(&dn); in __allocate_data_blocks()
573 struct dnode_of_data dn; in f2fs_map_blocks() local
598 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_map_blocks()
599 err = get_dnode_of_data(&dn, pgofs, mode); in f2fs_map_blocks()
606 if (dn.data_blkaddr == NEW_ADDR || dn.data_blkaddr == NULL_ADDR) { in f2fs_map_blocks()
612 err = __allocate_data_block(&dn); in f2fs_map_blocks()
619 dn.data_blkaddr != NEW_ADDR) { in f2fs_map_blocks()
629 if (dn.data_blkaddr == NEW_ADDR) in f2fs_map_blocks()
635 map->m_pblk = dn.data_blkaddr; in f2fs_map_blocks()
638 end_offset = ADDRS_PER_PAGE(dn.node_page, F2FS_I(inode)); in f2fs_map_blocks()
639 dn.ofs_in_node++; in f2fs_map_blocks()
643 if (dn.ofs_in_node >= end_offset) { in f2fs_map_blocks()
645 sync_inode_page(&dn); in f2fs_map_blocks()
647 f2fs_put_dnode(&dn); in f2fs_map_blocks()
649 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_map_blocks()
650 err = get_dnode_of_data(&dn, pgofs, mode); in f2fs_map_blocks()
657 end_offset = ADDRS_PER_PAGE(dn.node_page, F2FS_I(inode)); in f2fs_map_blocks()
661 block_t blkaddr = datablock_addr(dn.node_page, dn.ofs_in_node); in f2fs_map_blocks()
669 err = __allocate_data_block(&dn); in f2fs_map_blocks()
674 blkaddr = dn.data_blkaddr; in f2fs_map_blocks()
692 dn.ofs_in_node++; in f2fs_map_blocks()
700 sync_inode_page(&dn); in f2fs_map_blocks()
702 f2fs_put_dnode(&dn); in f2fs_map_blocks()
1049 struct dnode_of_data dn; in do_write_data_page() local
1052 set_new_dnode(&dn, inode, NULL, NULL, 0); in do_write_data_page()
1053 err = get_dnode_of_data(&dn, page->index, LOOKUP_NODE); in do_write_data_page()
1057 fio->blk_addr = dn.data_blkaddr; in do_write_data_page()
1091 write_data_page(&dn, fio); in do_write_data_page()
1092 set_data_blkaddr(&dn); in do_write_data_page()
1093 f2fs_update_extent_cache(&dn); in do_write_data_page()
1100 f2fs_put_dnode(&dn); in do_write_data_page()
1401 struct dnode_of_data dn; in f2fs_write_begin() local
1436 set_new_dnode(&dn, inode, ipage, ipage, 0); in f2fs_write_begin()
1442 sync_inode_page(&dn); in f2fs_write_begin()
1445 err = f2fs_convert_inline_page(&dn, page); in f2fs_write_begin()
1450 err = f2fs_get_block(&dn, index); in f2fs_write_begin()
1454 f2fs_put_dnode(&dn); in f2fs_write_begin()
1461 f2fs_wait_on_encrypted_page_writeback(sbi, dn.data_blkaddr); in f2fs_write_begin()
1477 if (dn.data_blkaddr == NEW_ADDR) { in f2fs_write_begin()
1484 .blk_addr = dn.data_blkaddr, in f2fs_write_begin()
1516 f2fs_put_dnode(&dn); in f2fs_write_begin()