Lines Matching refs:dn
58 struct dnode_of_data dn; in f2fs_vm_page_mkwrite() local
116 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_vm_page_mkwrite()
117 err = f2fs_get_block(&dn, page->index); in f2fs_vm_page_mkwrite()
123 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_vm_page_mkwrite()
124 err = f2fs_get_dnode_of_data(&dn, page->index, LOOKUP_NODE); in f2fs_vm_page_mkwrite()
125 f2fs_put_dnode(&dn); in f2fs_vm_page_mkwrite()
136 f2fs_wait_on_block_writeback(inode, dn.data_blkaddr); in f2fs_vm_page_mkwrite()
429 struct dnode_of_data dn; in f2fs_seek_block() local
455 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_seek_block()
456 err = f2fs_get_dnode_of_data(&dn, pgofs, LOOKUP_NODE); in f2fs_seek_block()
462 pgofs = f2fs_get_next_page_offset(&dn, pgofs); in f2fs_seek_block()
469 end_offset = ADDRS_PER_PAGE(dn.node_page, inode); in f2fs_seek_block()
472 for (; dn.ofs_in_node < end_offset; in f2fs_seek_block()
473 dn.ofs_in_node++, pgofs++, in f2fs_seek_block()
477 blkaddr = f2fs_data_blkaddr(&dn); in f2fs_seek_block()
482 f2fs_put_dnode(&dn); in f2fs_seek_block()
488 f2fs_put_dnode(&dn); in f2fs_seek_block()
492 f2fs_put_dnode(&dn); in f2fs_seek_block()
566 void f2fs_truncate_data_blocks_range(struct dnode_of_data *dn, int count) in f2fs_truncate_data_blocks_range() argument
568 struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode); in f2fs_truncate_data_blocks_range()
570 int nr_free = 0, ofs = dn->ofs_in_node, len = count; in f2fs_truncate_data_blocks_range()
575 int cluster_size = F2FS_I(dn->inode)->i_cluster_size; in f2fs_truncate_data_blocks_range()
576 bool released = !atomic_read(&F2FS_I(dn->inode)->i_compr_blocks); in f2fs_truncate_data_blocks_range()
578 if (IS_INODE(dn->node_page) && f2fs_has_extra_attr(dn->inode)) in f2fs_truncate_data_blocks_range()
579 base = get_extra_isize(dn->inode); in f2fs_truncate_data_blocks_range()
581 raw_node = F2FS_NODE(dn->node_page); in f2fs_truncate_data_blocks_range()
585 for (; count > 0; count--, addr++, dn->ofs_in_node++, cluster_index++) { in f2fs_truncate_data_blocks_range()
588 if (f2fs_compressed_file(dn->inode) && in f2fs_truncate_data_blocks_range()
591 f2fs_i_compr_blocks_update(dn->inode, in f2fs_truncate_data_blocks_range()
600 dn->data_blkaddr = NULL_ADDR; in f2fs_truncate_data_blocks_range()
601 f2fs_set_data_blkaddr(dn); in f2fs_truncate_data_blocks_range()
611 if (dn->ofs_in_node == 0 && IS_INODE(dn->node_page)) in f2fs_truncate_data_blocks_range()
612 clear_inode_flag(dn->inode, FI_FIRST_BLOCK_WRITTEN); in f2fs_truncate_data_blocks_range()
621 f2fs_i_compr_blocks_update(dn->inode, valid_blocks, false); in f2fs_truncate_data_blocks_range()
629 fofs = f2fs_start_bidx_of_node(ofs_of_node(dn->node_page), in f2fs_truncate_data_blocks_range()
630 dn->inode) + ofs; in f2fs_truncate_data_blocks_range()
631 f2fs_update_read_extent_cache_range(dn, fofs, 0, len); in f2fs_truncate_data_blocks_range()
632 f2fs_update_age_extent_cache_range(dn, fofs, nr_free); in f2fs_truncate_data_blocks_range()
633 dec_valid_block_count(sbi, dn->inode, nr_free); in f2fs_truncate_data_blocks_range()
635 dn->ofs_in_node = ofs; in f2fs_truncate_data_blocks_range()
638 trace_f2fs_truncate_data_blocks_range(dn->inode, dn->nid, in f2fs_truncate_data_blocks_range()
639 dn->ofs_in_node, nr_free); in f2fs_truncate_data_blocks_range()
642 void f2fs_truncate_data_blocks(struct dnode_of_data *dn) in f2fs_truncate_data_blocks() argument
644 f2fs_truncate_data_blocks_range(dn, ADDRS_PER_BLOCK(dn->inode)); in f2fs_truncate_data_blocks()
684 struct dnode_of_data dn; in f2fs_do_truncate_blocks() local
713 set_new_dnode(&dn, inode, ipage, NULL, 0); in f2fs_do_truncate_blocks()
714 err = f2fs_get_dnode_of_data(&dn, free_from, LOOKUP_NODE_RA); in f2fs_do_truncate_blocks()
721 count = ADDRS_PER_PAGE(dn.node_page, inode); in f2fs_do_truncate_blocks()
723 count -= dn.ofs_in_node; in f2fs_do_truncate_blocks()
726 if (dn.ofs_in_node || IS_INODE(dn.node_page)) { in f2fs_do_truncate_blocks()
727 f2fs_truncate_data_blocks_range(&dn, count); in f2fs_do_truncate_blocks()
731 f2fs_put_dnode(&dn); in f2fs_do_truncate_blocks()
1045 struct dnode_of_data dn; in f2fs_truncate_hole() local
1048 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_truncate_hole()
1049 err = f2fs_get_dnode_of_data(&dn, pg_start, LOOKUP_NODE); in f2fs_truncate_hole()
1052 pg_start = f2fs_get_next_page_offset(&dn, in f2fs_truncate_hole()
1059 end_offset = ADDRS_PER_PAGE(dn.node_page, inode); in f2fs_truncate_hole()
1060 count = min(end_offset - dn.ofs_in_node, pg_end - pg_start); in f2fs_truncate_hole()
1064 f2fs_truncate_data_blocks_range(&dn, count); in f2fs_truncate_hole()
1065 f2fs_put_dnode(&dn); in f2fs_truncate_hole()
1136 struct dnode_of_data dn; in __read_out_blkaddrs() local
1140 set_new_dnode(&dn, inode, NULL, NULL, 0); in __read_out_blkaddrs()
1141 ret = f2fs_get_dnode_of_data(&dn, off, LOOKUP_NODE_RA); in __read_out_blkaddrs()
1145 if (dn.max_level == 0) in __read_out_blkaddrs()
1148 dn.ofs_in_node, len); in __read_out_blkaddrs()
1154 done = min((pgoff_t)ADDRS_PER_PAGE(dn.node_page, inode) - in __read_out_blkaddrs()
1155 dn.ofs_in_node, len); in __read_out_blkaddrs()
1156 for (i = 0; i < done; i++, blkaddr++, do_replace++, dn.ofs_in_node++) { in __read_out_blkaddrs()
1157 *blkaddr = f2fs_data_blkaddr(&dn); in __read_out_blkaddrs()
1162 f2fs_put_dnode(&dn); in __read_out_blkaddrs()
1169 f2fs_put_dnode(&dn); in __read_out_blkaddrs()
1174 f2fs_update_data_blkaddr(&dn, NULL_ADDR); in __read_out_blkaddrs()
1178 f2fs_put_dnode(&dn); in __read_out_blkaddrs()
1191 struct dnode_of_data dn; in __roll_back_blkaddrs() local
1198 set_new_dnode(&dn, inode, NULL, NULL, 0); in __roll_back_blkaddrs()
1199 ret = f2fs_get_dnode_of_data(&dn, off + i, LOOKUP_NODE_RA); in __roll_back_blkaddrs()
1204 f2fs_update_data_blkaddr(&dn, *blkaddr); in __roll_back_blkaddrs()
1206 f2fs_put_dnode(&dn); in __roll_back_blkaddrs()
1226 struct dnode_of_data dn; in __clone_blkaddrs() local
1231 set_new_dnode(&dn, dst_inode, NULL, NULL, 0); in __clone_blkaddrs()
1232 ret = f2fs_get_dnode_of_data(&dn, dst + i, ALLOC_NODE); in __clone_blkaddrs()
1236 ret = f2fs_get_node_info(sbi, dn.nid, &ni, false); in __clone_blkaddrs()
1238 f2fs_put_dnode(&dn); in __clone_blkaddrs()
1243 ADDRS_PER_PAGE(dn.node_page, dst_inode) - in __clone_blkaddrs()
1244 dn.ofs_in_node, len - i); in __clone_blkaddrs()
1246 dn.data_blkaddr = f2fs_data_blkaddr(&dn); in __clone_blkaddrs()
1247 f2fs_truncate_data_blocks_range(&dn, 1); in __clone_blkaddrs()
1254 f2fs_replace_block(sbi, &dn, dn.data_blkaddr, in __clone_blkaddrs()
1259 dn.ofs_in_node++; in __clone_blkaddrs()
1266 f2fs_put_dnode(&dn); in __clone_blkaddrs()
1410 static int f2fs_do_zero_range(struct dnode_of_data *dn, pgoff_t start, in f2fs_do_zero_range() argument
1413 struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode); in f2fs_do_zero_range()
1415 unsigned int ofs_in_node = dn->ofs_in_node; in f2fs_do_zero_range()
1419 for (; index < end; index++, dn->ofs_in_node++) { in f2fs_do_zero_range()
1420 if (f2fs_data_blkaddr(dn) == NULL_ADDR) in f2fs_do_zero_range()
1424 dn->ofs_in_node = ofs_in_node; in f2fs_do_zero_range()
1425 ret = f2fs_reserve_new_blocks(dn, count); in f2fs_do_zero_range()
1429 dn->ofs_in_node = ofs_in_node; in f2fs_do_zero_range()
1430 for (index = start; index < end; index++, dn->ofs_in_node++) { in f2fs_do_zero_range()
1431 dn->data_blkaddr = f2fs_data_blkaddr(dn); in f2fs_do_zero_range()
1436 if (dn->data_blkaddr == NULL_ADDR) { in f2fs_do_zero_range()
1441 if (dn->data_blkaddr == NEW_ADDR) in f2fs_do_zero_range()
1444 if (!f2fs_is_valid_blkaddr(sbi, dn->data_blkaddr, in f2fs_do_zero_range()
1450 f2fs_invalidate_blocks(sbi, dn->data_blkaddr); in f2fs_do_zero_range()
1451 dn->data_blkaddr = NEW_ADDR; in f2fs_do_zero_range()
1452 f2fs_set_data_blkaddr(dn); in f2fs_do_zero_range()
1455 f2fs_update_read_extent_cache_range(dn, start, 0, index - start); in f2fs_do_zero_range()
1507 struct dnode_of_data dn; in f2fs_zero_range() local
1520 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_zero_range()
1521 ret = f2fs_get_dnode_of_data(&dn, index, ALLOC_NODE); in f2fs_zero_range()
1529 end_offset = ADDRS_PER_PAGE(dn.node_page, inode); in f2fs_zero_range()
1530 end = min(pg_end, end_offset - dn.ofs_in_node + index); in f2fs_zero_range()
1532 ret = f2fs_do_zero_range(&dn, index, end); in f2fs_zero_range()
1533 f2fs_put_dnode(&dn); in f2fs_zero_range()
1539 f2fs_balance_fs(sbi, dn.node_changed); in f2fs_zero_range()
3496 static int release_compress_blocks(struct dnode_of_data *dn, pgoff_t count) in release_compress_blocks() argument
3498 struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode); in release_compress_blocks()
3500 int cluster_size = F2FS_I(dn->inode)->i_cluster_size; in release_compress_blocks()
3505 blkaddr = data_blkaddr(dn->inode, dn->node_page, in release_compress_blocks()
3506 dn->ofs_in_node + i); in release_compress_blocks()
3518 for (i = 0; i < cluster_size; i++, dn->ofs_in_node++) { in release_compress_blocks()
3519 blkaddr = f2fs_data_blkaddr(dn); in release_compress_blocks()
3524 dn->ofs_in_node += cluster_size; in release_compress_blocks()
3534 dn->data_blkaddr = NULL_ADDR; in release_compress_blocks()
3535 f2fs_set_data_blkaddr(dn); in release_compress_blocks()
3538 f2fs_i_compr_blocks_update(dn->inode, compr_blocks, false); in release_compress_blocks()
3539 dec_valid_block_count(sbi, dn->inode, in release_compress_blocks()
3605 struct dnode_of_data dn; in f2fs_release_compress_blocks() local
3608 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_release_compress_blocks()
3609 ret = f2fs_get_dnode_of_data(&dn, page_idx, LOOKUP_NODE); in f2fs_release_compress_blocks()
3612 page_idx = f2fs_get_next_page_offset(&dn, in f2fs_release_compress_blocks()
3620 end_offset = ADDRS_PER_PAGE(dn.node_page, inode); in f2fs_release_compress_blocks()
3621 count = min(end_offset - dn.ofs_in_node, last_idx - page_idx); in f2fs_release_compress_blocks()
3624 ret = release_compress_blocks(&dn, count); in f2fs_release_compress_blocks()
3626 f2fs_put_dnode(&dn); in f2fs_release_compress_blocks()
3658 static int reserve_compress_blocks(struct dnode_of_data *dn, pgoff_t count) in reserve_compress_blocks() argument
3660 struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode); in reserve_compress_blocks()
3662 int cluster_size = F2FS_I(dn->inode)->i_cluster_size; in reserve_compress_blocks()
3667 blkaddr = data_blkaddr(dn->inode, dn->node_page, in reserve_compress_blocks()
3668 dn->ofs_in_node + i); in reserve_compress_blocks()
3682 for (i = 0; i < cluster_size; i++, dn->ofs_in_node++) { in reserve_compress_blocks()
3683 blkaddr = f2fs_data_blkaddr(dn); in reserve_compress_blocks()
3688 dn->ofs_in_node += cluster_size; in reserve_compress_blocks()
3697 dn->data_blkaddr = NEW_ADDR; in reserve_compress_blocks()
3698 f2fs_set_data_blkaddr(dn); in reserve_compress_blocks()
3702 ret = inc_valid_block_count(sbi, dn->inode, &reserved); in reserve_compress_blocks()
3709 f2fs_i_compr_blocks_update(dn->inode, compr_blocks, true); in reserve_compress_blocks()
3758 struct dnode_of_data dn; in f2fs_reserve_compress_blocks() local
3761 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_reserve_compress_blocks()
3762 ret = f2fs_get_dnode_of_data(&dn, page_idx, LOOKUP_NODE); in f2fs_reserve_compress_blocks()
3765 page_idx = f2fs_get_next_page_offset(&dn, in f2fs_reserve_compress_blocks()
3773 end_offset = ADDRS_PER_PAGE(dn.node_page, inode); in f2fs_reserve_compress_blocks()
3774 count = min(end_offset - dn.ofs_in_node, last_idx - page_idx); in f2fs_reserve_compress_blocks()
3777 ret = reserve_compress_blocks(&dn, count); in f2fs_reserve_compress_blocks()
3779 f2fs_put_dnode(&dn); in f2fs_reserve_compress_blocks()
3919 struct dnode_of_data dn; in f2fs_sec_trim_file() local
3923 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_sec_trim_file()
3924 ret = f2fs_get_dnode_of_data(&dn, index, LOOKUP_NODE); in f2fs_sec_trim_file()
3927 index = f2fs_get_next_page_offset(&dn, index); in f2fs_sec_trim_file()
3933 end_offset = ADDRS_PER_PAGE(dn.node_page, inode); in f2fs_sec_trim_file()
3934 count = min(end_offset - dn.ofs_in_node, pg_end - index); in f2fs_sec_trim_file()
3935 for (i = 0; i < count; i++, index++, dn.ofs_in_node++) { in f2fs_sec_trim_file()
3937 block_t blkaddr = f2fs_data_blkaddr(&dn); in f2fs_sec_trim_file()
3945 f2fs_put_dnode(&dn); in f2fs_sec_trim_file()
3966 f2fs_put_dnode(&dn); in f2fs_sec_trim_file()
3982 f2fs_put_dnode(&dn); in f2fs_sec_trim_file()