Lines Matching refs:dn
70 struct dnode_of_data dn; in f2fs_vm_page_mkwrite() local
133 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_vm_page_mkwrite()
136 err = f2fs_get_block_locked(&dn, folio->index); in f2fs_vm_page_mkwrite()
138 err = f2fs_get_dnode_of_data(&dn, folio->index, LOOKUP_NODE); in f2fs_vm_page_mkwrite()
139 f2fs_put_dnode(&dn); in f2fs_vm_page_mkwrite()
141 !__is_valid_data_blkaddr(dn.data_blkaddr)) in f2fs_vm_page_mkwrite()
153 f2fs_wait_on_block_writeback(inode, dn.data_blkaddr); in f2fs_vm_page_mkwrite()
415 struct dnode_of_data *dn, pgoff_t index, int whence) in __found_offset() argument
417 block_t blkaddr = f2fs_data_blkaddr(dn); in __found_offset()
422 block_t first_blkaddr = data_blkaddr(dn->inode, dn->node_folio, in __found_offset()
423 ALIGN_DOWN(dn->ofs_in_node, F2FS_I(inode)->i_cluster_size)); in __found_offset()
452 struct dnode_of_data dn; in f2fs_seek_block() local
478 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_seek_block()
479 err = f2fs_get_dnode_of_data(&dn, pgofs, LOOKUP_NODE); in f2fs_seek_block()
485 pgofs = f2fs_get_next_page_offset(&dn, pgofs); in f2fs_seek_block()
492 end_offset = ADDRS_PER_PAGE(dn.node_folio, inode); in f2fs_seek_block()
495 for (; dn.ofs_in_node < end_offset; in f2fs_seek_block()
496 dn.ofs_in_node++, pgofs++, in f2fs_seek_block()
500 blkaddr = f2fs_data_blkaddr(&dn); in f2fs_seek_block()
505 f2fs_put_dnode(&dn); in f2fs_seek_block()
509 if (__found_offset(file->f_mapping, &dn, in f2fs_seek_block()
511 f2fs_put_dnode(&dn); in f2fs_seek_block()
515 f2fs_put_dnode(&dn); in f2fs_seek_block()
638 void f2fs_truncate_data_blocks_range(struct dnode_of_data *dn, int count) in f2fs_truncate_data_blocks_range() argument
640 struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode); in f2fs_truncate_data_blocks_range()
641 int nr_free = 0, ofs = dn->ofs_in_node, len = count; in f2fs_truncate_data_blocks_range()
645 int cluster_size = F2FS_I(dn->inode)->i_cluster_size; in f2fs_truncate_data_blocks_range()
646 bool released = !atomic_read(&F2FS_I(dn->inode)->i_compr_blocks); in f2fs_truncate_data_blocks_range()
650 addr = get_dnode_addr(dn->inode, dn->node_folio) + ofs; in f2fs_truncate_data_blocks_range()
654 for (; count > 0; count--, addr++, dn->ofs_in_node++, cluster_index++) { in f2fs_truncate_data_blocks_range()
657 if (f2fs_compressed_file(dn->inode) && in f2fs_truncate_data_blocks_range()
660 f2fs_i_compr_blocks_update(dn->inode, in f2fs_truncate_data_blocks_range()
669 f2fs_set_data_blkaddr(dn, NULL_ADDR); in f2fs_truncate_data_blocks_range()
706 f2fs_i_compr_blocks_update(dn->inode, valid_blocks, false); in f2fs_truncate_data_blocks_range()
714 fofs = f2fs_start_bidx_of_node(ofs_of_node(dn->node_folio), in f2fs_truncate_data_blocks_range()
715 dn->inode) + ofs; in f2fs_truncate_data_blocks_range()
716 f2fs_update_read_extent_cache_range(dn, fofs, 0, len); in f2fs_truncate_data_blocks_range()
717 f2fs_update_age_extent_cache_range(dn, fofs, len); in f2fs_truncate_data_blocks_range()
718 dec_valid_block_count(sbi, dn->inode, nr_free); in f2fs_truncate_data_blocks_range()
720 dn->ofs_in_node = ofs; in f2fs_truncate_data_blocks_range()
723 trace_f2fs_truncate_data_blocks_range(dn->inode, dn->nid, in f2fs_truncate_data_blocks_range()
724 dn->ofs_in_node, nr_free); in f2fs_truncate_data_blocks_range()
766 struct dnode_of_data dn; in f2fs_do_truncate_blocks() local
813 set_new_dnode(&dn, inode, ifolio, NULL, 0); in f2fs_do_truncate_blocks()
814 err = f2fs_get_dnode_of_data(&dn, free_from, LOOKUP_NODE_RA); in f2fs_do_truncate_blocks()
821 count = ADDRS_PER_PAGE(dn.node_folio, inode); in f2fs_do_truncate_blocks()
823 count -= dn.ofs_in_node; in f2fs_do_truncate_blocks()
826 if (dn.ofs_in_node || IS_INODE(dn.node_folio)) { in f2fs_do_truncate_blocks()
827 f2fs_truncate_data_blocks_range(&dn, count); in f2fs_do_truncate_blocks()
831 f2fs_put_dnode(&dn); in f2fs_do_truncate_blocks()
1226 struct dnode_of_data dn; in f2fs_truncate_hole() local
1229 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_truncate_hole()
1230 err = f2fs_get_dnode_of_data(&dn, pg_start, LOOKUP_NODE); in f2fs_truncate_hole()
1233 pg_start = f2fs_get_next_page_offset(&dn, in f2fs_truncate_hole()
1240 end_offset = ADDRS_PER_PAGE(dn.node_folio, inode); in f2fs_truncate_hole()
1241 count = min(end_offset - dn.ofs_in_node, pg_end - pg_start); in f2fs_truncate_hole()
1245 f2fs_truncate_data_blocks_range(&dn, count); in f2fs_truncate_hole()
1246 f2fs_put_dnode(&dn); in f2fs_truncate_hole()
1321 struct dnode_of_data dn; in __read_out_blkaddrs() local
1325 set_new_dnode(&dn, inode, NULL, NULL, 0); in __read_out_blkaddrs()
1326 ret = f2fs_get_dnode_of_data(&dn, off, LOOKUP_NODE_RA); in __read_out_blkaddrs()
1330 if (dn.max_level == 0) in __read_out_blkaddrs()
1333 dn.ofs_in_node, len); in __read_out_blkaddrs()
1339 done = min((pgoff_t)ADDRS_PER_PAGE(dn.node_folio, inode) - in __read_out_blkaddrs()
1340 dn.ofs_in_node, len); in __read_out_blkaddrs()
1341 for (i = 0; i < done; i++, blkaddr++, do_replace++, dn.ofs_in_node++) { in __read_out_blkaddrs()
1342 *blkaddr = f2fs_data_blkaddr(&dn); in __read_out_blkaddrs()
1347 f2fs_put_dnode(&dn); in __read_out_blkaddrs()
1354 f2fs_put_dnode(&dn); in __read_out_blkaddrs()
1359 f2fs_update_data_blkaddr(&dn, NULL_ADDR); in __read_out_blkaddrs()
1363 f2fs_put_dnode(&dn); in __read_out_blkaddrs()
1376 struct dnode_of_data dn; in __roll_back_blkaddrs() local
1383 set_new_dnode(&dn, inode, NULL, NULL, 0); in __roll_back_blkaddrs()
1384 ret = f2fs_get_dnode_of_data(&dn, off + i, LOOKUP_NODE_RA); in __roll_back_blkaddrs()
1389 f2fs_update_data_blkaddr(&dn, *blkaddr); in __roll_back_blkaddrs()
1391 f2fs_put_dnode(&dn); in __roll_back_blkaddrs()
1411 struct dnode_of_data dn; in __clone_blkaddrs() local
1416 set_new_dnode(&dn, dst_inode, NULL, NULL, 0); in __clone_blkaddrs()
1417 ret = f2fs_get_dnode_of_data(&dn, dst + i, ALLOC_NODE); in __clone_blkaddrs()
1421 ret = f2fs_get_node_info(sbi, dn.nid, &ni, false); in __clone_blkaddrs()
1423 f2fs_put_dnode(&dn); in __clone_blkaddrs()
1428 ADDRS_PER_PAGE(dn.node_folio, dst_inode) - in __clone_blkaddrs()
1429 dn.ofs_in_node, len - i); in __clone_blkaddrs()
1431 dn.data_blkaddr = f2fs_data_blkaddr(&dn); in __clone_blkaddrs()
1432 f2fs_truncate_data_blocks_range(&dn, 1); in __clone_blkaddrs()
1439 f2fs_replace_block(sbi, &dn, dn.data_blkaddr, in __clone_blkaddrs()
1444 dn.ofs_in_node++; in __clone_blkaddrs()
1451 f2fs_put_dnode(&dn); in __clone_blkaddrs()
1601 static int f2fs_do_zero_range(struct dnode_of_data *dn, pgoff_t start, in f2fs_do_zero_range() argument
1604 struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode); in f2fs_do_zero_range()
1606 unsigned int ofs_in_node = dn->ofs_in_node; in f2fs_do_zero_range()
1610 for (; index < end; index++, dn->ofs_in_node++) { in f2fs_do_zero_range()
1611 if (f2fs_data_blkaddr(dn) == NULL_ADDR) in f2fs_do_zero_range()
1615 dn->ofs_in_node = ofs_in_node; in f2fs_do_zero_range()
1616 ret = f2fs_reserve_new_blocks(dn, count); in f2fs_do_zero_range()
1620 dn->ofs_in_node = ofs_in_node; in f2fs_do_zero_range()
1621 for (index = start; index < end; index++, dn->ofs_in_node++) { in f2fs_do_zero_range()
1622 dn->data_blkaddr = f2fs_data_blkaddr(dn); in f2fs_do_zero_range()
1627 if (dn->data_blkaddr == NULL_ADDR) { in f2fs_do_zero_range()
1632 if (dn->data_blkaddr == NEW_ADDR) in f2fs_do_zero_range()
1635 if (!f2fs_is_valid_blkaddr(sbi, dn->data_blkaddr, in f2fs_do_zero_range()
1641 f2fs_invalidate_blocks(sbi, dn->data_blkaddr, 1); in f2fs_do_zero_range()
1642 f2fs_set_data_blkaddr(dn, NEW_ADDR); in f2fs_do_zero_range()
1645 f2fs_update_read_extent_cache_range(dn, start, 0, index - start); in f2fs_do_zero_range()
1646 f2fs_update_age_extent_cache_range(dn, start, index - start); in f2fs_do_zero_range()
1702 struct dnode_of_data dn; in f2fs_zero_range() local
1715 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_zero_range()
1716 ret = f2fs_get_dnode_of_data(&dn, index, ALLOC_NODE); in f2fs_zero_range()
1724 end_offset = ADDRS_PER_PAGE(dn.node_folio, inode); in f2fs_zero_range()
1725 end = min(pg_end, end_offset - dn.ofs_in_node + index); in f2fs_zero_range()
1727 ret = f2fs_do_zero_range(&dn, index, end); in f2fs_zero_range()
1728 f2fs_put_dnode(&dn); in f2fs_zero_range()
1734 f2fs_balance_fs(sbi, dn.node_changed); in f2fs_zero_range()
3768 static int release_compress_blocks(struct dnode_of_data *dn, pgoff_t count) in release_compress_blocks() argument
3770 struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode); in release_compress_blocks()
3772 int cluster_size = F2FS_I(dn->inode)->i_cluster_size; in release_compress_blocks()
3777 blkaddr = data_blkaddr(dn->inode, dn->node_folio, in release_compress_blocks()
3778 dn->ofs_in_node + i); in release_compress_blocks()
3790 for (i = 0; i < cluster_size; i++, dn->ofs_in_node++) { in release_compress_blocks()
3791 blkaddr = f2fs_data_blkaddr(dn); in release_compress_blocks()
3796 dn->ofs_in_node += cluster_size; in release_compress_blocks()
3806 f2fs_set_data_blkaddr(dn, NULL_ADDR); in release_compress_blocks()
3809 f2fs_i_compr_blocks_update(dn->inode, compr_blocks, false); in release_compress_blocks()
3810 dec_valid_block_count(sbi, dn->inode, in release_compress_blocks()
3877 struct dnode_of_data dn; in f2fs_release_compress_blocks() local
3882 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_release_compress_blocks()
3883 ret = f2fs_get_dnode_of_data(&dn, page_idx, LOOKUP_NODE); in f2fs_release_compress_blocks()
3887 page_idx = f2fs_get_next_page_offset(&dn, in f2fs_release_compress_blocks()
3895 end_offset = ADDRS_PER_PAGE(dn.node_folio, inode); in f2fs_release_compress_blocks()
3896 count = min(end_offset - dn.ofs_in_node, last_idx - page_idx); in f2fs_release_compress_blocks()
3899 ret = release_compress_blocks(&dn, count); in f2fs_release_compress_blocks()
3901 f2fs_put_dnode(&dn); in f2fs_release_compress_blocks()
3937 static int reserve_compress_blocks(struct dnode_of_data *dn, pgoff_t count, in reserve_compress_blocks() argument
3940 struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode); in reserve_compress_blocks()
3941 int cluster_size = F2FS_I(dn->inode)->i_cluster_size; in reserve_compress_blocks()
3946 blkaddr = data_blkaddr(dn->inode, dn->node_folio, in reserve_compress_blocks()
3947 dn->ofs_in_node + i); in reserve_compress_blocks()
3963 blkaddr = data_blkaddr(dn->inode, dn->node_folio, in reserve_compress_blocks()
3964 dn->ofs_in_node + i); in reserve_compress_blocks()
3968 dn->ofs_in_node += cluster_size; in reserve_compress_blocks()
3993 dn->ofs_in_node += cluster_size; in reserve_compress_blocks()
3997 ret = inc_valid_block_count(sbi, dn->inode, in reserve_compress_blocks()
4002 for (i = 0; i < cluster_size; i++, dn->ofs_in_node++) { in reserve_compress_blocks()
4003 if (f2fs_data_blkaddr(dn) == NULL_ADDR) in reserve_compress_blocks()
4004 f2fs_set_data_blkaddr(dn, NEW_ADDR); in reserve_compress_blocks()
4007 f2fs_i_compr_blocks_update(dn->inode, compr_blocks, true); in reserve_compress_blocks()
4055 struct dnode_of_data dn; in f2fs_reserve_compress_blocks() local
4060 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_reserve_compress_blocks()
4061 ret = f2fs_get_dnode_of_data(&dn, page_idx, LOOKUP_NODE); in f2fs_reserve_compress_blocks()
4065 page_idx = f2fs_get_next_page_offset(&dn, in f2fs_reserve_compress_blocks()
4073 end_offset = ADDRS_PER_PAGE(dn.node_folio, inode); in f2fs_reserve_compress_blocks()
4074 count = min(end_offset - dn.ofs_in_node, last_idx - page_idx); in f2fs_reserve_compress_blocks()
4077 ret = reserve_compress_blocks(&dn, count, &reserved_blocks); in f2fs_reserve_compress_blocks()
4079 f2fs_put_dnode(&dn); in f2fs_reserve_compress_blocks()
4223 struct dnode_of_data dn; in f2fs_sec_trim_file() local
4227 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_sec_trim_file()
4228 ret = f2fs_get_dnode_of_data(&dn, index, LOOKUP_NODE); in f2fs_sec_trim_file()
4231 index = f2fs_get_next_page_offset(&dn, index); in f2fs_sec_trim_file()
4237 end_offset = ADDRS_PER_PAGE(dn.node_folio, inode); in f2fs_sec_trim_file()
4238 count = min(end_offset - dn.ofs_in_node, pg_end - index); in f2fs_sec_trim_file()
4239 for (i = 0; i < count; i++, index++, dn.ofs_in_node++) { in f2fs_sec_trim_file()
4241 block_t blkaddr = f2fs_data_blkaddr(&dn); in f2fs_sec_trim_file()
4249 f2fs_put_dnode(&dn); in f2fs_sec_trim_file()
4270 f2fs_put_dnode(&dn); in f2fs_sec_trim_file()
4286 f2fs_put_dnode(&dn); in f2fs_sec_trim_file()